@visactor/vtable 1.22.11-alpha.10 → 1.22.11-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/cjs/PivotChart.js.map +1 -1
  2. package/cjs/core/BaseTable.js +1 -1
  3. package/cjs/core/BaseTable.js.map +1 -1
  4. package/cjs/event/listener/table-group.js.map +1 -1
  5. package/cjs/index.d.ts +1 -1
  6. package/cjs/index.js +1 -1
  7. package/cjs/index.js.map +1 -1
  8. package/cjs/layout/index.js +1 -2
  9. package/cjs/layout/layout-helper.js +1 -1
  10. package/cjs/layout/pivot-header-layout.js +4 -3
  11. package/cjs/layout/pivot-header-layout.js.map +1 -1
  12. package/cjs/layout/row-height-map.js +1 -1
  13. package/cjs/layout/simple-header-layout.js +1 -1
  14. package/cjs/layout/tree-helper.js +1 -1
  15. package/cjs/plugins/custom-cell-style.js +2 -1
  16. package/cjs/plugins/interface.js +1 -1
  17. package/cjs/plugins/invert-highlight.js +1 -1
  18. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  19. package/cjs/plugins/plugin-manager.js +1 -1
  20. package/cjs/scenegraph/graphic/active-cell-chart-list.d.ts +5 -1
  21. package/cjs/scenegraph/graphic/active-cell-chart-list.js +45 -12
  22. package/cjs/scenegraph/graphic/active-cell-chart-list.js.map +1 -1
  23. package/cjs/scenegraph/graphic/chart.js +2 -2
  24. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  25. package/cjs/scenegraph/scenegraph.js +7 -16
  26. package/cjs/scenegraph/scenegraph.js.map +1 -1
  27. package/cjs/state/state.js +1 -1
  28. package/cjs/vrender.js.map +1 -1
  29. package/dist/vtable.js +61 -24
  30. package/dist/vtable.min.js +1 -1
  31. package/es/PivotChart.js.map +1 -1
  32. package/es/core/BaseTable.js +1 -1
  33. package/es/core/BaseTable.js.map +1 -1
  34. package/es/event/listener/table-group.js.map +1 -1
  35. package/es/index.d.ts +1 -1
  36. package/es/index.js +1 -1
  37. package/es/index.js.map +1 -1
  38. package/es/layout/index.js +1 -2
  39. package/es/layout/layout-helper.js +1 -1
  40. package/es/layout/pivot-header-layout.js +4 -2
  41. package/es/layout/pivot-header-layout.js.map +1 -1
  42. package/es/layout/row-height-map.js +1 -1
  43. package/es/layout/simple-header-layout.js +1 -1
  44. package/es/layout/tree-helper.js +1 -1
  45. package/es/plugins/custom-cell-style.js +2 -1
  46. package/es/plugins/interface.js +1 -1
  47. package/es/plugins/invert-highlight.js +1 -1
  48. package/es/plugins/list-tree-stick-cell.js +1 -1
  49. package/es/plugins/plugin-manager.js +1 -1
  50. package/es/scenegraph/graphic/active-cell-chart-list.d.ts +5 -1
  51. package/es/scenegraph/graphic/active-cell-chart-list.js +40 -10
  52. package/es/scenegraph/graphic/active-cell-chart-list.js.map +1 -1
  53. package/es/scenegraph/graphic/chart.js +2 -3
  54. package/es/scenegraph/graphic/chart.js.map +1 -1
  55. package/es/scenegraph/scenegraph.js +8 -17
  56. package/es/scenegraph/scenegraph.js.map +1 -1
  57. package/es/state/state.js +1 -1
  58. package/es/vrender.js.map +1 -1
  59. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/PivotChart.ts"],"names":[],"mappings":"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","file":"PivotChart.js","sourcesContent":["import type {\n FieldData,\n FieldDef,\n FieldFormat,\n PivotTableAPI,\n SortRules,\n PivotSortState,\n CellAddress,\n ICellHeaderPaths,\n DropDownMenuEventInfo,\n FieldKeyDef,\n IHeaderTreeDefine,\n IDimensionInfo,\n SortOrder,\n IIndicator,\n PivotChartConstructorOptions,\n CollectValueBy,\n AggregationRules,\n AggregationRule,\n AnyFunction,\n FilterRules,\n IPivotTableCellHeaderPaths,\n PivotChartAPI\n} from './ts-types';\nimport { AggregationType } from './ts-types';\nimport type { HierarchyState } from './ts-types';\nimport { getField } from './data/DataSource';\nimport { PivotHeaderLayoutMap } from './layout/pivot-header-layout';\nimport { PIVOT_CHART_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\nimport { cellInRange, emptyFn } from './tools/helper';\nimport { Dataset } from './dataset/dataset';\nimport { _setDataSource, parseMarkLineGetExtendRange } from './core/tableHelper';\nimport { BaseTable } from './core/BaseTable';\nimport type { BaseTableAPI, HeaderData, PivotChartProtected } from './ts-types/base-table';\nimport type { IChartColumnIndicator } from './ts-types/pivot-table/indicator/chart-indicator';\nimport type { Chart } from './scenegraph/graphic/chart';\nimport {\n clearCellChartCacheImage,\n clearChartCacheImage,\n updateChartData\n} from './scenegraph/refresh-node/update-chart';\nimport type { ITableAxisOption } from './ts-types/component/axis';\nimport { cloneDeep, isArray, isNumber } from '@visactor/vutils';\nimport type { DiscreteLegend } from './vrender';\nimport type { ITitleComponent } from './components/title/title';\nimport { Env } from './tools/env';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nimport type { IndicatorData } from './ts-types/list-table/layout-map/api';\nimport { cloneDeepSpec } from '@visactor/vutils-extension';\nimport type { ITreeLayoutHeadNode } from './layout/tree-helper';\nimport { DimensionTree, type LayouTreeNode } from './layout/tree-helper';\nimport { IndicatorDimensionKeyPlaceholder } from './tools/global';\nimport { checkHasCartesianChart } from './layout/chart-helper/get-chart-spec';\nimport { supplementIndicatorNodesForCustomTree } from './layout/layout-helper';\nimport type { IEmptyTipComponent } from './components/empty-tip/empty-tip';\nimport { Factory } from './core/factory';\nimport {\n registerAxis,\n registerEmptyTip,\n registerLegend,\n registerMenu,\n registerTitle,\n registerTooltip,\n registerAnimation\n} from './components';\nimport {\n registerChartCell,\n registerCheckboxCell,\n registerImageCell,\n registerProgressBarCell,\n registerRadioCell,\n registerSparkLineCell,\n registerTextCell,\n registerVideoCell\n} from './scenegraph/group-creater/cell-type';\nimport { hasLinearAxis } from './layout/chart-helper/get-axis-config';\nimport { cacheStageCanvas, clearChartRenderQueue } from './scenegraph/graphic/contributions/chart-render-helper';\nimport {\n disableTooltipToAllChartInstances,\n enableTooltipToAllChartInstances\n} from './scenegraph/graphic/active-cell-chart-list';\n\nregisterAxis();\nregisterEmptyTip();\nregisterLegend();\nregisterMenu();\nregisterTitle();\nregisterTooltip();\nregisterAnimation();\nregisterChartCell();\nregisterCheckboxCell();\nregisterImageCell();\nregisterProgressBarCell();\nregisterRadioCell();\nregisterSparkLineCell();\nregisterTextCell();\nregisterVideoCell();\n\nexport class PivotChart extends BaseTable implements PivotChartAPI {\n layoutNodeId: { seqId: number } = { seqId: 0 };\n declare internalProps: PivotChartProtected;\n declare options: PivotChartConstructorOptions;\n pivotSortState: PivotSortState[];\n\n dataset?: Dataset; //数据处理对象 开启数据透视分析的表\n //记录被点击选中图元\n _selectedDataItemsInChart: any[] = [];\n _selectedDataMode: 'click' | 'brush' = 'click';\n //记录轴坐标被选中维度\n _selectedDimensionInChart: { key: string; value: string }[] = [];\n _chartEventMap: Record<string, { query?: any; callback: AnyFunction }[]> = {};\n\n _axes: ITableAxisOption[];\n constructor(options: PivotChartConstructorOptions);\n constructor(container: HTMLElement, options: PivotChartConstructorOptions);\n constructor(container?: HTMLElement | PivotChartConstructorOptions, options?: PivotChartConstructorOptions) {\n super(container as HTMLElement, options);\n options = this.options;\n if ((options as any).layout) {\n //TODO hack处理之前的demo都是定义到layout上的 所以这里直接并到options中\n Object.assign(options, (options as any).layout);\n }\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = cloneDeepSpec(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n this.internalProps.records = options.records;\n\n this.setCustomStateNameToSpec();\n this.internalProps.columnResizeType = options.resize?.columnResizeType ?? options.columnResizeType ?? 'column';\n this.internalProps.rowResizeType = options.resize?.rowResizeType ?? options.rowResizeType ?? 'row';\n this.internalProps.dataConfig = { isPivotChart: true };\n this.internalProps.columnWidthConfig = options.columnWidthConfig;\n this.internalProps.columnWidthConfigForRowHeader = options.columnWidthConfigForRowHeader;\n this._axes = isArray(options.axes) ? options.axes : [];\n\n let columnDimensionTree;\n let rowDimensionTree;\n if (options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.internalProps.columnTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.columnTree,\n options.indicators\n );\n }\n columnDimensionTree = new DimensionTree(\n (this.internalProps.columnTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n if (options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.internalProps.rowTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.rowTree,\n options.indicators\n );\n }\n rowDimensionTree = new DimensionTree(\n (this.internalProps.rowTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n const rowKeys = rowDimensionTree?.dimensionKeys?.count\n ? rowDimensionTree.dimensionKeys.valueArr()\n : options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys = columnDimensionTree?.dimensionKeys?.count\n ? columnDimensionTree.dimensionKeys.valueArr()\n : options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records,\n undefined,\n undefined,\n this.internalProps.columnTree, //传递自定义树形结构会在dataset中补充指标节点children\n this.internalProps.rowTree,\n true\n );\n if (this.options.indicatorsAsCol && checkHasCartesianChart(this.internalProps.indicators)) {\n const supplyAxisNode = (nodes: IHeaderTreeDefine[]) => {\n nodes.forEach((node: IHeaderTreeDefine) => {\n if ((node.children as IHeaderTreeDefine[])?.length) {\n supplyAxisNode(node.children as IHeaderTreeDefine[]);\n } else {\n // 在指标在列上的透视图中,主指标轴(离散轴)显示在左侧,因此需要在原先行表头的布局中最右侧加入一列,用来显示坐标轴\n // 加入的这一列dimensionKey配置为'axis',在后续行列计算维度时需要注意,这一列是为了显示坐标轴加入的,不在行列维度信息内\n node.children = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n });\n };\n if (this.dataset.rowHeaderTree?.length) {\n supplyAxisNode(this.dataset.rowHeaderTree);\n } else {\n this.dataset.rowHeaderTree = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n }\n if (!options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.dataset.colHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.colHeaderTree,\n options.indicators\n );\n }\n }\n if (!options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.dataset.rowHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.rowHeaderTree,\n options.indicators\n );\n }\n }\n columnDimensionTree = new DimensionTree(\n (this.dataset.colHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n rowDimensionTree = new DimensionTree(\n (this.dataset.rowHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n\n this.internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset, columnDimensionTree, rowDimensionTree);\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n this.internalProps.title = new Title(options.title, this);\n // this.scenegraph.resize();//下面有个resize了 所以这个可以去掉\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n if (this.isReleased) {\n return;\n }\n this.resize();\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n static get EVENT_TYPE(): typeof PIVOT_CHART_EVENT_TYPE {\n return PIVOT_CHART_EVENT_TYPE;\n }\n get pivotChartAxes() {\n return this._axes;\n }\n get recordsCount() {\n return this.records?.length;\n }\n\n isListTable(): false {\n return false;\n }\n isPivotTable(): true {\n return true;\n }\n isPivotChart(): true {\n return true;\n }\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.internalProps.layoutMap.indicatorsAsCol) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n if ((cellDefine as IndicatorData)?.disableColumnResize) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(\n options: PivotChartConstructorOptions,\n updateConfig: { clearColWidthCache?: boolean; clearRowHeightCache?: boolean } = {\n clearColWidthCache: true,\n clearRowHeightCache: true\n }\n ) {\n const internalProps = this.internalProps;\n //维护选中状态\n // const range = internalProps.selection.range; //保留原有单元格选中状态\n super.updateOption(options, updateConfig);\n this.scenegraph.updateChartState(null, undefined);\n this.scenegraph.deactivateChart(-1, -1, true);\n this.layoutNodeId = { seqId: 0 };\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = !options.indicators?.length ? [] : cloneDeepSpec(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n options.records && (this.internalProps.records = options.records);\n this.setCustomStateNameToSpec();\n this._selectedDataItemsInChart = [];\n // 更新protectedSpace\n internalProps.columnResizeType = options.resize?.columnResizeType ?? options.columnResizeType ?? 'column';\n internalProps.rowResizeType = options.resize?.rowResizeType ?? options.rowResizeType ?? 'row';\n internalProps.dataConfig = { isPivotChart: true };\n this.internalProps.columnWidthConfig = options.columnWidthConfig;\n this.internalProps.columnWidthConfigForRowHeader = options.columnWidthConfigForRowHeader;\n this._axes = isArray(options.axes) ? options.axes : [];\n\n //TODO 这里需要加上判断 dataConfig是否有配置变化\n // if (options.rows || options.columns) {\n\n let columnDimensionTree;\n let rowDimensionTree;\n if (options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.internalProps.columnTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.columnTree,\n options.indicators\n );\n }\n columnDimensionTree = new DimensionTree(\n (this.internalProps.columnTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n if (options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.internalProps.rowTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.rowTree,\n options.indicators\n );\n }\n rowDimensionTree = new DimensionTree(\n (this.internalProps.rowTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n const rowKeys = rowDimensionTree?.dimensionKeys?.count\n ? rowDimensionTree.dimensionKeys.valueArr()\n : options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys = columnDimensionTree?.dimensionKeys?.count\n ? columnDimensionTree.dimensionKeys.valueArr()\n : options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records ?? this.internalProps.records,\n undefined,\n undefined,\n this.internalProps.columnTree,\n this.internalProps.rowTree,\n true\n );\n if (this.options.indicatorsAsCol && checkHasCartesianChart(this.internalProps.indicators)) {\n const supplyAxisNode = (nodes: IHeaderTreeDefine[]) => {\n nodes.forEach((node: IHeaderTreeDefine) => {\n if ((node.children as IHeaderTreeDefine[])?.length) {\n supplyAxisNode(node.children as IHeaderTreeDefine[]);\n } else {\n // 在指标在列上的透视图中,主指标轴(离散轴)显示在左侧,因此需要在原先行表头的布局中最右侧加入一列,用来显示坐标轴\n // 加入的这一列dimensionKey配置为'axis',在后续行列计算维度时需要注意,这一列是为了显示坐标轴加入的,不在行列维度信息内\n node.children = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n });\n };\n if (this.dataset.rowHeaderTree?.length) {\n supplyAxisNode(this.dataset.rowHeaderTree);\n } else {\n this.dataset.rowHeaderTree = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n }\n\n if (!options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.dataset.colHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.colHeaderTree,\n options.indicators\n );\n }\n }\n\n if (!options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.dataset.rowHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.rowHeaderTree,\n options.indicators\n );\n }\n }\n columnDimensionTree = new DimensionTree(\n (this.dataset.colHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n\n rowDimensionTree = new DimensionTree(\n (this.dataset.rowHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset, columnDimensionTree, rowDimensionTree);\n // else {\n // console.warn('VTable Warn: your option is invalid, please check it!');\n // return this;\n // }\n\n // 更新表头\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n // if (options.dataSource) {\n // _setDataSource(this, options.dataSource);\n // }else\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n this.internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.UPDATED, null);\n }, 0);\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n updatePagination() {\n //void\n }\n refreshHeader(): void {\n this.setMinMaxLimitWidth(true);\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount = layoutMap.rowCount ?? 0;\n // table.frozenColCount = layoutMap.rowHeaderLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n table.internalProps.frozenColCount = layoutMap.rowHeaderLevelCount ?? 0;\n // 不能使用frozenRowCount setter 因为会把options.frozenRowCount赋值\n table._setFrozenRowCount(Math.max(layoutMap.headerLevelCount, this.options.frozenRowCount ?? 0));\n if (table.bottomFrozenRowCount !== (layoutMap?.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = layoutMap?.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (layoutMap?.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = layoutMap?.rightFrozenColCount ?? 0;\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n }\n protected _getSortFuncFromHeaderOption(\n columns: undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined {\n return undefined;\n }\n /**\n * 将现有tree中的的hierarchyState同步到rows透视树中\n * @param sourceNode\n * @param targetNode\n */\n private syncHierarchyState(sourceNode: any, targetNode: IHeaderTreeDefine) {\n if (sourceNode.value === targetNode.value && sourceNode.dimensionKey === targetNode.dimensionKey) {\n targetNode.hierarchyState =\n targetNode.hierarchyState ?? (targetNode?.children ? sourceNode.hierarchyState : undefined);\n (targetNode?.children as IHeaderTreeDefine[])?.forEach((targetChildNode: IHeaderTreeDefine, index: number) => {\n if (sourceNode?.children?.[index] && targetChildNode) {\n this.syncHierarchyState(sourceNode.children[index], targetChildNode);\n }\n });\n }\n }\n getRecordShowIndexByCell(col: number, row: number): number {\n return undefined;\n }\n\n getTableIndexByRecordIndex(recordIndex: number): number {\n return undefined;\n }\n getTableIndexByField(field: FieldDef): number {\n return undefined;\n }\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n return undefined;\n }\n getBodyIndexByRow(row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByRow(row);\n }\n getBodyIndexByCol(col: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByCol(col);\n }\n // getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n // if (field === null || field === undefined) {\n // return null;\n // }\n // const table = this;\n // if (table.internalProps.layoutMap.isHeader(col, row)) {\n // return null;\n // }\n // const rowIndex = this.getBodyIndexByRow(row);\n // const colIndex = this.getBodyIndexByCol(col);\n // const dataValue = table.dataSource?.getField(rowIndex, colIndex, col, row, this);\n // if (typeof field !== 'string') {\n // //field为函数format\n // const cellHeaderPaths = table.internalProps.layoutMap.getCellHeaderPaths(col, row);\n // return getField({ dataValue, ...cellHeaderPaths }, field, col, row, this, emptyFn as any);\n // }\n // return dataValue;\n // }\n\n getCellValue(col: number, row: number, skipCustomMerge?: boolean): FieldData {\n if (!skipCustomMerge) {\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n }\n if (this.internalProps.layoutMap.isHeader(col, row)) {\n if (\n this.internalProps.layoutMap.isBottomFrozenRow(col, row) ||\n this.internalProps.layoutMap.isRightFrozenColumn(col, row)\n ) {\n //针对底部和右侧冻结的轴单元格的值做处理 如果有轴这里会显示轴 如果没有则显示这里获取到的值\n const indicatorKeys = this.internalProps.layoutMap.getIndicatorKeyInChartSpec(col, row);\n let indicatorInfo: IIndicator;\n indicatorKeys?.forEach(key => {\n const info = this.internalProps.layoutMap.getIndicatorInfo(key);\n if (info) {\n indicatorInfo = info;\n }\n });\n return indicatorInfo?.title ?? indicatorInfo?.indicatorKey ?? '';\n }\n const { title, fieldFormat } = this.internalProps.layoutMap.getHeader(col, row) as HeaderData;\n return typeof fieldFormat === 'function' ? fieldFormat(title, col, row, this as BaseTableAPI) : title;\n }\n if (this.dataset) {\n let indicatorPosition: { position: 'col' | 'row'; index?: number };\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any, index: number) => {\n if (colPath.indicatorKey) {\n indicatorPosition = {\n position: 'col',\n index\n };\n }\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any, index: number) => {\n if (rowPath.indicatorKey) {\n indicatorPosition = {\n position: 'row',\n index\n };\n }\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n // !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n // this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n rowKeys,\n colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row),\n true,\n indicatorPosition\n );\n return aggregator.value ? aggregator.value() : undefined;\n }\n const { fieldFormat } = this.internalProps.layoutMap.getBody(col, row) as IndicatorData;\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n if (typeof fieldFormat === 'function') {\n const fieldResult = fieldFormat(dataValue, col, row, this as BaseTableAPI);\n return fieldResult;\n }\n return dataValue;\n // const { field, fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n // return this.getFieldData(fieldFormat || field, col, row);\n }\n\n getCellOriginValue(col: number, row: number): FieldData {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n if (\n this.internalProps.layoutMap.isBottomFrozenRow(col, row) ||\n this.internalProps.layoutMap.isRightFrozenColumn(col, row)\n ) {\n //针对底部和右侧冻结的轴单元格的值做处理 如果有轴这里会显示轴 如果没有则显示这里获取到的值\n const indicatorKeys = this.internalProps.layoutMap.getIndicatorKeyInChartSpec(col, row);\n let indicatorInfo: IIndicator;\n indicatorKeys?.forEach(key => {\n const info = this.internalProps.layoutMap.getIndicatorInfo(key);\n if (info) {\n indicatorInfo = info;\n }\n });\n return indicatorInfo?.title ?? indicatorInfo?.indicatorKey ?? '';\n }\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n if (this.dataset) {\n let indicatorPosition: { position: 'col' | 'row'; index?: number };\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any, index: number) => {\n if (colPath.indicatorKey) {\n indicatorPosition = {\n position: 'col',\n index\n };\n }\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any, index: number) => {\n if (rowPath.indicatorKey) {\n indicatorPosition = {\n position: 'row',\n index\n };\n }\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n // !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n // this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n rowKeys,\n colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row),\n true,\n indicatorPosition\n );\n return aggregator.value ? aggregator.value() : undefined;\n // return ''\n }\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n return dataValue;\n // const { field } = table.internalProps.layoutMap.getBody(col, row);\n // return table.getFieldData(field, col, row);\n }\n\n getCellRawValue(col: number, row: number) {\n return this.getCellOriginValue(col, row);\n }\n\n // 获取原始数据\n getCellOriginRecord(col: number, row: number) {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return undefined;\n }\n if (this.dataset) {\n let indicatorPosition: { position: 'col' | 'row'; index?: number };\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any, index: number) => {\n if (colPath.indicatorKey) {\n indicatorPosition = {\n position: 'col',\n index\n };\n }\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any, index: number) => {\n if (rowPath.indicatorKey) {\n indicatorPosition = {\n position: 'row',\n index\n };\n }\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n // !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n // this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n rowKeys,\n colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row),\n true,\n indicatorPosition\n );\n return aggregator.records;\n // return ''\n }\n return undefined;\n }\n\n getCellRawRecord(col: number, row: number) {\n return this.getCellOriginRecord(col, row);\n }\n\n getPivotSortState(col: number, row: number): SortOrder {\n if (!this.pivotSortState) {\n return undefined;\n }\n const cellRange = this.getCellRange(col, row);\n for (let i = 0; i < this.pivotSortState.length; i++) {\n const { col: sortCol, row: sortRow, order } = this.pivotSortState[i];\n\n if (cellInRange(cellRange, sortCol, sortRow)) {\n return order;\n }\n }\n return undefined;\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n _moveHeaderPosition(source: CellAddress, target: CellAddress) {\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = (this.internalProps.layoutMap as PivotHeaderLayoutMap).moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n for (let row = 0; row < (this.internalProps.records as Array<any>).length; row++) {\n const sourceColumns = (this.internalProps.records[row] as unknown as number[]).splice(\n moveContext.sourceIndex - this.rowHeaderLevelCount,\n moveContext.sourceSize\n );\n sourceColumns.unshift((moveContext.targetIndex as any) - this.rowHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records[row] as unknown as number[], sourceColumns);\n }\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.sourceSize);\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n this.setMinMaxLimitWidth();\n } else if (moveContext.moveType === 'row') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n const sourceRows = (this.internalProps.records as unknown as number[]).splice(\n moveContext.sourceIndex - this.columnHeaderLevelCount,\n moveContext.sourceSize\n );\n sourceRows.unshift((moveContext.targetIndex as any) - this.columnHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records, sourceRows);\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.rowHeightsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.sourceSize);\n }\n return moveContext;\n }\n return null;\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n */\n toggleHierarchyState(col: number, row: number, recalculateColWidths: boolean = true) {\n //nothing\n }\n /**\n * 通过表头的维度值路径来计算单元格位置 getCellAddressByHeaderPaths接口更强大一些 不限表头 不限参数格式\n * @param dimensionPaths\n * @returns\n */\n getHeaderCellAddressByPath(dimensionPaths: IDimensionInfo[]): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotCellAdress(dimensionPaths);\n return cellAddress;\n }\n /**\n * 通过表头的维度值路径来计算单元格位置\n * @param dimensionPaths\n * @returns\n */\n getCellAddressByHeaderPaths(\n dimensionPaths: // | {\n // colHeaderPaths: IDimensionInfo[];\n // rowHeaderPaths: IDimensionInfo[];\n // }\n IPivotTableCellHeaderPaths | IDimensionInfo[]\n ): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getCellAdressByHeaderPath(\n dimensionPaths\n );\n return cellAddress;\n }\n\n /**\n * 通过传入的坐标 获取该位置当前单元格的维度路径;\n * @param coordinate 从body左上角为原点 coordinate为偏移距离 去计算单元格的headerPath;\n * 如不传coordinate坐标则按取body中左上角第一个单元格的维度路径\n * @returns\n */\n getHeaderPathByXY(coordinate?: { x: number; y: number }): ICellHeaderPaths {\n let cellAddr;\n if (coordinate) {\n cellAddr = this.getCellAt(\n coordinate.x + this.getFrozenColsWidth() + this.scrollLeft + 1,\n coordinate.y + this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n } else {\n cellAddr = this.getCellAt(\n this.getFrozenColsWidth() + this.scrollLeft + 1,\n this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n }\n const cellHeaderPaths = this.internalProps.layoutMap.getCellHeaderPaths(cellAddr.col, cellAddr.row);\n return cellHeaderPaths;\n }\n getHierarchyState(col: number, row: number): HierarchyState {\n return (this._getHeaderLayoutMap(col, row) as HeaderData)?.hierarchyState;\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const dimensionInfos = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotDimensionInfo(col, row);\n const result: DropDownMenuEventInfo = {\n dimensionKey: dimensionInfos[dimensionInfos.length - 1].dimensionKey,\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row),\n isPivotCorner: this.isCornerHeader(col, row),\n event: undefined\n };\n return result;\n }\n /**\n * 根据用户配置 生成 收集维度值collectValuesBy 的配置 传给dataset用\n * 这个收集规则的逻辑是按照正常使用方式:\n * 指标显示在行表头indicatorsAsCol=false时,图表yField为指标值,xField为维度值(考虑stack)direction为默认值'vertical';\n * 指标显示在列表头indicatorsAsCol=true时,图表xField为指标值,yField为维度值(考虑stack)direction为'horizontal';\n * @param columnKeys\n * @param rowKeys\n * @returns\n */\n private _generateCollectValuesConfig(columnKeys: string[], rowKeys: string[]): Record<string, CollectValueBy> {\n columnKeys = columnKeys.filter(key => key !== IndicatorDimensionKeyPlaceholder);\n rowKeys = rowKeys.filter(key => key !== IndicatorDimensionKeyPlaceholder);\n const indicators = this.internalProps.indicators;\n const collectValuesBy: Record<string, CollectValueBy> = {};\n\n for (let i = 0, len = indicators?.length; i < len; i++) {\n if (typeof indicators[i] !== 'string' && (indicators[i] as IChartColumnIndicator).chartSpec) {\n if (\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'pie' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'rose' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'funnel' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'radar' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'gauge' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'wordCloud' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'sunburst' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'treemap' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'sankey' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'circlePacking'\n ) {\n continue;\n }\n const indicatorDefine = indicators[i] as IIndicator;\n const indicatorSpec = (indicatorDefine as IChartColumnIndicator).chartSpec;\n\n if (this.options.indicatorsAsCol === false) {\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n // 收集指标值的范围\n if (indicatorSpec?.type !== 'heatmap') {\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: rowKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n indicatorSpec.type === 'histogram'\n ? columnKeys.concat(indicatorSpec?.xField, indicatorSpec?.x2Field)\n : indicatorSpec?.stack && columnKeys.concat(indicatorSpec?.xField)\n };\n }\n if (indicatorSpec.series) {\n indicatorSpec.series.forEach((chartSeries: any) => {\n const xField = typeof chartSeries.xField === 'string' ? chartSeries.xField : chartSeries.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type: chartSeries.direction !== 'horizontal' ? 'xField' : undefined,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', true),\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ?? indicatorSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n\n const yField = chartSeries.yField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[yField] = {\n by: rowKeys,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', false),\n sumBy: chartSeries.stack && columnKeys.concat(chartSeries?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ?? indicatorSpec?.data?.fields?.[yField]?.domain\n : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine)\n };\n });\n } else {\n const xField =\n indicatorSpec.type === 'histogram' //特殊处理histogram直方图xField和x2Field\n ? indicatorSpec.x2Field\n : typeof indicatorSpec.xField === 'string'\n ? indicatorSpec.xField\n : indicatorSpec.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type: indicatorSpec.direction !== 'horizontal' ? 'xField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', true),\n sortBy:\n indicatorSpec.direction !== 'horizontal' ? indicatorSpec?.data?.fields?.[xField]?.domain : undefined\n };\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n //下面这个收集的值 应该是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同\n const yField = indicatorSpec.yField ?? indicatorSpec.maxField;\n collectValuesBy[yField] = {\n by: rowKeys,\n type: indicatorSpec.direction !== 'horizontal' ? 'yField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', false), //indicatorSpec.direction !== 'horizontal', // direction默认为'vertical'\n sumBy:\n indicatorSpec.type === 'histogram'\n ? columnKeys.concat(indicatorSpec?.xField, indicatorSpec?.x2Field)\n : indicatorSpec.stack && columnKeys.concat(indicatorSpec?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n indicatorSpec.direction === 'horizontal' ? indicatorSpec?.data?.fields?.[yField]?.domain : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine),\n considerFields:\n indicatorSpec?.type === 'boxPlot'\n ? [indicatorSpec.maxField, indicatorSpec.minField, indicatorSpec.outliersField]\n : undefined\n };\n }\n } else {\n const indicatorDefine = indicators[i] as IIndicator;\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n // 收集指标值的范围\n if (indicatorSpec?.type !== 'heatmap') {\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: columnKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n indicatorSpec.type === 'histogram'\n ? rowKeys.concat(indicatorSpec?.yField, indicatorSpec?.y2Field)\n : indicatorSpec?.stack && rowKeys.concat(indicatorSpec?.yField)\n };\n }\n if (indicatorSpec.series) {\n indicatorSpec.series.forEach((chartSeries: any) => {\n const yField = typeof chartSeries.yField === 'string' ? chartSeries.yField : chartSeries.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type: chartSeries.direction === 'horizontal' ? 'yField' : undefined,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', false),\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ?? indicatorSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n\n const xField = chartSeries.xField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[xField] = {\n by: columnKeys,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', true),\n sumBy: chartSeries.stack && rowKeys.concat(chartSeries?.yField),\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ?? indicatorSpec?.data?.fields?.[xField]?.domain\n : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine)\n };\n });\n } else {\n const yField =\n indicatorSpec.type === 'histogram' //特殊处理histogram直方图xField和x2Field\n ? indicatorSpec.y2Field\n : typeof indicatorSpec.yField === 'string'\n ? indicatorSpec.yField\n : indicatorSpec.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type: indicatorSpec.direction === 'horizontal' ? 'yField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', false),\n sortBy:\n indicatorSpec.direction === 'horizontal' ? indicatorSpec?.data?.fields?.[yField]?.domain : undefined\n };\n\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n //下面这个收集的值 是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同(heatmap情况除外)\n //特殊处理histogram直方图xField和x2Field\n const xField = indicatorSpec.xField ?? indicatorSpec.maxField;\n collectValuesBy[xField] = {\n by: columnKeys,\n type: indicatorSpec.direction === 'horizontal' ? 'xField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', true),\n sumBy:\n indicatorSpec.type === 'histogram'\n ? rowKeys.concat(indicatorSpec?.yField, indicatorSpec?.y2Field)\n : indicatorSpec.stack && rowKeys.concat(indicatorSpec?.yField),\n sortBy:\n indicatorSpec.direction !== 'horizontal' ? indicatorSpec?.data?.fields?.[xField]?.domain : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine),\n considerFields:\n indicatorSpec?.type === 'boxPlot'\n ? [indicatorSpec.maxField, indicatorSpec.minField, indicatorSpec.outliersField]\n : undefined\n };\n }\n }\n }\n }\n\n return collectValuesBy;\n }\n // private _generateAggregationRules(indicatorKeys: string[]): AggregationRules {\n // return indicatorKeys.map((indicatorKey: string) => {\n // return {\n // indicatorKey, //field转为指标key\n // field: indicatorKey, //指标依据字段\n // aggregationType: AggregationType.RECORD //计算类型\n // };\n // });\n // }\n /**\n *\n * @param indicatorFromChartSpec 是否需要考虑chartSpec中的yField或者xField分析作为指标来分组数据\n * @returns\n */\n private _generateAggregationRules() {\n const aggregationRules: AggregationRules = [];\n // indicatorFromChartSpec = true;\n this.internalProps.indicators?.forEach((indicator: IIndicator | string) => {\n if (typeof indicator === 'string') {\n aggregationRules.push({\n indicatorKey: indicator, //field转为指标key\n field: indicator, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n } as AggregationRule<AggregationType.RECORD>);\n } else {\n if ((indicator as IChartColumnIndicator).chartSpec?.series) {\n // 如果chartSpec配置了组合图 series 则需要考虑 series中存在的多个指标\n const fields: string[] = [];\n (indicator as IChartColumnIndicator).chartSpec?.series.forEach((seriesSpec: any) => {\n const seriesField = this.options.indicatorsAsCol === false ? seriesSpec.yField : seriesSpec.xField;\n if (fields.indexOf(seriesField) === -1) {\n fields.push(seriesField);\n }\n });\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: fields, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n } else {\n const field =\n this.options.indicatorsAsCol === false\n ? (indicator as IChartColumnIndicator).chartSpec.yField\n : (indicator as IChartColumnIndicator).chartSpec.xField;\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: field ?? indicator.indicatorKey, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n }\n }\n });\n\n return aggregationRules;\n }\n /** 将spec中的 selected和selected_reverse 更名为vtable_selected和vtable_selected_reverse */\n private setCustomStateNameToSpec() {\n /** 修改设置的selected 和 dselected_reverse的名字加前缀vtable */\n const setCustomStateName = (spec: any) => {\n if (spec.bar?.state?.selected) {\n spec.bar.state.vtable_selected = spec.bar.state.selected;\n spec.bar.state.vtable_selected_reverse = spec.bar.state.selected_reverse;\n delete spec.bar.state.selected;\n delete spec.bar.state.selected_reverse;\n }\n if (spec.point?.state?.selected) {\n spec.point.state.vtable_selected = spec.point.state.selected;\n spec.point.state.vtable_selected_reverse = spec.point.state.selected_reverse;\n delete spec.point.state.selected;\n delete spec.point.state.selected_reverse;\n }\n if (spec.line?.state?.selected) {\n spec.line.state.vtable_selected = spec.line.state.selected;\n spec.line.state.vtable_selected_reverse = spec.line.state.selected_reverse;\n delete spec.line.state.selected;\n delete spec.line.state.selected_reverse;\n }\n if (spec.area?.state?.selected) {\n spec.area.state.vtable_selected = spec.area.state.selected;\n spec.area.state.vtable_selected_reverse = spec.area.state.selected_reverse;\n delete spec.area.state.selected;\n delete spec.area.state.selected_reverse;\n }\n if (spec.pie?.state?.selected) {\n spec.pie.state.vtable_selected = spec.pie.state.selected;\n spec.pie.state.vtable_selected_reverse = spec.pie.state.selected_reverse;\n delete spec.pie.state.selected;\n delete spec.pie.state.selected_reverse;\n }\n };\n this.internalProps.indicators?.forEach((indicator: string | IIndicator) => {\n if ((indicator as IChartColumnIndicator).chartSpec) {\n const spec = (indicator as IChartColumnIndicator).chartSpec;\n if (spec.series) {\n spec.series.forEach((series: any) => {\n setCustomStateName(series);\n });\n } else {\n setCustomStateName(spec);\n }\n }\n });\n }\n\n /** 更新数据过滤规则,适用场景:点击图例项后 更新过滤规则 来更新图表 */\n updateFilterRules(filterRules: FilterRules) {\n // 使用节流函数包装实际的更新逻辑\n this._throttledUpdateFilterRules(filterRules);\n }\n\n //#region 节流相关变量\n private _throttleTimer: number | null = null;\n private _latestFilterRules: FilterRules | null = null;\n\n /**\n * 实际执行过滤规则更新的节流方法\n * @private\n */\n private _throttledUpdateFilterRules(filterRules: FilterRules): void {\n // 始终保存最新的过滤规则\n this._latestFilterRules = filterRules;\n\n // 如果没有定时器在运行,立即执行一次更新\n if (this._throttleTimer === null) {\n this._executeFilterUpdate(filterRules);\n\n // 设置节流定时器\n this._throttleTimer = window.setTimeout(() => {\n // 定时器结束时,如果有新的过滤规则,再次执行更新\n if (this._latestFilterRules !== filterRules) {\n this._executeFilterUpdate(this._latestFilterRules as FilterRules);\n }\n this._throttleTimer = null;\n }, 200);\n }\n }\n //#endregion\n /**\n * 执行实际的过滤规则更新操作\n * @private\n */\n private _executeFilterUpdate(filterRules: FilterRules): void {\n this.internalProps.dataConfig.filterRules = filterRules;\n this.dataset.updateFilterRules(filterRules);\n clearChartCacheImage(this.scenegraph);\n updateChartData(this.scenegraph);\n this.render();\n }\n clearChartCacheImage(col?: number, row?: number) {\n if (isNumber(col) && isNumber(row)) {\n clearCellChartCacheImage(col, row, this.scenegraph);\n } else {\n clearChartCacheImage(this.scenegraph);\n }\n }\n /** 获取图例的选择状态 */\n getLegendSelected() {\n const selected: any[] = [];\n this.internalProps.legends?.forEach(legend => {\n const data = (legend.legendComponent as any)._getSelectedLegends().map((d: any) => d.label);\n selected.push(...data);\n });\n return selected;\n }\n setLegendSelected(selectedData: (string | number)[]) {\n this.internalProps.legends?.forEach(legend => {\n (legend.legendComponent as DiscreteLegend).setSelected(selectedData);\n });\n // this.updateFilterRules([{ filterKey: '20001', filteredValues: selectedData }]);\n // this.invalidate();\n }\n /**\n * 获取图表上某一个图元的位置\n * @param datum 图元对应的数据\n * @param cellHeaderPaths 单元格的header路径\n * @returns 图元在整个表格上的坐标位置(相对表格左上角视觉坐标)\n */\n getChartDatumPosition(datum: any, cellHeaderPaths: IPivotTableCellHeaderPaths): { x: number; y: number } {\n const { chartInstance, bounds } = this.getChartInstance(cellHeaderPaths);\n if (chartInstance) {\n const position = chartInstance.convertDatumToPosition(datum);\n return position ? { x: Math.round(position.x + bounds.x1), y: Math.round(position.y + bounds.y1) } : null;\n }\n return null;\n }\n /** 获取某条数据所在的行列位置 */\n getCellAddressByRecord(record: any) {\n const rowHeaderPaths: IDimensionInfo[] = [];\n const colHeaderPaths: IDimensionInfo[] = [];\n const recordKeyMapToIndicatorKeys = {};\n const indicatorRecordKeys: (string | number)[] = [];\n this.dataset.dataConfig.aggregationRules.forEach(aggregationRule => {\n if (typeof aggregationRule.field === 'string') {\n recordKeyMapToIndicatorKeys[aggregationRule.field] = aggregationRule.indicatorKey;\n indicatorRecordKeys.push(aggregationRule.field);\n } else {\n for (let i = 0; i < aggregationRule.field.length; i++) {\n recordKeyMapToIndicatorKeys[aggregationRule.field[i]] = aggregationRule.indicatorKey;\n indicatorRecordKeys.push(aggregationRule.field[i]);\n }\n }\n });\n for (const key in record) {\n if (this.dataset.rows.indexOf(key) >= 0) {\n rowHeaderPaths.push({\n dimensionKey: key,\n value: record[key]\n });\n }\n if (this.dataset.columns.indexOf(key) >= 0) {\n colHeaderPaths.push({\n dimensionKey: key,\n value: record[key]\n });\n }\n if (indicatorRecordKeys.indexOf(key) >= 0) {\n if (this.dataset.indicatorsAsCol) {\n colHeaderPaths.push({\n indicatorKey: recordKeyMapToIndicatorKeys[key]\n });\n } else {\n rowHeaderPaths.push({\n indicatorKey: recordKeyMapToIndicatorKeys[key]\n });\n }\n }\n }\n return this.getCellAddressByHeaderPaths({\n rowHeaderPaths,\n colHeaderPaths,\n cellLocation: 'body'\n });\n }\n\n getChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n const cellPosition = this.getCellRelativeRect(cellAddr.col, cellAddr.row);\n const cellGroup = this.scenegraph.getCell(cellAddr.col, cellAddr.row);\n // let position;\n let chartInstance: any;\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n if (chartNode.attribute.chartInstance) {\n chartInstance = chartNode.attribute.chartInstance;\n const { dataId, data, axes, spec } = chartNode.attribute;\n const viewBox = chartNode.getViewBox();\n axes?.forEach((axis: any, index: number) => {\n if (axis.type === 'linear') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._domain = {\n // min: axis.range?.min ?? 0,\n // max: axis.range?.max ?? 0\n // };\n chartInstance.updateModelSpecSync(\n { type: 'axes', index },\n {\n min: axis.range?.min ?? 0,\n max: axis.range?.max ?? 0,\n tick: {\n tickMode: axis.tick?.tickMode\n }\n },\n true\n );\n } else if (axis.type === 'band') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._spec.domain = axis.domain.slice(0);\n // chartAxis.updateScaleDomain();\n chartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);\n }\n });\n\n chartInstance.updateViewBox(\n {\n x1: 0,\n x2: viewBox.x2 - viewBox.x1,\n y1: 0,\n y2: viewBox.y2 - viewBox.y1\n },\n false,\n false\n );\n // 拷贝的chart-render-helper.ts 的代码\n const chartStage = chartInstance.getStage();\n const matrix = chartNode.globalTransMatrix.clone();\n const stageMatrix = chartNode.stage.window.getViewBoxTransform();\n matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n chartStage.window.setViewBoxTransform &&\n chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\n // chartInstance.updateDataSync(dataId, data);\n if (typeof dataId === 'string' || typeof dataId === 'number') {\n chartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n for (const dataIdStr in dataId) {\n const dataIdAndField = dataId[dataIdStr];\n const series = spec.series.find((item: any) => item?.data?.id === dataIdStr);\n dataBatch.push({\n id: dataIdStr,\n values: dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? [],\n fields: series?.data?.fields\n });\n // 判断是否有updateFullDataSync 木有的话 还是循环调用updateDataSync\n if (!chartInstance.updateFullDataSync) {\n chartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n chartInstance.updateFullDataSync?.(dataBatch);\n }\n // position = chartInstance.convertDatumToPosition(datum);\n this.render();\n // this.renderAsync();\n }\n // cellPosition.offsetLeft(this.tableX);\n // cellPosition.offsetTop(this.tableY);\n return {\n chartInstance,\n bounds: cellPosition.bounds\n };\n // return position\n // ? { x: Math.round(position.x + cellPosition.bounds.x1), y: Math.round(position.y + cellPosition.bounds.y1) }\n // : null;\n }\n return {};\n }\n\n /** 激活某个单元格的图表(相当于鼠标hover到单元格上) */\n activateChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n // const cellPosition = this.getCellRelativeRect(cellAddr.col, cellAddr.row);\n const col = cellAddr.col;\n const row = cellAddr.row;\n const cellGroup = this.scenegraph.getCell(col, row);\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n const activeChartInstance = this.scenegraph.activateChart(col, row);\n const { dataId, data, axes, spec } = chartNode.attribute;\n const viewBox = chartNode.getViewBox();\n\n axes?.forEach((axis: any, index: number) => {\n if (axis.type === 'linear') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._domain = {\n // min: axis.range?.min ?? 0,\n // max: axis.range?.max ?? 0\n // };\n activeChartInstance.updateModelSpecSync(\n { type: 'axes', index },\n {\n min: axis.range?.min ?? 0,\n max: axis.range?.max ?? 0,\n tick: {\n tickMode: axis.tick?.tickMode\n }\n },\n true\n );\n } else if (axis.type === 'band') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._spec.domain = axis.domain.slice(0);\n // chartAxis.updateScaleDomain();\n activeChartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);\n }\n });\n\n activeChartInstance.updateViewBox(\n {\n x1: 0,\n x2: viewBox.x2 - viewBox.x1,\n y1: 0,\n y2: viewBox.y2 - viewBox.y1\n },\n false,\n false\n );\n // console.log(viewBox);\n\n const chartStage = activeChartInstance.getStage();\n chartStage.needRender = true;\n // chartStage.background = 'red';\n const matrix = chartNode.globalTransMatrix.clone();\n const stageMatrix = chartNode.stage.window.getViewBoxTransform().clone();\n // matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n chartStage.window.setViewBoxTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f\n );\n if (typeof dataId === 'string' || typeof dataId === 'number') {\n activeChartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n // 如果是组合图有series系列 需要组个设置数据 这里的data包括的单元格完整数据 需要根据key过滤\n for (const dataIdStr in dataId) {\n const dataIdAndField = dataId[dataIdStr];\n const series = spec.series.find((item: any) => item?.data?.id === dataIdStr);\n dataBatch.push({\n id: dataIdStr,\n values: dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? [],\n fields: series?.data?.fields\n });\n if (!activeChartInstance.updateFullDataSync) {\n activeChartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n activeChartInstance.updateFullDataSync?.(dataBatch);\n }\n return activeChartInstance;\n }\n }\n /** 替换某个单元格图表的缓存图片 */\n replaceChartCacheImage(cellHeaderPaths: IPivotTableCellHeaderPaths, chartInstance: any) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n const cellGroup = this.scenegraph.getCell(cellAddr.col, cellAddr.row);\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n cacheStageCanvas(chartInstance.getStage(), chartNode);\n }\n }\n _getDimensionSortArray(): string[] | undefined {\n if (this.options?.axes?.length) {\n const dimensionAxisOrient = this.options.indicatorsAsCol ? 'left' : 'bottom';\n const dimensionAxisOption = this.options.axes.find(axis => {\n if (axis.orient === dimensionAxisOrient) {\n return true;\n }\n return false;\n });\n if (dimensionAxisOption && isArray((dimensionAxisOption as any).domain)) {\n return (dimensionAxisOption as any).domain;\n }\n }\n return undefined;\n }\n\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param sort\n */\n setRecords(records: Array<any>): void {\n this.internalProps.layoutMap.release();\n clearChartRenderQueue();\n this.scenegraph.updateChartState(null, undefined);\n this.scenegraph.deactivateChart(-1, -1, true);\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.options.records = this.internalProps.records = records;\n const options = this.options;\n const internalProps = this.internalProps;\n\n this.dataset.setRecords(records);\n let columnDimensionTree;\n let rowDimensionTree;\n if (options.columnTree) {\n columnDimensionTree = internalProps.layoutMap.columnDimensionTree;\n } else {\n columnDimensionTree = new DimensionTree(\n (this.dataset.colHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n if (options.rowTree) {\n rowDimensionTree = internalProps.layoutMap.rowDimensionTree;\n } else {\n rowDimensionTree = new DimensionTree(\n (this.dataset.rowHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset, columnDimensionTree, rowDimensionTree);\n\n // 更新表头\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.clearCellStyleCache();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n this.eventManager.updateEventBinder();\n }\n\n _hasCustomRenderOrLayout() {\n if (this.options.customRender) {\n return true;\n }\n const { columnsDefine, rowsDefine, indicatorsDefine } = this.internalProps.layoutMap;\n for (let i = 0; i < columnsDefine.length; i++) {\n const columnDefine = columnsDefine[i];\n if (typeof columnDefine !== 'string' && (columnDefine.headerCustomLayout || columnDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < rowsDefine.length; i++) {\n const rowDefine = rowsDefine[i];\n if (typeof rowDefine !== 'string' && (rowDefine.headerCustomLayout || rowDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < indicatorsDefine.length; i++) {\n const indicatorDefine = indicatorsDefine[i];\n if (\n typeof indicatorDefine !== 'string' &&\n (indicatorDefine.customLayout ||\n indicatorDefine.headerCustomLayout ||\n indicatorDefine.customRender ||\n indicatorDefine.headerCustomRender)\n ) {\n return true;\n }\n }\n return false;\n }\n changeRecordOrder(source: number, target: number) {\n //\n }\n /** 获取列头树结构 */\n getLayoutColumnTree(): LayouTreeNode[] {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutColumnTree();\n }\n /** 获取表格列头树形结构的占位的总节点数 */\n getLayoutColumnTreeCount(): number {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutColumnTreeCount();\n }\n /** 获取行头树结构 */\n getLayoutRowTree(): LayouTreeNode[] {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutRowTree();\n }\n /** 获取表格行头树形结构的占位的总节点数 */\n getLayoutRowTreeCount(): number {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutRowTreeCount();\n }\n /**\n * 根据行列号获取表头tree节点,包含了用户在自定义树rowTree及columnTree树上的自定义属性(也是内部布局树的节点,获取后请不要随意修改)\n * @param col\n * @param row\n * @returns\n */\n getCellHeaderTreeNodes(col: number, row: number): ICellHeaderPaths {\n const layoutMap = this.internalProps.layoutMap;\n const headerNodes = layoutMap.getCellHeaderPathsWithTreeNode(col, row);\n return headerNodes;\n }\n disableTooltipToAllChartInstances() {\n //将所有的图表实例调用一下disableDimensionHover 以防止在brush过程中显示tooltip。再用户清空brush状态时恢复\n disableTooltipToAllChartInstances();\n }\n enableTooltipToAllChartInstances() {\n //将所有的图表实例调用一下enableDimensionHover 以防止在brush过程中显示tooltip。再用户清空brush状态时恢复\n enableTooltipToAllChartInstances();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/PivotChart.ts"],"names":[],"mappings":"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","file":"PivotChart.js","sourcesContent":["import type {\n FieldData,\n FieldDef,\n FieldFormat,\n PivotTableAPI,\n SortRules,\n PivotSortState,\n CellAddress,\n ICellHeaderPaths,\n DropDownMenuEventInfo,\n FieldKeyDef,\n IHeaderTreeDefine,\n IDimensionInfo,\n SortOrder,\n IIndicator,\n PivotChartConstructorOptions,\n CollectValueBy,\n AggregationRules,\n AggregationRule,\n AnyFunction,\n FilterRules,\n IPivotTableCellHeaderPaths,\n PivotChartAPI\n} from './ts-types';\nimport { AggregationType } from './ts-types';\nimport type { HierarchyState } from './ts-types';\nimport { getField } from './data/DataSource';\nimport { PivotHeaderLayoutMap } from './layout/pivot-header-layout';\nimport { PIVOT_CHART_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\nimport { cellInRange, emptyFn } from './tools/helper';\nimport { Dataset } from './dataset/dataset';\nimport { _setDataSource, parseMarkLineGetExtendRange } from './core/tableHelper';\nimport { BaseTable } from './core/BaseTable';\nimport type { BaseTableAPI, HeaderData, PivotChartProtected } from './ts-types/base-table';\nimport type { IChartColumnIndicator } from './ts-types/pivot-table/indicator/chart-indicator';\nimport type { Chart } from './scenegraph/graphic/chart';\nimport {\n clearCellChartCacheImage,\n clearChartCacheImage,\n updateChartData\n} from './scenegraph/refresh-node/update-chart';\nimport type { ITableAxisOption } from './ts-types/component/axis';\nimport { cloneDeep, isArray, isNumber } from '@visactor/vutils';\nimport type { DiscreteLegend } from './vrender';\nimport type { ITitleComponent } from './components/title/title';\nimport { Env } from './tools/env';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nimport type { IndicatorData } from './ts-types/list-table/layout-map/api';\nimport { cloneDeepSpec } from '@visactor/vutils-extension';\nimport type { ITreeLayoutHeadNode } from './layout/tree-helper';\nimport { DimensionTree, type LayouTreeNode } from './layout/tree-helper';\nimport { IndicatorDimensionKeyPlaceholder } from './tools/global';\nimport { checkHasCartesianChart } from './layout/chart-helper/get-chart-spec';\nimport { supplementIndicatorNodesForCustomTree } from './layout/layout-helper';\nimport type { IEmptyTipComponent } from './components/empty-tip/empty-tip';\nimport { Factory } from './core/factory';\nimport {\n registerAxis,\n registerEmptyTip,\n registerLegend,\n registerMenu,\n registerTitle,\n registerTooltip,\n registerAnimation\n} from './components';\nimport {\n registerChartCell,\n registerCheckboxCell,\n registerImageCell,\n registerProgressBarCell,\n registerRadioCell,\n registerSparkLineCell,\n registerTextCell,\n registerVideoCell\n} from './scenegraph/group-creater/cell-type';\nimport { hasLinearAxis } from './layout/chart-helper/get-axis-config';\nimport { cacheStageCanvas, clearChartRenderQueue } from './scenegraph/graphic/contributions/chart-render-helper';\nimport {\n disableTooltipToAllChartInstances,\n enableTooltipToAllChartInstances\n} from './scenegraph/graphic/active-cell-chart-list';\n\nregisterAxis();\nregisterEmptyTip();\nregisterLegend();\nregisterMenu();\nregisterTitle();\nregisterTooltip();\nregisterAnimation();\nregisterChartCell();\nregisterCheckboxCell();\nregisterImageCell();\nregisterProgressBarCell();\nregisterRadioCell();\nregisterSparkLineCell();\nregisterTextCell();\nregisterVideoCell();\n\nexport class PivotChart extends BaseTable implements PivotChartAPI {\n layoutNodeId: { seqId: number } = { seqId: 0 };\n declare internalProps: PivotChartProtected;\n declare options: PivotChartConstructorOptions;\n pivotSortState: PivotSortState[];\n\n dataset?: Dataset; //数据处理对象 开启数据透视分析的表\n //记录被点击选中图元\n _selectedDataItemsInChart: any[] = [];\n _selectedDataMode: 'click' | 'brush' = 'click';\n //记录轴坐标被选中维度\n _selectedDimensionInChart: { key: string; value: string }[] = [];\n _chartEventMap: Record<string, { query?: any; callback: AnyFunction }[]> = {};\n\n _axes: ITableAxisOption[];\n constructor(options: PivotChartConstructorOptions);\n constructor(container: HTMLElement, options: PivotChartConstructorOptions);\n constructor(container?: HTMLElement | PivotChartConstructorOptions, options?: PivotChartConstructorOptions) {\n super(container as HTMLElement, options);\n options = this.options;\n if ((options as any).layout) {\n //TODO hack处理之前的demo都是定义到layout上的 所以这里直接并到options中\n Object.assign(options, (options as any).layout);\n }\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = cloneDeepSpec(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n this.internalProps.records = options.records;\n\n this.setCustomStateNameToSpec();\n this.internalProps.columnResizeType = options.resize?.columnResizeType ?? options.columnResizeType ?? 'column';\n this.internalProps.rowResizeType = options.resize?.rowResizeType ?? options.rowResizeType ?? 'row';\n this.internalProps.dataConfig = { isPivotChart: true };\n this.internalProps.columnWidthConfig = options.columnWidthConfig;\n this.internalProps.columnWidthConfigForRowHeader = options.columnWidthConfigForRowHeader;\n this._axes = isArray(options.axes) ? options.axes : [];\n\n let columnDimensionTree;\n let rowDimensionTree;\n if (options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.internalProps.columnTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.columnTree,\n options.indicators\n );\n }\n columnDimensionTree = new DimensionTree(\n (this.internalProps.columnTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n if (options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.internalProps.rowTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.rowTree,\n options.indicators\n );\n }\n rowDimensionTree = new DimensionTree(\n (this.internalProps.rowTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n const rowKeys = rowDimensionTree?.dimensionKeys?.count\n ? rowDimensionTree.dimensionKeys.valueArr()\n : options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys = columnDimensionTree?.dimensionKeys?.count\n ? columnDimensionTree.dimensionKeys.valueArr()\n : options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records,\n undefined,\n undefined,\n this.internalProps.columnTree, //传递自定义树形结构会在dataset中补充指标节点children\n this.internalProps.rowTree,\n true\n );\n if (this.options.indicatorsAsCol && checkHasCartesianChart(this.internalProps.indicators)) {\n const supplyAxisNode = (nodes: IHeaderTreeDefine[]) => {\n nodes.forEach((node: IHeaderTreeDefine) => {\n if ((node.children as IHeaderTreeDefine[])?.length) {\n supplyAxisNode(node.children as IHeaderTreeDefine[]);\n } else {\n // 在指标在列上的透视图中,主指标轴(离散轴)显示在左侧,因此需要在原先行表头的布局中最右侧加入一列,用来显示坐标轴\n // 加入的这一列dimensionKey配置为'axis',在后续行列计算维度时需要注意,这一列是为了显示坐标轴加入的,不在行列维度信息内\n node.children = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n });\n };\n if (this.dataset.rowHeaderTree?.length) {\n supplyAxisNode(this.dataset.rowHeaderTree);\n } else {\n this.dataset.rowHeaderTree = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n }\n if (!options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.dataset.colHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.colHeaderTree,\n options.indicators\n );\n }\n }\n if (!options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.dataset.rowHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.rowHeaderTree,\n options.indicators\n );\n }\n }\n columnDimensionTree = new DimensionTree(\n (this.dataset.colHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n rowDimensionTree = new DimensionTree(\n (this.dataset.rowHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n\n this.internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset, columnDimensionTree, rowDimensionTree);\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n this.internalProps.title = new Title(options.title, this);\n // this.scenegraph.resize();//下面有个resize了 所以这个可以去掉\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n if (this.isReleased) {\n return;\n }\n this.resize();\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n static get EVENT_TYPE(): typeof PIVOT_CHART_EVENT_TYPE {\n return PIVOT_CHART_EVENT_TYPE;\n }\n get pivotChartAxes() {\n return this._axes;\n }\n get recordsCount() {\n return this.records?.length;\n }\n\n isListTable(): false {\n return false;\n }\n isPivotTable(): true {\n return true;\n }\n isPivotChart(): true {\n return true;\n }\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.internalProps.layoutMap.indicatorsAsCol) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n if ((cellDefine as IndicatorData)?.disableColumnResize) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(\n options: PivotChartConstructorOptions,\n updateConfig: { clearColWidthCache?: boolean; clearRowHeightCache?: boolean } = {\n clearColWidthCache: true,\n clearRowHeightCache: true\n }\n ) {\n const internalProps = this.internalProps;\n //维护选中状态\n // const range = internalProps.selection.range; //保留原有单元格选中状态\n super.updateOption(options, updateConfig);\n this.scenegraph.updateChartState(null, undefined);\n this.scenegraph.deactivateChart(-1, -1, true);\n this.layoutNodeId = { seqId: 0 };\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = !options.indicators?.length ? [] : cloneDeepSpec(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n options.records && (this.internalProps.records = options.records);\n this.setCustomStateNameToSpec();\n this._selectedDataItemsInChart = [];\n // 更新protectedSpace\n internalProps.columnResizeType = options.resize?.columnResizeType ?? options.columnResizeType ?? 'column';\n internalProps.rowResizeType = options.resize?.rowResizeType ?? options.rowResizeType ?? 'row';\n internalProps.dataConfig = { isPivotChart: true };\n this.internalProps.columnWidthConfig = options.columnWidthConfig;\n this.internalProps.columnWidthConfigForRowHeader = options.columnWidthConfigForRowHeader;\n this._axes = isArray(options.axes) ? options.axes : [];\n\n //TODO 这里需要加上判断 dataConfig是否有配置变化\n // if (options.rows || options.columns) {\n\n let columnDimensionTree;\n let rowDimensionTree;\n if (options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.internalProps.columnTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.columnTree,\n options.indicators\n );\n }\n columnDimensionTree = new DimensionTree(\n (this.internalProps.columnTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n if (options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.internalProps.rowTree = supplementIndicatorNodesForCustomTree(\n this.internalProps.rowTree,\n options.indicators\n );\n }\n rowDimensionTree = new DimensionTree(\n (this.internalProps.rowTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n const rowKeys = rowDimensionTree?.dimensionKeys?.count\n ? rowDimensionTree.dimensionKeys.valueArr()\n : options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys = columnDimensionTree?.dimensionKeys?.count\n ? columnDimensionTree.dimensionKeys.valueArr()\n : options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records ?? this.internalProps.records,\n undefined,\n undefined,\n this.internalProps.columnTree,\n this.internalProps.rowTree,\n true\n );\n if (this.options.indicatorsAsCol && checkHasCartesianChart(this.internalProps.indicators)) {\n const supplyAxisNode = (nodes: IHeaderTreeDefine[]) => {\n nodes.forEach((node: IHeaderTreeDefine) => {\n if ((node.children as IHeaderTreeDefine[])?.length) {\n supplyAxisNode(node.children as IHeaderTreeDefine[]);\n } else {\n // 在指标在列上的透视图中,主指标轴(离散轴)显示在左侧,因此需要在原先行表头的布局中最右侧加入一列,用来显示坐标轴\n // 加入的这一列dimensionKey配置为'axis',在后续行列计算维度时需要注意,这一列是为了显示坐标轴加入的,不在行列维度信息内\n node.children = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n });\n };\n if (this.dataset.rowHeaderTree?.length) {\n supplyAxisNode(this.dataset.rowHeaderTree);\n } else {\n this.dataset.rowHeaderTree = [\n {\n dimensionKey: 'axis',\n value: ''\n }\n ];\n }\n }\n\n if (!options.columnTree) {\n if (options.indicatorsAsCol !== false) {\n this.dataset.colHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.colHeaderTree,\n options.indicators\n );\n }\n }\n\n if (!options.rowTree) {\n if (options.indicatorsAsCol === false) {\n this.dataset.rowHeaderTree = supplementIndicatorNodesForCustomTree(\n this.dataset.rowHeaderTree,\n options.indicators\n );\n }\n }\n columnDimensionTree = new DimensionTree(\n (this.dataset.colHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n\n rowDimensionTree = new DimensionTree(\n (this.dataset.rowHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset, columnDimensionTree, rowDimensionTree);\n // else {\n // console.warn('VTable Warn: your option is invalid, please check it!');\n // return this;\n // }\n\n // 更新表头\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n // if (options.dataSource) {\n // _setDataSource(this, options.dataSource);\n // }else\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n this.internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.UPDATED, null);\n }, 0);\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n updatePagination() {\n //void\n }\n refreshHeader(): void {\n this.setMinMaxLimitWidth(true);\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount = layoutMap.rowCount ?? 0;\n // table.frozenColCount = layoutMap.rowHeaderLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n table.internalProps.frozenColCount = layoutMap.rowHeaderLevelCount ?? 0;\n // 不能使用frozenRowCount setter 因为会把options.frozenRowCount赋值\n table._setFrozenRowCount(Math.max(layoutMap.headerLevelCount, this.options.frozenRowCount ?? 0));\n if (table.bottomFrozenRowCount !== (layoutMap?.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = layoutMap?.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (layoutMap?.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = layoutMap?.rightFrozenColCount ?? 0;\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n }\n protected _getSortFuncFromHeaderOption(\n columns: undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined {\n return undefined;\n }\n /**\n * 将现有tree中的的hierarchyState同步到rows透视树中\n * @param sourceNode\n * @param targetNode\n */\n private syncHierarchyState(sourceNode: any, targetNode: IHeaderTreeDefine) {\n if (sourceNode.value === targetNode.value && sourceNode.dimensionKey === targetNode.dimensionKey) {\n targetNode.hierarchyState =\n targetNode.hierarchyState ?? (targetNode?.children ? sourceNode.hierarchyState : undefined);\n (targetNode?.children as IHeaderTreeDefine[])?.forEach((targetChildNode: IHeaderTreeDefine, index: number) => {\n if (sourceNode?.children?.[index] && targetChildNode) {\n this.syncHierarchyState(sourceNode.children[index], targetChildNode);\n }\n });\n }\n }\n getRecordShowIndexByCell(col: number, row: number): number {\n return undefined;\n }\n\n getTableIndexByRecordIndex(recordIndex: number): number {\n return undefined;\n }\n getTableIndexByField(field: FieldDef): number {\n return undefined;\n }\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n return undefined;\n }\n getBodyIndexByRow(row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByRow(row);\n }\n getBodyIndexByCol(col: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByCol(col);\n }\n // getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n // if (field === null || field === undefined) {\n // return null;\n // }\n // const table = this;\n // if (table.internalProps.layoutMap.isHeader(col, row)) {\n // return null;\n // }\n // const rowIndex = this.getBodyIndexByRow(row);\n // const colIndex = this.getBodyIndexByCol(col);\n // const dataValue = table.dataSource?.getField(rowIndex, colIndex, col, row, this);\n // if (typeof field !== 'string') {\n // //field为函数format\n // const cellHeaderPaths = table.internalProps.layoutMap.getCellHeaderPaths(col, row);\n // return getField({ dataValue, ...cellHeaderPaths }, field, col, row, this, emptyFn as any);\n // }\n // return dataValue;\n // }\n\n getCellValue(col: number, row: number, skipCustomMerge?: boolean): FieldData {\n if (!skipCustomMerge) {\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n }\n if (this.internalProps.layoutMap.isHeader(col, row)) {\n if (\n this.internalProps.layoutMap.isBottomFrozenRow(col, row) ||\n this.internalProps.layoutMap.isRightFrozenColumn(col, row)\n ) {\n //针对底部和右侧冻结的轴单元格的值做处理 如果有轴这里会显示轴 如果没有则显示这里获取到的值\n const indicatorKeys = this.internalProps.layoutMap.getIndicatorKeyInChartSpec(col, row);\n let indicatorInfo: IIndicator;\n indicatorKeys?.forEach(key => {\n const info = this.internalProps.layoutMap.getIndicatorInfo(key);\n if (info) {\n indicatorInfo = info;\n }\n });\n return indicatorInfo?.title ?? indicatorInfo?.indicatorKey ?? '';\n }\n const { title, fieldFormat } = this.internalProps.layoutMap.getHeader(col, row) as HeaderData;\n return typeof fieldFormat === 'function' ? fieldFormat(title, col, row, this as BaseTableAPI) : title;\n }\n if (this.dataset) {\n let indicatorPosition: { position: 'col' | 'row'; index?: number };\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any, index: number) => {\n if (colPath.indicatorKey) {\n indicatorPosition = {\n position: 'col',\n index\n };\n }\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any, index: number) => {\n if (rowPath.indicatorKey) {\n indicatorPosition = {\n position: 'row',\n index\n };\n }\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n // !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n // this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n rowKeys,\n colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row),\n true,\n indicatorPosition\n );\n return aggregator.value ? aggregator.value() : undefined;\n }\n const { fieldFormat } = this.internalProps.layoutMap.getBody(col, row) as IndicatorData;\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n if (typeof fieldFormat === 'function') {\n const fieldResult = fieldFormat(dataValue, col, row, this as BaseTableAPI);\n return fieldResult;\n }\n return dataValue;\n // const { field, fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n // return this.getFieldData(fieldFormat || field, col, row);\n }\n\n getCellOriginValue(col: number, row: number): FieldData {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n if (\n this.internalProps.layoutMap.isBottomFrozenRow(col, row) ||\n this.internalProps.layoutMap.isRightFrozenColumn(col, row)\n ) {\n //针对底部和右侧冻结的轴单元格的值做处理 如果有轴这里会显示轴 如果没有则显示这里获取到的值\n const indicatorKeys = this.internalProps.layoutMap.getIndicatorKeyInChartSpec(col, row);\n let indicatorInfo: IIndicator;\n indicatorKeys?.forEach(key => {\n const info = this.internalProps.layoutMap.getIndicatorInfo(key);\n if (info) {\n indicatorInfo = info;\n }\n });\n return indicatorInfo?.title ?? indicatorInfo?.indicatorKey ?? '';\n }\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n if (this.dataset) {\n let indicatorPosition: { position: 'col' | 'row'; index?: number };\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any, index: number) => {\n if (colPath.indicatorKey) {\n indicatorPosition = {\n position: 'col',\n index\n };\n }\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any, index: number) => {\n if (rowPath.indicatorKey) {\n indicatorPosition = {\n position: 'row',\n index\n };\n }\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n // !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n // this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n rowKeys,\n colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row),\n true,\n indicatorPosition\n );\n return aggregator.value ? aggregator.value() : undefined;\n // return ''\n }\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n return dataValue;\n // const { field } = table.internalProps.layoutMap.getBody(col, row);\n // return table.getFieldData(field, col, row);\n }\n\n getCellRawValue(col: number, row: number) {\n return this.getCellOriginValue(col, row);\n }\n\n // 获取原始数据\n getCellOriginRecord(col: number, row: number) {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return undefined;\n }\n if (this.dataset) {\n let indicatorPosition: { position: 'col' | 'row'; index?: number };\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any, index: number) => {\n if (colPath.indicatorKey) {\n indicatorPosition = {\n position: 'col',\n index\n };\n }\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any, index: number) => {\n if (rowPath.indicatorKey) {\n indicatorPosition = {\n position: 'row',\n index\n };\n }\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n // !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n // this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n rowKeys,\n colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row),\n true,\n indicatorPosition\n );\n return aggregator.records;\n // return ''\n }\n return undefined;\n }\n\n getCellRawRecord(col: number, row: number) {\n return this.getCellOriginRecord(col, row);\n }\n\n getPivotSortState(col: number, row: number): SortOrder {\n if (!this.pivotSortState) {\n return undefined;\n }\n const cellRange = this.getCellRange(col, row);\n for (let i = 0; i < this.pivotSortState.length; i++) {\n const { col: sortCol, row: sortRow, order } = this.pivotSortState[i];\n\n if (cellInRange(cellRange, sortCol, sortRow)) {\n return order;\n }\n }\n return undefined;\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n _moveHeaderPosition(source: CellAddress, target: CellAddress) {\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = (this.internalProps.layoutMap as PivotHeaderLayoutMap).moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n for (let row = 0; row < (this.internalProps.records as Array<any>).length; row++) {\n const sourceColumns = (this.internalProps.records[row] as unknown as number[]).splice(\n moveContext.sourceIndex - this.rowHeaderLevelCount,\n moveContext.sourceSize\n );\n sourceColumns.unshift((moveContext.targetIndex as any) - this.rowHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records[row] as unknown as number[], sourceColumns);\n }\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.sourceSize);\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n this.setMinMaxLimitWidth();\n } else if (moveContext.moveType === 'row') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n const sourceRows = (this.internalProps.records as unknown as number[]).splice(\n moveContext.sourceIndex - this.columnHeaderLevelCount,\n moveContext.sourceSize\n );\n sourceRows.unshift((moveContext.targetIndex as any) - this.columnHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records, sourceRows);\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.rowHeightsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.sourceSize);\n }\n return moveContext;\n }\n return null;\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n */\n toggleHierarchyState(col: number, row: number, recalculateColWidths: boolean = true) {\n //nothing\n }\n /**\n * 通过表头的维度值路径来计算单元格位置 getCellAddressByHeaderPaths接口更强大一些 不限表头 不限参数格式\n * @param dimensionPaths\n * @returns\n */\n getHeaderCellAddressByPath(dimensionPaths: IDimensionInfo[]): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotCellAdress(dimensionPaths);\n return cellAddress;\n }\n /**\n * 通过表头的维度值路径来计算单元格位置\n * @param dimensionPaths\n * @returns\n */\n getCellAddressByHeaderPaths(\n dimensionPaths: // | {\n // colHeaderPaths: IDimensionInfo[];\n // rowHeaderPaths: IDimensionInfo[];\n // }\n IPivotTableCellHeaderPaths | IDimensionInfo[]\n ): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getCellAdressByHeaderPath(\n dimensionPaths\n );\n return cellAddress;\n }\n\n /**\n * 通过传入的坐标 获取该位置当前单元格的维度路径;\n * @param coordinate 从body左上角为原点 coordinate为偏移距离 去计算单元格的headerPath;\n * 如不传coordinate坐标则按取body中左上角第一个单元格的维度路径\n * @returns\n */\n getHeaderPathByXY(coordinate?: { x: number; y: number }): ICellHeaderPaths {\n let cellAddr;\n if (coordinate) {\n cellAddr = this.getCellAt(\n coordinate.x + this.getFrozenColsWidth() + this.scrollLeft + 1,\n coordinate.y + this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n } else {\n cellAddr = this.getCellAt(\n this.getFrozenColsWidth() + this.scrollLeft + 1,\n this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n }\n const cellHeaderPaths = this.internalProps.layoutMap.getCellHeaderPaths(cellAddr.col, cellAddr.row);\n return cellHeaderPaths;\n }\n getHierarchyState(col: number, row: number): HierarchyState {\n return (this._getHeaderLayoutMap(col, row) as HeaderData)?.hierarchyState;\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const dimensionInfos = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotDimensionInfo(col, row);\n const result: DropDownMenuEventInfo = {\n dimensionKey: dimensionInfos[dimensionInfos.length - 1].dimensionKey,\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row),\n isPivotCorner: this.isCornerHeader(col, row),\n event: undefined\n };\n return result;\n }\n /**\n * 根据用户配置 生成 收集维度值collectValuesBy 的配置 传给dataset用\n * 这个收集规则的逻辑是按照正常使用方式:\n * 指标显示在行表头indicatorsAsCol=false时,图表yField为指标值,xField为维度值(考虑stack)direction为默认值'vertical';\n * 指标显示在列表头indicatorsAsCol=true时,图表xField为指标值,yField为维度值(考虑stack)direction为'horizontal';\n * @param columnKeys\n * @param rowKeys\n * @returns\n */\n private _generateCollectValuesConfig(columnKeys: string[], rowKeys: string[]): Record<string, CollectValueBy> {\n columnKeys = columnKeys.filter(key => key !== IndicatorDimensionKeyPlaceholder);\n rowKeys = rowKeys.filter(key => key !== IndicatorDimensionKeyPlaceholder);\n const indicators = this.internalProps.indicators;\n const collectValuesBy: Record<string, CollectValueBy> = {};\n\n for (let i = 0, len = indicators?.length; i < len; i++) {\n if (typeof indicators[i] !== 'string' && (indicators[i] as IChartColumnIndicator).chartSpec) {\n if (\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'pie' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'rose' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'funnel' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'radar' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'gauge' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'wordCloud' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'sunburst' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'treemap' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'sankey' ||\n (indicators[i] as IChartColumnIndicator).chartSpec?.type === 'circlePacking'\n ) {\n continue;\n }\n const indicatorDefine = indicators[i] as IIndicator;\n const indicatorSpec = (indicatorDefine as IChartColumnIndicator).chartSpec;\n\n if (this.options.indicatorsAsCol === false) {\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n // 收集指标值的范围\n if (indicatorSpec?.type !== 'heatmap') {\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: rowKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n indicatorSpec.type === 'histogram'\n ? columnKeys.concat(indicatorSpec?.xField, indicatorSpec?.x2Field)\n : indicatorSpec?.stack && columnKeys.concat(indicatorSpec?.xField)\n };\n }\n if (indicatorSpec.series) {\n indicatorSpec.series.forEach((chartSeries: any) => {\n const xField = typeof chartSeries.xField === 'string' ? chartSeries.xField : chartSeries.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type: chartSeries.direction !== 'horizontal' ? 'xField' : undefined,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', true),\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ?? indicatorSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n\n const yField = chartSeries.yField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[yField] = {\n by: rowKeys,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', false),\n sumBy: chartSeries.stack && columnKeys.concat(chartSeries?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ?? indicatorSpec?.data?.fields?.[yField]?.domain\n : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine)\n };\n });\n } else {\n const xField =\n indicatorSpec.type === 'histogram' //特殊处理histogram直方图xField和x2Field\n ? indicatorSpec.x2Field\n : typeof indicatorSpec.xField === 'string'\n ? indicatorSpec.xField\n : indicatorSpec.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type: indicatorSpec.direction !== 'horizontal' ? 'xField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', true),\n sortBy:\n indicatorSpec.direction !== 'horizontal' ? indicatorSpec?.data?.fields?.[xField]?.domain : undefined\n };\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n //下面这个收集的值 应该是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同\n const yField = indicatorSpec.yField ?? indicatorSpec.maxField;\n collectValuesBy[yField] = {\n by: rowKeys,\n type: indicatorSpec.direction !== 'horizontal' ? 'yField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', false), //indicatorSpec.direction !== 'horizontal', // direction默认为'vertical'\n sumBy:\n indicatorSpec.type === 'histogram'\n ? columnKeys.concat(indicatorSpec?.xField, indicatorSpec?.x2Field)\n : indicatorSpec.stack && columnKeys.concat(indicatorSpec?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n indicatorSpec.direction === 'horizontal' ? indicatorSpec?.data?.fields?.[yField]?.domain : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine),\n considerFields:\n indicatorSpec?.type === 'boxPlot'\n ? [indicatorSpec.maxField, indicatorSpec.minField, indicatorSpec.outliersField]\n : undefined\n };\n }\n } else {\n const indicatorDefine = indicators[i] as IIndicator;\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n // 收集指标值的范围\n if (indicatorSpec?.type !== 'heatmap') {\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: columnKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n indicatorSpec.type === 'histogram'\n ? rowKeys.concat(indicatorSpec?.yField, indicatorSpec?.y2Field)\n : indicatorSpec?.stack && rowKeys.concat(indicatorSpec?.yField)\n };\n }\n if (indicatorSpec.series) {\n indicatorSpec.series.forEach((chartSeries: any) => {\n const yField = typeof chartSeries.yField === 'string' ? chartSeries.yField : chartSeries.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type: chartSeries.direction === 'horizontal' ? 'yField' : undefined,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', false),\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ?? indicatorSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n\n const xField = chartSeries.xField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[xField] = {\n by: columnKeys,\n range: hasLinearAxis(chartSeries, this._axes, chartSeries.direction === 'horizontal', true),\n sumBy: chartSeries.stack && rowKeys.concat(chartSeries?.yField),\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ?? indicatorSpec?.data?.fields?.[xField]?.domain\n : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine)\n };\n });\n } else {\n const yField =\n indicatorSpec.type === 'histogram' //特殊处理histogram直方图xField和x2Field\n ? indicatorSpec.y2Field\n : typeof indicatorSpec.yField === 'string'\n ? indicatorSpec.yField\n : indicatorSpec.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type: indicatorSpec.direction === 'horizontal' ? 'yField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', false),\n sortBy:\n indicatorSpec.direction === 'horizontal' ? indicatorSpec?.data?.fields?.[yField]?.domain : undefined\n };\n\n //明确指定 chartSpec.stack为true\n indicatorSpec?.stack !== false &&\n (indicatorSpec?.type === 'bar' || indicatorSpec?.type === 'area') &&\n (indicatorSpec.stack = true);\n //下面这个收集的值 是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同(heatmap情况除外)\n //特殊处理histogram直方图xField和x2Field\n const xField = indicatorSpec.xField ?? indicatorSpec.maxField;\n collectValuesBy[xField] = {\n by: columnKeys,\n type: indicatorSpec.direction === 'horizontal' ? 'xField' : undefined,\n range: hasLinearAxis(indicatorSpec, this._axes, indicatorSpec.direction === 'horizontal', true),\n sumBy:\n indicatorSpec.type === 'histogram'\n ? rowKeys.concat(indicatorSpec?.yField, indicatorSpec?.y2Field)\n : indicatorSpec.stack && rowKeys.concat(indicatorSpec?.yField),\n sortBy:\n indicatorSpec.direction !== 'horizontal' ? indicatorSpec?.data?.fields?.[xField]?.domain : undefined,\n extendRange: parseMarkLineGetExtendRange(indicatorSpec.markLine),\n considerFields:\n indicatorSpec?.type === 'boxPlot'\n ? [indicatorSpec.maxField, indicatorSpec.minField, indicatorSpec.outliersField]\n : undefined\n };\n }\n }\n }\n }\n\n return collectValuesBy;\n }\n // private _generateAggregationRules(indicatorKeys: string[]): AggregationRules {\n // return indicatorKeys.map((indicatorKey: string) => {\n // return {\n // indicatorKey, //field转为指标key\n // field: indicatorKey, //指标依据字段\n // aggregationType: AggregationType.RECORD //计算类型\n // };\n // });\n // }\n /**\n *\n * @param indicatorFromChartSpec 是否需要考虑chartSpec中的yField或者xField分析作为指标来分组数据\n * @returns\n */\n private _generateAggregationRules() {\n const aggregationRules: AggregationRules = [];\n // indicatorFromChartSpec = true;\n this.internalProps.indicators?.forEach((indicator: IIndicator | string) => {\n if (typeof indicator === 'string') {\n aggregationRules.push({\n indicatorKey: indicator, //field转为指标key\n field: indicator, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n } as AggregationRule<AggregationType.RECORD>);\n } else {\n if ((indicator as IChartColumnIndicator).chartSpec?.series) {\n // 如果chartSpec配置了组合图 series 则需要考虑 series中存在的多个指标\n const fields: string[] = [];\n (indicator as IChartColumnIndicator).chartSpec?.series.forEach((seriesSpec: any) => {\n const seriesField = this.options.indicatorsAsCol === false ? seriesSpec.yField : seriesSpec.xField;\n if (fields.indexOf(seriesField) === -1) {\n fields.push(seriesField);\n }\n });\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: fields, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n } else {\n const field =\n this.options.indicatorsAsCol === false\n ? (indicator as IChartColumnIndicator).chartSpec.yField\n : (indicator as IChartColumnIndicator).chartSpec.xField;\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: field ?? indicator.indicatorKey, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n }\n }\n });\n\n return aggregationRules;\n }\n /** 将spec中的 selected和selected_reverse 更名为vtable_selected和vtable_selected_reverse */\n private setCustomStateNameToSpec() {\n /** 修改设置的selected 和 dselected_reverse的名字加前缀vtable */\n const setCustomStateName = (spec: any) => {\n if (spec.bar?.state?.selected) {\n spec.bar.state.vtable_selected = spec.bar.state.selected;\n spec.bar.state.vtable_selected_reverse = spec.bar.state.selected_reverse;\n delete spec.bar.state.selected;\n delete spec.bar.state.selected_reverse;\n }\n if (spec.point?.state?.selected) {\n spec.point.state.vtable_selected = spec.point.state.selected;\n spec.point.state.vtable_selected_reverse = spec.point.state.selected_reverse;\n delete spec.point.state.selected;\n delete spec.point.state.selected_reverse;\n }\n if (spec.line?.state?.selected) {\n spec.line.state.vtable_selected = spec.line.state.selected;\n spec.line.state.vtable_selected_reverse = spec.line.state.selected_reverse;\n delete spec.line.state.selected;\n delete spec.line.state.selected_reverse;\n }\n if (spec.area?.state?.selected) {\n spec.area.state.vtable_selected = spec.area.state.selected;\n spec.area.state.vtable_selected_reverse = spec.area.state.selected_reverse;\n delete spec.area.state.selected;\n delete spec.area.state.selected_reverse;\n }\n if (spec.pie?.state?.selected) {\n spec.pie.state.vtable_selected = spec.pie.state.selected;\n spec.pie.state.vtable_selected_reverse = spec.pie.state.selected_reverse;\n delete spec.pie.state.selected;\n delete spec.pie.state.selected_reverse;\n }\n };\n this.internalProps.indicators?.forEach((indicator: string | IIndicator) => {\n if ((indicator as IChartColumnIndicator).chartSpec) {\n const spec = (indicator as IChartColumnIndicator).chartSpec;\n if (spec.series) {\n spec.series.forEach((series: any) => {\n setCustomStateName(series);\n });\n } else {\n setCustomStateName(spec);\n }\n }\n });\n }\n\n /** 更新数据过滤规则,适用场景:点击图例项后 更新过滤规则 来更新图表 */\n updateFilterRules(filterRules: FilterRules) {\n // 使用节流函数包装实际的更新逻辑\n this._throttledUpdateFilterRules(filterRules);\n }\n\n //#region 节流相关变量\n private _throttleTimer: number | null = null;\n private _latestFilterRules: FilterRules | null = null;\n\n /**\n * 实际执行过滤规则更新的节流方法\n * @private\n */\n private _throttledUpdateFilterRules(filterRules: FilterRules): void {\n // 始终保存最新的过滤规则\n this._latestFilterRules = filterRules;\n\n // 如果没有定时器在运行,立即执行一次更新\n if (this._throttleTimer === null) {\n this._executeFilterUpdate(filterRules);\n\n // 设置节流定时器\n this._throttleTimer = window.setTimeout(() => {\n // 定时器结束时,如果有新的过滤规则,再次执行更新\n if (this._latestFilterRules !== filterRules) {\n this._executeFilterUpdate(this._latestFilterRules as FilterRules);\n }\n this._throttleTimer = null;\n }, 200);\n }\n }\n //#endregion\n /**\n * 执行实际的过滤规则更新操作\n * @private\n */\n private _executeFilterUpdate(filterRules: FilterRules): void {\n this.internalProps.dataConfig.filterRules = filterRules;\n this.dataset.updateFilterRules(filterRules);\n clearChartCacheImage(this.scenegraph);\n updateChartData(this.scenegraph);\n this.render();\n }\n clearChartCacheImage(col?: number, row?: number) {\n if (isNumber(col) && isNumber(row)) {\n clearCellChartCacheImage(col, row, this.scenegraph);\n } else {\n clearChartCacheImage(this.scenegraph);\n }\n }\n /** 获取图例的选择状态 */\n getLegendSelected() {\n const selected: any[] = [];\n this.internalProps.legends?.forEach(legend => {\n const data = (legend.legendComponent as any)._getSelectedLegends().map((d: any) => d.label);\n selected.push(...data);\n });\n return selected;\n }\n setLegendSelected(selectedData: (string | number)[]) {\n this.internalProps.legends?.forEach(legend => {\n (legend.legendComponent as DiscreteLegend).setSelected(selectedData);\n });\n // this.updateFilterRules([{ filterKey: '20001', filteredValues: selectedData }]);\n // this.invalidate();\n }\n /**\n * 获取图表上某一个图元的位置\n * @param datum 图元对应的数据\n * @param cellHeaderPaths 单元格的header路径\n * @returns 图元在整个表格上的坐标位置(相对表格左上角视觉坐标)\n */\n getChartDatumPosition(datum: any, cellHeaderPaths: IPivotTableCellHeaderPaths): { x: number; y: number } {\n const { chartInstance, bounds } = this.getChartInstance(cellHeaderPaths);\n if (chartInstance) {\n const position = chartInstance.convertDatumToPosition(datum);\n return position ? { x: Math.round(position.x + bounds.x1), y: Math.round(position.y + bounds.y1) } : null;\n }\n return null;\n }\n /** 获取某条数据所在的行列位置 */\n getCellAddressByRecord(record: any) {\n const rowHeaderPaths: IDimensionInfo[] = [];\n const colHeaderPaths: IDimensionInfo[] = [];\n const recordKeyMapToIndicatorKeys = {};\n const indicatorRecordKeys: (string | number)[] = [];\n this.dataset.dataConfig.aggregationRules.forEach(aggregationRule => {\n if (typeof aggregationRule.field === 'string') {\n recordKeyMapToIndicatorKeys[aggregationRule.field] = aggregationRule.indicatorKey;\n indicatorRecordKeys.push(aggregationRule.field);\n } else {\n for (let i = 0; i < aggregationRule.field.length; i++) {\n recordKeyMapToIndicatorKeys[aggregationRule.field[i]] = aggregationRule.indicatorKey;\n indicatorRecordKeys.push(aggregationRule.field[i]);\n }\n }\n });\n for (const key in record) {\n if (this.dataset.rows.indexOf(key) >= 0) {\n rowHeaderPaths.push({\n dimensionKey: key,\n value: record[key]\n });\n }\n if (this.dataset.columns.indexOf(key) >= 0) {\n colHeaderPaths.push({\n dimensionKey: key,\n value: record[key]\n });\n }\n if (indicatorRecordKeys.indexOf(key) >= 0) {\n if (this.dataset.indicatorsAsCol) {\n colHeaderPaths.push({\n indicatorKey: recordKeyMapToIndicatorKeys[key]\n });\n } else {\n rowHeaderPaths.push({\n indicatorKey: recordKeyMapToIndicatorKeys[key]\n });\n }\n }\n }\n return this.getCellAddressByHeaderPaths({\n rowHeaderPaths,\n colHeaderPaths,\n cellLocation: 'body'\n });\n }\n\n getChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n const cellPosition = this.getCellRelativeRect(cellAddr.col, cellAddr.row);\n const cellGroup = this.scenegraph.getCell(cellAddr.col, cellAddr.row);\n // let position;\n let chartInstance: any;\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n if (chartNode.attribute.chartInstance) {\n chartInstance = chartNode.attribute.chartInstance;\n const { dataId, data, axes, spec } = chartNode.attribute;\n const viewBox = chartNode.getViewBox();\n axes?.forEach((axis: any, index: number) => {\n if (axis.type === 'linear') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._domain = {\n // min: axis.range?.min ?? 0,\n // max: axis.range?.max ?? 0\n // };\n chartInstance.updateModelSpecSync(\n { type: 'axes', index },\n {\n min: axis.range?.min ?? 0,\n max: axis.range?.max ?? 0,\n tick: {\n tickMode: axis.tick?.tickMode\n }\n },\n true\n );\n } else if (axis.type === 'band') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._spec.domain = axis.domain.slice(0);\n // chartAxis.updateScaleDomain();\n chartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);\n }\n });\n\n chartInstance.updateViewBox(\n {\n x1: 0,\n x2: viewBox.x2 - viewBox.x1,\n y1: 0,\n y2: viewBox.y2 - viewBox.y1\n },\n false,\n false\n );\n // 拷贝的chart-render-helper.ts 的代码\n const chartStage = chartInstance.getStage();\n const matrix = chartNode.globalTransMatrix.clone();\n const stageMatrix = chartNode.stage.window.getViewBoxTransform();\n matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n chartStage.window.setViewBoxTransform &&\n chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\n // chartInstance.updateDataSync(dataId, data);\n if (typeof dataId === 'string' || typeof dataId === 'number') {\n chartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n for (const dataIdStr in dataId) {\n const dataIdAndField = dataId[dataIdStr];\n const series = spec.series.find((item: any) => item?.data?.id === dataIdStr);\n dataBatch.push({\n id: dataIdStr,\n values: dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? [],\n fields: series?.data?.fields\n });\n // 判断是否有updateFullDataSync 木有的话 还是循环调用updateDataSync\n if (!chartInstance.updateFullDataSync) {\n chartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n chartInstance.updateFullDataSync?.(dataBatch);\n }\n // position = chartInstance.convertDatumToPosition(datum);\n this.render();\n // this.renderAsync();\n }\n // cellPosition.offsetLeft(this.tableX);\n // cellPosition.offsetTop(this.tableY);\n return {\n chartInstance,\n bounds: cellPosition.bounds\n };\n // return position\n // ? { x: Math.round(position.x + cellPosition.bounds.x1), y: Math.round(position.y + cellPosition.bounds.y1) }\n // : null;\n }\n return {};\n }\n\n /** 激活某个单元格的图表(相当于鼠标hover到单元格上) */\n activateChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n // const cellPosition = this.getCellRelativeRect(cellAddr.col, cellAddr.row);\n const col = cellAddr.col;\n const row = cellAddr.row;\n const cellGroup = this.scenegraph.getCell(col, row);\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n const activeChartInstance = this.scenegraph.activateChart(col, row);\n const { dataId, data, axes, spec } = chartNode.attribute;\n const viewBox = chartNode.getViewBox();\n\n axes?.forEach((axis: any, index: number) => {\n if (axis.type === 'linear') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._domain = {\n // min: axis.range?.min ?? 0,\n // max: axis.range?.max ?? 0\n // };\n activeChartInstance.updateModelSpecSync(\n { type: 'axes', index },\n {\n min: axis.range?.min ?? 0,\n max: axis.range?.max ?? 0,\n tick: {\n tickMode: axis.tick?.tickMode\n }\n },\n true\n );\n } else if (axis.type === 'band') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._spec.domain = axis.domain.slice(0);\n // chartAxis.updateScaleDomain();\n activeChartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);\n }\n });\n\n activeChartInstance.updateViewBox(\n {\n x1: 0,\n x2: viewBox.x2 - viewBox.x1,\n y1: 0,\n y2: viewBox.y2 - viewBox.y1\n },\n false,\n false\n );\n // console.log(viewBox);\n\n const chartStage = activeChartInstance.getStage();\n chartStage.needRender = true;\n // chartStage.background = 'red';\n const matrix = chartNode.globalTransMatrix.clone();\n const stageMatrix = chartNode.stage.window.getViewBoxTransform().clone();\n // matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n chartStage.window.setViewBoxTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f\n );\n if (typeof dataId === 'string' || typeof dataId === 'number') {\n activeChartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n // 如果是组合图有series系列 需要组个设置数据 这里的data包括的单元格完整数据 需要根据key过滤\n for (const dataIdStr in dataId) {\n const dataIdAndField = dataId[dataIdStr];\n const series = spec.series.find((item: any) => item?.data?.id === dataIdStr);\n dataBatch.push({\n id: dataIdStr,\n values: dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? [],\n fields: series?.data?.fields\n });\n if (!activeChartInstance.updateFullDataSync) {\n activeChartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n activeChartInstance.updateFullDataSync?.(dataBatch);\n }\n return activeChartInstance;\n }\n }\n /** 替换某个单元格图表的缓存图片 */\n replaceChartCacheImage(cellHeaderPaths: IPivotTableCellHeaderPaths, chartInstance: any) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n const cellGroup = this.scenegraph.getCell(cellAddr.col, cellAddr.row);\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n cacheStageCanvas(chartInstance.getStage(), chartNode);\n }\n }\n _getDimensionSortArray(): string[] | undefined {\n if (this.options?.axes?.length) {\n const dimensionAxisOrient = this.options.indicatorsAsCol ? 'left' : 'bottom';\n const dimensionAxisOption = this.options.axes.find(axis => {\n if (axis.orient === dimensionAxisOrient) {\n return true;\n }\n return false;\n });\n if (dimensionAxisOption && isArray((dimensionAxisOption as any).domain)) {\n return (dimensionAxisOption as any).domain;\n }\n }\n return undefined;\n }\n\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param sort\n */\n setRecords(records: Array<any>): void {\n this.internalProps.layoutMap.release();\n clearChartRenderQueue();\n this.scenegraph.updateChartState(null, undefined);\n this.scenegraph.deactivateChart(-1, -1, true);\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.options.records = this.internalProps.records = records;\n const options = this.options;\n const internalProps = this.internalProps;\n\n this.dataset.setRecords(records);\n let columnDimensionTree;\n let rowDimensionTree;\n if (options.columnTree) {\n columnDimensionTree = internalProps.layoutMap.columnDimensionTree;\n } else {\n columnDimensionTree = new DimensionTree(\n (this.dataset.colHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n if (options.rowTree) {\n rowDimensionTree = internalProps.layoutMap.rowDimensionTree;\n } else {\n rowDimensionTree = new DimensionTree(\n (this.dataset.rowHeaderTree as ITreeLayoutHeadNode[]) ?? [],\n this.layoutNodeId\n );\n }\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset, columnDimensionTree, rowDimensionTree);\n\n // 更新表头\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.clearCellStyleCache();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n this.eventManager.updateEventBinder();\n }\n\n _hasCustomRenderOrLayout() {\n if (this.options.customRender) {\n return true;\n }\n const { columnsDefine, rowsDefine, indicatorsDefine } = this.internalProps.layoutMap;\n for (let i = 0; i < columnsDefine.length; i++) {\n const columnDefine = columnsDefine[i];\n if (typeof columnDefine !== 'string' && (columnDefine.headerCustomLayout || columnDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < rowsDefine.length; i++) {\n const rowDefine = rowsDefine[i];\n if (typeof rowDefine !== 'string' && (rowDefine.headerCustomLayout || rowDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < indicatorsDefine.length; i++) {\n const indicatorDefine = indicatorsDefine[i];\n if (\n typeof indicatorDefine !== 'string' &&\n (indicatorDefine.customLayout ||\n indicatorDefine.headerCustomLayout ||\n indicatorDefine.customRender ||\n indicatorDefine.headerCustomRender)\n ) {\n return true;\n }\n }\n return false;\n }\n changeRecordOrder(source: number, target: number) {\n //\n }\n /** 获取列头树结构 */\n getLayoutColumnTree(): LayouTreeNode[] {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutColumnTree();\n }\n /** 获取表格列头树形结构的占位的总节点数 */\n getLayoutColumnTreeCount(): number {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutColumnTreeCount();\n }\n /** 获取行头树结构 */\n getLayoutRowTree(): LayouTreeNode[] {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutRowTree();\n }\n /** 获取表格行头树形结构的占位的总节点数 */\n getLayoutRowTreeCount(): number {\n const layoutMap = this.internalProps.layoutMap;\n return layoutMap.getLayoutRowTreeCount();\n }\n /**\n * 根据行列号获取表头tree节点,包含了用户在自定义树rowTree及columnTree树上的自定义属性(也是内部布局树的节点,获取后请不要随意修改)\n * @param col\n * @param row\n * @returns\n */\n getCellHeaderTreeNodes(col: number, row: number): ICellHeaderPaths {\n const layoutMap = this.internalProps.layoutMap;\n const headerNodes = layoutMap.getCellHeaderPathsWithTreeNode(col, row);\n return headerNodes;\n }\n /** 暂时关闭透视图的联动效果中的tooltip的显示 */\n disableTooltipToAllChartInstances() {\n //将所有的图表实例调用一下disableDimensionHover 以防止在brush过程中显示tooltip。再用户清空brush状态时恢复\n disableTooltipToAllChartInstances();\n }\n /** 恢复透视图的联动效果中的tooltip的显示 */\n enableTooltipToAllChartInstances() {\n //将所有的图表实例调用一下enableDimensionHover 以防止在brush过程中显示tooltip。再用户清空brush状态时恢复\n enableTooltipToAllChartInstances();\n }\n}\n"]}