{"version":3,"file":"drill-down.js","sourceRoot":"","sources":["../../../src/interactions/actions/drill-down.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action, IGroup, Util } from '@antv/g2';\nimport { get, isNil, last, size } from '@antv/util';\nimport { Data } from '../../types';\nimport { DrillDownCfg } from '../../types/drill-down';\nimport { deepAssign } from '../../utils/deep-assign';\n\n// 面包屑文字和分割符'/'之间的距离\nconst PADDING = 4;\n// 面包屑位置距离树图的距离\nconst PADDING_LEFT = 0;\n// 面包屑位置距离树图的顶部距离\nexport const PADDING_TOP = 5;\n\n/** Group name of breadCrumb: 面包屑 */\nexport const BREAD_CRUMB_NAME = 'drilldown-bread-crumb';\n\n// 面包屑默认配置\nexport const DEFAULT_BREAD_CRUMB_CONFIG: DrillDownCfg['breadCrumb'] = {\n /** 位置,默认:左上角 */\n position: 'top-left',\n dividerText: '/',\n textStyle: {\n fontSize: 12,\n fill: 'rgba(0, 0, 0, 0.65)',\n cursor: 'pointer',\n },\n activeTextStyle: {\n fill: '#87B5FF',\n },\n};\n\n/**\n * hierarchy 数据转换的参数\n */\nexport const HIERARCHY_DATA_TRANSFORM_PARAMS = 'hierarchy-data-transform-params';\n\n/**\n * Hierarchy plot 节点的数据\n */\nexport type HierarchyNode = {\n /** 节点的原始数据,树型结构(todo 是否更正 key 为 origin) */\n data: { name: string; value?: any; children: { name: string; value?: any }[] };\n /** 在构建节点数据时候,增加的扩展配置, 用于存储 transformData 的入参配置 */\n [HIERARCHY_DATA_TRANSFORM_PARAMS]: object;\n /** 当前的层级结构,每一次下钻都会更新. 不是 unique */\n depth: number;\n /** 当前所处高度,depth + height = 总的层级 */\n height: number;\n parent: N;\n children: N[];\n};\n\ntype HistoryCache = {\n name: string;\n id: string;\n children: Data;\n}[];\n\n/**\n * @description 下钻交互的 action\n * @author liuzhenying\n *\n * 适用于:hierarchy plot\n */\nexport class DrillDownAction extends Action {\n /** Action name */\n public name = 'drill-down';\n\n // 存储历史下钻数据\n protected historyCache: HistoryCache = [];\n // 面包屑 group\n private breadCrumbGroup: IGroup = null;\n // 面包屑基础配置\n private breadCrumbCfg: DrillDownCfg['breadCrumb'] = DEFAULT_BREAD_CRUMB_CONFIG;\n\n /**\n * 点击事件, 下钻数据,并绘制面包屑\n */\n public click() {\n const data = get(this.context, ['event', 'data', 'data']);\n if (!data) return false;\n\n this.drill(data);\n this.drawBreadCrumb();\n }\n\n /**\n * 重置位置,初始化及触发 chart afterchangesize 回调时使用\n */\n public resetPosition() {\n // 当在第一层级未绘制面包屑,此时 changedata 触发 resetPosition 函数,需判断 this.breadCrumbGroup 是否存在\n if (!this.breadCrumbGroup) return;\n const coordinate = this.context.view.getCoordinate();\n const breadCrumbGroup = this.breadCrumbGroup;\n const bbox = breadCrumbGroup.getBBox();\n\n const { position } = this.getButtonCfg();\n\n // @todo 后续抽取一个函数来处理,以及增加 margin 或者 padding 的设置\n // 非 polar 的,需要使用 coordinate,除却图表组件\n let point = { x: coordinate.start.x, y: coordinate.end.y - (bbox.height + PADDING_TOP * 2) };\n if (coordinate.isPolar) {\n // 默认,左上角直接出发\n point = { x: 0, y: 0 };\n }\n if (position === 'bottom-left') {\n // 涉及到坐标反转的问题\n point = { x: coordinate.start.x, y: coordinate.start.y };\n }\n /** PADDING_LEFT, PADDING_TOP 与画布边缘的距离 */\n const matrix = Util.transform(null, [['t', point.x + PADDING_LEFT, point.y + bbox.height + PADDING_TOP]]);\n breadCrumbGroup.setMatrix(matrix);\n }\n\n /**\n * 返回上一层\n */\n public back(): void {\n if (size(this.historyCache)) {\n this.backTo(this.historyCache.slice(0, -1));\n }\n }\n\n /**\n * 重置\n */\n public reset(): void {\n if (this.historyCache[0]) {\n this.backTo(this.historyCache.slice(0, 1));\n }\n // 清空\n this.historyCache = [];\n this.hideCrumbGroup();\n }\n\n /**\n * 下钻数据并更新 view 显示层\n * @param nodeInfo 下钻数据\n */\n protected drill(nodeInfo: HierarchyNode) {\n const { view } = this.context;\n const transformData = get(view, ['interactions', 'drill-down', 'cfg', 'transformData'], (v) => v);\n\n // 重新 update 数据\n const drillData = transformData({ data: nodeInfo.data, ...nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] });\n view.changeData(drillData);\n\n // 存储历史记录\n const historyCache: HistoryCache = [];\n\n let node = nodeInfo;\n while (node) {\n const nodeData = node.data;\n historyCache.unshift({\n id: `${nodeData.name}_${node.height}_${node.depth}`,\n name: nodeData.name,\n // children 是实际数据\n children: transformData({ data: nodeData, ...nodeInfo[HIERARCHY_DATA_TRANSFORM_PARAMS] }),\n });\n node = node.parent;\n }\n\n this.historyCache = (this.historyCache || []).slice(0, -1).concat(historyCache);\n }\n\n /**\n * 回退事件,点击面包屑时触发\n * @param historyCache 当前要回退到的历史\n */\n protected backTo(historyCache: HistoryCache) {\n if (!historyCache || historyCache.length <= 0) {\n return;\n }\n\n const { view } = this.context;\n const data = last(historyCache).children; // 处理后的数组\n view.changeData(data);\n\n if (historyCache.length > 1) {\n this.historyCache = historyCache;\n this.drawBreadCrumb();\n } else {\n // 清空\n this.historyCache = [];\n this.hideCrumbGroup();\n }\n }\n\n /**\n * 获取 mix 默认的配置和用户配置\n */\n private getButtonCfg() {\n const { view } = this.context;\n const drillDownConfig: DrillDownCfg = get(view, ['interactions', 'drill-down', 'cfg', 'drillDownConfig']);\n\n return deepAssign(this.breadCrumbCfg, drillDownConfig?.breadCrumb, this.cfg);\n }\n\n /**\n * 显示面包屑\n */\n private drawBreadCrumb() {\n this.drawBreadCrumbGroup();\n this.resetPosition();\n this.breadCrumbGroup.show();\n }\n\n /**\n * 绘制 Button 和 文本\n */\n private drawBreadCrumbGroup() {\n const config = this.getButtonCfg();\n const cache = this.historyCache;\n\n // 初始化面包屑 group\n if (!this.breadCrumbGroup) {\n this.breadCrumbGroup = this.context.view.foregroundGroup.addGroup({\n name: BREAD_CRUMB_NAME,\n });\n } else {\n this.breadCrumbGroup.clear();\n }\n\n // 绘制面包屑\n let left = 0;\n cache.forEach((record, index) => {\n // 添加文本\n const textShape = this.breadCrumbGroup.addShape({\n type: 'text',\n id: record.id,\n name: `${BREAD_CRUMB_NAME}_${record.name}_text`,\n attrs: {\n text: index === 0 && !isNil(config.rootText) ? config.rootText : record.name,\n ...config.textStyle,\n x: left,\n y: 0,\n },\n });\n\n const textShapeBox = textShape.getBBox();\n left += textShapeBox.width + PADDING;\n\n // 增加文本事件\n textShape.on('click', (event) => {\n const targetId = event.target.get('id');\n if (targetId !== last(cache)?.id) {\n const newHistoryCache = cache.slice(0, cache.findIndex((d) => d.id === targetId) + 1);\n this.backTo(newHistoryCache);\n }\n });\n // active 效果内置\n textShape.on('mouseenter', (event) => {\n const targetId = event.target.get('id');\n if (targetId !== last(cache)?.id) {\n textShape.attr(config.activeTextStyle);\n } else {\n textShape.attr({ cursor: 'default' });\n }\n });\n textShape.on('mouseleave', () => {\n textShape.attr(config.textStyle);\n });\n\n if (index < cache.length - 1) {\n // 添加反斜杠\n const dividerShape = this.breadCrumbGroup.addShape({\n type: 'text',\n name: `${config.name}_${record.name}_divider`,\n attrs: {\n text: config.dividerText,\n ...config.textStyle,\n x: left,\n y: 0,\n },\n });\n\n const dividerBox = dividerShape.getBBox();\n left += dividerBox.width + PADDING;\n }\n });\n }\n\n /**\n * 隐藏面包屑\n */\n private hideCrumbGroup() {\n if (this.breadCrumbGroup) {\n this.breadCrumbGroup.hide();\n }\n }\n\n /**\n * @override\n * destroy: 销毁资源\n */\n public destroy() {\n if (this.breadCrumbGroup) {\n this.breadCrumbGroup.remove();\n }\n super.destroy();\n }\n}\n"]}