{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/plots/treemap/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { View } from '@antv/g2';\nimport { get, isArray } from '@antv/util';\nimport { HIERARCHY_DATA_TRANSFORM_PARAMS } from '../../interactions/actions/drill-down';\nimport { Interaction } from '../../types/interaction';\nimport { treemap } from '../../utils/hierarchy/treemap';\nimport { TreemapOptions } from './types';\n\nexport function findInteraction(\n interactions: TreemapOptions['interactions'],\n interactionType: string\n): undefined | Interaction {\n if (!isArray(interactions)) return undefined;\n return interactions.find((i) => i.type === interactionType);\n}\n\nexport function enableInteraction(interactions: TreemapOptions['interactions'], interactionType: string): boolean {\n const interaction = findInteraction(interactions, interactionType);\n return interaction && interaction.enable !== false;\n}\n\n/**\n * 是否允许下钻交互\n * @param interactions\n * @param interactionType\n * @returns\n */\nexport function enableDrillInteraction(options: TreemapOptions): boolean {\n const { interactions, drilldown } = options;\n // 兼容旧版本, treemap-drill-down\n return get(drilldown, 'enabled') || enableInteraction(interactions, 'treemap-drill-down');\n}\n\nexport function resetDrillDown(chart: View) {\n const drillDownInteraction = chart.interactions['drill-down'];\n\n if (!drillDownInteraction) return;\n\n // @ts-ignore\n const drillDownAction = drillDownInteraction.context.actions.find((i) => i.name === 'drill-down-action');\n\n drillDownAction.reset();\n}\n\ninterface TransformDataOptions {\n data: TreemapOptions['data'];\n colorField: TreemapOptions['colorField'];\n enableDrillDown: boolean;\n hierarchyConfig: TreemapOptions['hierarchyConfig'];\n}\n\nexport function transformData(options: TransformDataOptions) {\n const { data, colorField, enableDrillDown, hierarchyConfig } = options;\n\n const nodes = treemap(data, {\n ...hierarchyConfig,\n // @ts-ignore\n type: 'hierarchy.treemap',\n field: 'value',\n as: ['x', 'y'],\n });\n\n const result = [];\n nodes.forEach((node) => {\n if (node.depth === 0) {\n return null;\n }\n\n // 开启下钻,仅加载 depth === 1 的数据\n if (enableDrillDown && node.depth !== 1) {\n return null;\n }\n\n // 不开启下钻,加载所有叶子节点\n if (!enableDrillDown && node.children) {\n return null;\n }\n\n // path 信息仅挑选必要祖先元素属性,因为在有些属性是不必要(x, y), 或是不准确的(下钻时的 depth),不对外透出\n const curPath = node.ancestors().map((n) => ({\n data: n.data,\n height: n.height,\n value: n.value,\n }));\n // 在下钻树图中,每次绘制的是当前层级信息,将父元素的层级信息(data.path) 做一层拼接。\n const path = enableDrillDown && isArray(data.path) ? curPath.concat(data.path.slice(1)) : curPath;\n\n const nodeInfo = Object.assign({}, node.data, {\n x: node.x,\n y: node.y,\n depth: node.depth,\n value: node.value,\n path,\n ...node,\n });\n if (!node.data[colorField] && node.parent) {\n const ancestorNode = node.ancestors().find((n) => n.data[colorField]);\n nodeInfo[colorField] = ancestorNode?.data[colorField];\n } else {\n nodeInfo[colorField] = node.data[colorField];\n }\n\n nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] = { hierarchyConfig, colorField, enableDrillDown };\n result.push(nodeInfo);\n });\n return result;\n}\n"]}