@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
@@ -171,4 +171,4 @@ function indexFirst(arr, elm) {
171
171
  const tempI = high < 0 ? 0 : high;
172
172
  return arr[tempI] === elm ? tempI : -1;
173
173
  }
174
- //# sourceMappingURL=row-height-map.js.map
174
+ //# sourceMappingURL=row-height-map.js.map
@@ -812,4 +812,4 @@ export class SimpleHeaderLayoutMap {
812
812
  if (col >= 0) return col < this.leftRowSeriesNumberColumnCount ? this.leftRowSeriesNumberColumn[col].define : this.transpose ? this._columns[row].define : this._columns[col - this.leftRowSeriesNumberColumnCount].define;
813
813
  }
814
814
  }
815
- //# sourceMappingURL=simple-header-layout.js.map
815
+ //# sourceMappingURL=simple-header-layout.js.map
@@ -407,4 +407,4 @@ export function deleteTreeHideNode(tree_children, dimensionPath, indicators, has
407
407
  dimensionPath.pop();
408
408
  }
409
409
  }
410
- //# sourceMappingURL=tree-helper.js.map
410
+ //# sourceMappingURL=tree-helper.js.map
@@ -103,4 +103,5 @@ export function mergeStyle(cacheStyle, customCellStyle) {
103
103
 
104
104
  export const registerCustomCellStylePlugin = () => {
105
105
  Factory.registerComponent("customCellStylePlugin", CustomCellStylePlugin);
106
- };
106
+ };
107
+ //# sourceMappingURL=custom-cell-style.js.map
@@ -1,2 +1,2 @@
1
1
  export { };
2
- //# sourceMappingURL=interface.js.map
2
+ //# sourceMappingURL=interface.js.map
@@ -11,4 +11,4 @@ export function onBeforeAttributeUpdateForInvertHighlight(val, attribute) {
11
11
  });
12
12
  }
13
13
  }
14
- //# sourceMappingURL=invert-highlight.js.map
14
+ //# sourceMappingURL=invert-highlight.js.map
@@ -175,4 +175,4 @@ function scrollToRow(row, table) {
175
175
  export const registerListTreeStickCellPlugin = () => {
176
176
  Factory.registerComponent("listTreeStickCellPlugin", ListTreeStickCellPlugin);
177
177
  };
178
- //# sourceMappingURL=list-tree-stick-cell.js.map
178
+ //# sourceMappingURL=list-tree-stick-cell.js.map
@@ -51,4 +51,4 @@ export class PluginManager {
51
51
  }));
52
52
  }
53
53
  }
54
- //# sourceMappingURL=plugin-manager.js.map
54
+ //# sourceMappingURL=plugin-manager.js.map
@@ -1,6 +1,7 @@
1
1
  import type { BaseTableAPI } from '../../ts-types/base-table';
2
+ import type { Scenegraph } from '../scenegraph';
2
3
  export declare function setBrushingChartInstance(chartInstance: any, col: number, row: number): void;
3
- export declare function clearBrushingChartInstance(): void;
4
+ export declare function clearAndReleaseBrushingChartInstance(scenegraph: Scenegraph): void;
4
5
  export declare function getBrushingChartInstance(): any;
5
6
  export declare function getBrushingChartInstanceCellPos(): {
6
7
  col: number;
@@ -19,6 +20,9 @@ export declare function generateChartInstanceListByRowDirection(row: number, dim
19
20
  export declare function generateChartInstanceListByViewRange(datum: any, table: BaseTableAPI, deactivate?: boolean): void;
20
21
  export declare function clearChartInstanceListByColumnDirection(col: number, excludedRow: number, table: BaseTableAPI, forceRelease?: boolean): void;
21
22
  export declare function clearChartInstanceListByRowDirection(row: number, excludedCol: number, table: BaseTableAPI, forceRelease?: boolean): void;
23
+ export declare function clearDelayRunDimensionHoverTimerForColumnDirection(): void;
24
+ export declare function clearDelayRunDimensionHoverTimerForRowDirection(): void;
25
+ export declare function clearDelayRunDimensionHoverTimerForViewRange(): void;
22
26
  export declare function clearDelayRunDimensionHoverTimers(): void;
23
27
  export declare function clearAllChartInstanceList(table: BaseTableAPI, forceRelease?: boolean): void;
24
28
  export declare function isDisabledTooltipToAllChartInstances(): boolean;
@@ -12,7 +12,18 @@ export function setBrushingChartInstance(chartInstance, col, row) {
12
12
  };
13
13
  }
14
14
 
15
- export function clearBrushingChartInstance() {
15
+ export function clearAndReleaseBrushingChartInstance(scenegraph) {
16
+ var _a, _b, _c;
17
+ enableTooltipToAllChartInstances();
18
+ const cellGroup = scenegraph.getCell(brushingChartInstanceCellPos.col, brushingChartInstanceCellPos.row);
19
+ (null === (_a = null == cellGroup ? void 0 : cellGroup.firstChild) || void 0 === _a ? void 0 : _a.deactivate) && (null === (_c = null === (_b = null == cellGroup ? void 0 : cellGroup.firstChild) || void 0 === _b ? void 0 : _b.deactivate) || void 0 === _c || _c.call(_b, scenegraph.table, {
20
+ forceRelease: !0,
21
+ releaseChartInstance: !0,
22
+ releaseColumnChartInstance: !1,
23
+ releaseRowChartInstance: !1,
24
+ releaseAllChartInstance: !1
25
+ })), isValid(chartInstanceListColumnByColumnDirection[brushingChartInstanceCellPos.col]) && delete chartInstanceListColumnByColumnDirection[brushingChartInstanceCellPos.col][brushingChartInstanceCellPos.row],
26
+ isValid(chartInstanceListRowByRowDirection[brushingChartInstanceCellPos.row]) && delete chartInstanceListRowByRowDirection[brushingChartInstanceCellPos.row][brushingChartInstanceCellPos.col],
16
27
  brushingChartInstance = void 0, brushingChartInstanceCellPos = {
17
28
  col: -1,
18
29
  row: -1
@@ -31,11 +42,11 @@ export const chartInstanceListColumnByColumnDirection = {};
31
42
 
32
43
  export const chartInstanceListRowByRowDirection = {};
33
44
 
34
- const delayRunDimensionHoverTimer = [];
45
+ const delayRunDimensionHoverTimerForColumnDirection = [], delayRunDimensionHoverTimerForRowDirection = [], delayRunDimensionHoverTimerForViewRange = [];
35
46
 
36
47
  export function generateChartInstanceListByColumnDirection(col, dimensionValueOrXValue, positionValueOrYValue, canvasXY, table, hideTooltip = !1, isScatter = !1) {
37
48
  var _a;
38
- clearDelayRunDimensionHoverTimers(), isValid(chartInstanceListColumnByColumnDirection[col]) || (chartInstanceListColumnByColumnDirection[col] = {});
49
+ clearDelayRunDimensionHoverTimerForColumnDirection(), isValid(chartInstanceListColumnByColumnDirection[col]) || (chartInstanceListColumnByColumnDirection[col] = {});
39
50
  const {rowStart: rowStart} = table.getBodyVisibleRowRange();
40
51
  let rowEnd = table.getBodyVisibleRowRange().rowEnd;
41
52
  rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
@@ -70,13 +81,13 @@ export function generateChartInstanceListByColumnDirection(col, dimensionValueOr
70
81
  }
71
82
  }
72
83
  }), 0);
73
- delayRunDimensionHoverTimer.push(timer), table.scenegraph.updateNextFrame();
84
+ delayRunDimensionHoverTimerForColumnDirection.push(timer), table.scenegraph.updateNextFrame();
74
85
  }
75
86
  }
76
87
 
77
88
  export function generateChartInstanceListByRowDirection(row, dimensionValueOrXValue, positionValueOrYValue, canvasXY, table, hideTooltip = !1, isScatter = !1) {
78
89
  var _a;
79
- clearDelayRunDimensionHoverTimers(), isValid(chartInstanceListRowByRowDirection[row]) || (chartInstanceListRowByRowDirection[row] = {});
90
+ clearDelayRunDimensionHoverTimerForRowDirection(), isValid(chartInstanceListRowByRowDirection[row]) || (chartInstanceListRowByRowDirection[row] = {});
80
91
  const {colStart: colStart} = table.getBodyVisibleColRange();
81
92
  let colEnd = table.getBodyVisibleColRange().colEnd;
82
93
  colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);
@@ -111,13 +122,13 @@ export function generateChartInstanceListByRowDirection(row, dimensionValueOrXVa
111
122
  }
112
123
  }
113
124
  }), 0);
114
- delayRunDimensionHoverTimer.push(timer), table.scenegraph.updateNextFrame();
125
+ delayRunDimensionHoverTimerForRowDirection.push(timer), table.scenegraph.updateNextFrame();
115
126
  }
116
127
  }
117
128
 
118
129
  export function generateChartInstanceListByViewRange(datum, table, deactivate = !1) {
119
130
  var _a;
120
- clearDelayRunDimensionHoverTimers();
131
+ clearDelayRunDimensionHoverTimerForViewRange();
121
132
  const {rowStart: rowStart} = table.getBodyVisibleRowRange();
122
133
  let rowEnd = table.getBodyVisibleRowRange().rowEnd;
123
134
  rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
@@ -144,7 +155,7 @@ export function generateChartInstanceListByViewRange(datum, table, deactivate =
144
155
  })));
145
156
  }
146
157
  }), 0);
147
- delayRunDimensionHoverTimer.push(timer), table.scenegraph.updateNextFrame();
158
+ delayRunDimensionHoverTimerForViewRange.push(timer), table.scenegraph.updateNextFrame();
148
159
  }
149
160
  }
150
161
  }
@@ -226,9 +237,28 @@ export function clearChartInstanceListByRowDirection(row, excludedCol, table, fo
226
237
  delete chartInstanceListRowByRowDirection[row];
227
238
  }
228
239
 
240
+ export function clearDelayRunDimensionHoverTimerForColumnDirection() {
241
+ for (const timer of delayRunDimensionHoverTimerForColumnDirection) clearTimeout(timer);
242
+ delayRunDimensionHoverTimerForColumnDirection.length = 0;
243
+ }
244
+
245
+ export function clearDelayRunDimensionHoverTimerForRowDirection() {
246
+ for (const timer of delayRunDimensionHoverTimerForRowDirection) clearTimeout(timer);
247
+ delayRunDimensionHoverTimerForRowDirection.length = 0;
248
+ }
249
+
250
+ export function clearDelayRunDimensionHoverTimerForViewRange() {
251
+ for (const timer of delayRunDimensionHoverTimerForViewRange) clearTimeout(timer);
252
+ delayRunDimensionHoverTimerForViewRange.length = 0;
253
+ }
254
+
229
255
  export function clearDelayRunDimensionHoverTimers() {
230
- for (const timer of delayRunDimensionHoverTimer) clearTimeout(timer);
231
- delayRunDimensionHoverTimer.length = 0;
256
+ for (const timer of delayRunDimensionHoverTimerForColumnDirection) clearTimeout(timer);
257
+ delayRunDimensionHoverTimerForColumnDirection.length = 0;
258
+ for (const timer of delayRunDimensionHoverTimerForRowDirection) clearTimeout(timer);
259
+ delayRunDimensionHoverTimerForRowDirection.length = 0;
260
+ for (const timer of delayRunDimensionHoverTimerForViewRange) clearTimeout(timer);
261
+ delayRunDimensionHoverTimerForViewRange.length = 0;
232
262
  }
233
263
 
234
264
  export function clearAllChartInstanceList(table, forceRelease = !1) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/active-cell-chart-list.ts"],"names":[],"mappings":"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","file":"active-cell-chart-list.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Chart } from './chart';\nimport type { PivotChartConstructorOptions } from '../../ts-types/table-engine';\n\n/** 存储当前被执行brush框选操作的图表实例。目的是希望在鼠标离开框选的单元格 不希望chart实例马上释放掉。 实例需要保留住,这样brush框才会不消失 */\nlet brushingChartInstance: any;\nlet brushingChartInstanceCellPos: { col: number; row: number } = { col: -1, row: -1 };\n// window.brushingChartInstance = brushingChartInstance;\nexport function setBrushingChartInstance(chartInstance: any, col: number, row: number) {\n brushingChartInstance = chartInstance;\n brushingChartInstanceCellPos = { col, row };\n\n // window.brushingChartInstance = brushingChartInstance;\n}\nexport function clearBrushingChartInstance() {\n brushingChartInstance = undefined;\n brushingChartInstanceCellPos = { col: -1, row: -1 };\n\n // window.brushingChartInstance = brushingChartInstance;\n}\nexport function getBrushingChartInstance() {\n return brushingChartInstance;\n}\nexport function getBrushingChartInstanceCellPos() {\n return brushingChartInstanceCellPos;\n}\n//存储可视区域内鼠标hover到的该列的图表实例,key为列号做个缓存\nexport const chartInstanceListColumnByColumnDirection: Record<number, Record<number, any>> = {};\nexport const chartInstanceListRowByRowDirection: Record<number, Record<number, any>> = {};\nconst delayRunDimensionHoverTimer: any[] = [];\n//临时存储 用于调试\n// window.chartInstanceListColumnByColumnDirection = chartInstanceListColumnByColumnDirection;\n// window.chartInstanceListRowByRowDirection = chartInstanceListRowByRowDirection;\n/**\n * 根据列号生成可视区域内图表实例列表\n * @param col 列号\n * @param table 表格实例\n */\nexport function generateChartInstanceListByColumnDirection(\n col: number,\n dimensionValueOrXValue: string,\n positionValueOrYValue: string | number,\n canvasXY: { x: number; y: number },\n table: BaseTableAPI,\n hideTooltip: boolean = false,\n isScatter: boolean = false\n) {\n // 清除之前的定时器,避免旧的定时器执行\n clearDelayRunDimensionHoverTimers();\n if (!isValid(chartInstanceListColumnByColumnDirection[col])) {\n chartInstanceListColumnByColumnDirection[col] = {};\n }\n const { rowStart } = table.getBodyVisibleRowRange();\n let rowEnd = table.getBodyVisibleRowRange().rowEnd;\n rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);\n //增加10像素的偏移量,最后一行不是完整显示的chart就不显示tooltip\n for (let i = rowStart; i <= rowEnd; i++) {\n const cellGroup = table.scenegraph.getCell(col, i);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (chartInstanceListColumnByColumnDirection[col][i]) {\n } else if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n if (chartNode.activeChartInstance) {\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n } else {\n chartNode.activate(table);\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n }\n }\n\n const timer = setTimeout(() => {\n // 需要等updateNextFrame 触发了chart的drawShape后 设置了数据后 才能触发setDimensionIndex\n if (chartInstanceListColumnByColumnDirection[col]?.[i]) {\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n let isShowTooltip = !isScatter;\n if (!isScatter && typeof chartDimensionLinkage === 'object') {\n isShowTooltip = chartDimensionLinkage.showTooltip ?? true;\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table);\n }\n //测试代码 用于查看图表实例的id\n // const _21Group = table.scenegraph.getCell(2, 1).firstChild.activeChartInstance;\n // console.log(\n // 'setDimensionIndex column',\n // col,\n // i,\n // chartInstanceListColumnByColumnDirection[col][i].id,\n // _21Group?.id\n // );\n if (isScatter) {\n if (table.stateManager.hover.cellPos.col !== col || table.stateManager.hover.cellPos.row !== i) {\n chartInstanceListColumnByColumnDirection[col][i].showCrosshair?.((axis: any) => {\n // console.log('showCrosshair', axis.layoutOrient, dimensionValueOrXValue);\n if (axis.layoutOrient === 'left') {\n return positionValueOrYValue;\n }\n return dimensionValueOrXValue;\n });\n }\n } else {\n const cellBoundry = table.getCellRelativeRect(col, i);\n const bodyBoundryTop = table.frozenRowCount\n ? table.getCellRelativeRect(col, table.frozenRowCount - 1).bottom\n : 0;\n const absolutePositionTop = Math.max(bodyBoundryTop, table.getCellRelativeRect(col, i).top);\n if (hideTooltip) {\n if (table.stateManager.hover.cellPos.col !== col || table.stateManager.hover.cellPos.row !== i) {\n chartInstanceListColumnByColumnDirection[col][i].hideTooltip();\n }\n chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: false,\n showTooltipOption: {\n x: canvasXY.x - cellBoundry.left,\n y: absolutePositionTop - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n } else {\n chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: isShowTooltip,\n showTooltipOption: {\n x: canvasXY.x - cellBoundry.left,\n y: absolutePositionTop - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n }\n }\n }\n }, 0);\n\n delayRunDimensionHoverTimer.push(timer);\n table.scenegraph.updateNextFrame();\n }\n}\n\n/**\n * 根据行号生成可视区域内图表实例列表\n * @param row 行号\n * @param table 表格实例\n */\nexport function generateChartInstanceListByRowDirection(\n row: number,\n dimensionValueOrXValue: string,\n positionValueOrYValue: string | number,\n canvasXY: { x: number; y: number },\n table: BaseTableAPI,\n hideTooltip: boolean = false,\n isScatter: boolean = false\n) {\n // 清除之前的定时器,避免旧的定时器执行\n clearDelayRunDimensionHoverTimers();\n if (!isValid(chartInstanceListRowByRowDirection[row])) {\n chartInstanceListRowByRowDirection[row] = {};\n }\n const { colStart } = table.getBodyVisibleColRange();\n let colEnd = table.getBodyVisibleColRange().colEnd;\n colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);\n for (let i = colStart; i <= colEnd; i++) {\n const cellGroup = table.scenegraph.getCell(i, row);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (chartInstanceListRowByRowDirection[row][i]) {\n } else if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n if (chartNode.activeChartInstance) {\n chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance;\n } else {\n chartNode.activate(table);\n chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance;\n }\n }\n const timer = setTimeout(() => {\n // 需要等updateNextFrame 触发了chart的drawShape后 设置了数据后 才可触发setDimensionIndex绘制出东西 否则会绘制出空的\n if (chartInstanceListRowByRowDirection[row]?.[i]) {\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n let isShowTooltip = !isScatter;\n if (!isScatter && typeof chartDimensionLinkage === 'object') {\n isShowTooltip = chartDimensionLinkage.showTooltip ?? true;\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(i, table);\n }\n // console.log('setDimensionIndex row', i, row, chartInstanceListRowByRowDirection[row][i].id);\n if (isScatter) {\n if (table.stateManager.hover.cellPos.col !== i || table.stateManager.hover.cellPos.row !== row) {\n chartInstanceListRowByRowDirection[row][i].showCrosshair?.((axis: any) => {\n if (axis.layoutOrient === 'left') {\n return positionValueOrYValue;\n }\n return dimensionValueOrXValue;\n });\n }\n } else {\n const cellBoundry = table.getCellRelativeRect(i, row);\n const bodyBoundryLeft = table.frozenColCount\n ? table.getCellRelativeRect(table.frozenColCount - 1, row).right\n : 0;\n const absolutePositionLeft = Math.max(bodyBoundryLeft, table.getCellRelativeRect(i, row).left);\n if (hideTooltip) {\n if (table.stateManager.hover.cellPos.col !== i || table.stateManager.hover.cellPos.row !== row) {\n chartInstanceListRowByRowDirection[row][i].hideTooltip();\n }\n chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: false,\n showTooltipOption: {\n x: absolutePositionLeft - cellBoundry.left,\n y: canvasXY.y - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n } else {\n chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: isShowTooltip,\n showTooltipOption: {\n x: absolutePositionLeft - cellBoundry.left,\n y: canvasXY.y - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n }\n }\n }\n }, 0);\n\n delayRunDimensionHoverTimer.push(timer);\n table.scenegraph.updateNextFrame();\n }\n}\nexport function generateChartInstanceListByViewRange(datum: any, table: BaseTableAPI, deactivate: boolean = false) {\n // 清除之前的定时器,避免旧的定时器执行\n clearDelayRunDimensionHoverTimers();\n const { rowStart } = table.getBodyVisibleRowRange();\n let rowEnd = table.getBodyVisibleRowRange().rowEnd;\n rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);\n const { colStart } = table.getBodyVisibleColRange();\n let colEnd = table.getBodyVisibleColRange().colEnd;\n colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);\n //增加10像素的偏移量,最后一行不是完整显示的chart就不显示tooltip\n for (let col = colStart; col <= colEnd; col++) {\n if (!isValid(chartInstanceListColumnByColumnDirection[col])) {\n chartInstanceListColumnByColumnDirection[col] = {};\n }\n for (let i = rowStart; i <= rowEnd; i++) {\n const cellGroup = table.scenegraph.getCell(col, i);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (chartInstanceListColumnByColumnDirection[col][i]) {\n } else if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n if (chartNode.activeChartInstance) {\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n } else {\n if (chartNode.attribute.spec.type === 'pie') {\n chartNode.activate(table);\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n }\n }\n }\n\n const timer = setTimeout(() => {\n // 需要等updateNextFrame 触发了chart的drawShape后 设置了数据后 才能触发setDimensionIndex\n if (chartInstanceListColumnByColumnDirection[col]?.[i]) {\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n let isShowTooltip = true;\n if (typeof chartDimensionLinkage === 'object') {\n if (deactivate) {\n chartInstanceListColumnByColumnDirection[col][i].setHovered();\n chartInstanceListColumnByColumnDirection[col][i].hideTooltip();\n } else {\n isShowTooltip = chartDimensionLinkage.showTooltip ?? true;\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table);\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(col, table);\n chartInstanceListColumnByColumnDirection[col][i].setHovered(datum);\n isShowTooltip &&\n chartInstanceListColumnByColumnDirection[col][i].showTooltip(datum, {\n activeType: 'mark'\n });\n }\n }\n }\n }, 0);\n\n delayRunDimensionHoverTimer.push(timer);\n table.scenegraph.updateNextFrame();\n }\n }\n}\n/**\n * 检查是否显示tooltip 用于检查是否边缘行,且单元格被滚动遮挡只显示一部分的情况下,检测该图表显示出来至少多高 可允许显示tooltip。\n * @param row 行号\n * @param table 表格实例\n * @returns 是否显示tooltip\n * @returns\n */\nfunction checkIsShowTooltipForEdgeRow(row: number, table: BaseTableAPI) {\n let isShowTooltip = true;\n const { rowStart } = table.getBodyVisibleRowRange();\n let rowEnd = table.getBodyVisibleRowRange().rowEnd;\n rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n if (row === rowEnd && isShowTooltip) {\n const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;\n const { rowEnd: rowEnd1 } = table.getBodyVisibleRowRange(0, -heightLimitToShowTooltipForEdgeRow);\n if (rowEnd1 === rowEnd) {\n isShowTooltip = true;\n } else {\n const { rowEnd: rowEnd2 } = table.getBodyVisibleRowRange(0, 5);\n if (rowEnd2 !== rowEnd) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n } else if (row === rowStart && isShowTooltip) {\n const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;\n const { rowStart: rowStart1 } = table.getBodyVisibleRowRange(heightLimitToShowTooltipForEdgeRow, 0);\n if (rowStart1 === rowStart) {\n isShowTooltip = true;\n } else {\n const { rowStart: rowStart2 } = table.getBodyVisibleRowRange(0, -5);\n if (rowStart2 !== rowStart) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n }\n return isShowTooltip;\n}\n\n/**\n * 检查是否显示tooltip 用于检查是否边缘列,且单元格被滚动遮挡只显示一部分的情况下,检测该图表显示出来至少多宽 可允许显示tooltip。\n * @param col 列号\n * @param table 表格实例\n * @returns 是否显示tooltip\n * @returns\n */\nfunction checkIsShowTooltipForEdgeColumn(col: number, table: BaseTableAPI) {\n let isShowTooltip = true;\n const { colStart } = table.getBodyVisibleColRange();\n let colEnd = table.getBodyVisibleColRange().colEnd;\n colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n if (col === colEnd && isShowTooltip) {\n const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;\n const { colEnd: colEnd1 } = table.getBodyVisibleColRange(0, -widthLimitToShowTooltipForEdgeColumn);\n if (colEnd1 === colEnd) {\n isShowTooltip = true;\n } else {\n const { colEnd: colEnd2 } = table.getBodyVisibleColRange(0, 5);\n if (colEnd2 !== colEnd) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n } else if (col === colStart && isShowTooltip) {\n const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;\n const { colStart: colStart1 } = table.getBodyVisibleColRange(widthLimitToShowTooltipForEdgeColumn, 0);\n if (colStart1 === colStart) {\n isShowTooltip = true;\n } else {\n const { colStart: colStart2 } = table.getBodyVisibleColRange(0, -5);\n if (colStart2 !== colStart) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n }\n return isShowTooltip;\n}\nexport function clearChartInstanceListByColumnDirection(\n col: number,\n excludedRow: number,\n table: BaseTableAPI,\n forceRelease: boolean = false\n) {\n if (isValid(chartInstanceListColumnByColumnDirection[col])) {\n for (const i in chartInstanceListColumnByColumnDirection[col]) {\n if (isValid(excludedRow) && Number(i) === excludedRow) {\n continue;\n }\n const cellGroup = table.scenegraph.getCell(col, Number(i));\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n chartNode.deactivate(table, {\n forceRelease: forceRelease,\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false\n });\n chartInstanceListColumnByColumnDirection[col][i] = null;\n }\n }\n delete chartInstanceListColumnByColumnDirection[col];\n }\n}\n\nexport function clearChartInstanceListByRowDirection(\n row: number,\n excludedCol: number,\n table: BaseTableAPI,\n forceRelease: boolean = false\n) {\n if (isValid(chartInstanceListRowByRowDirection[row])) {\n for (const i in chartInstanceListRowByRowDirection[row]) {\n if (isValid(excludedCol) && Number(i) === excludedCol) {\n continue;\n }\n const cellGroup = table.scenegraph.getCell(Number(i), row);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n chartNode.deactivate(table, {\n forceRelease: forceRelease,\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false\n });\n chartInstanceListRowByRowDirection[row][i] = null;\n }\n }\n }\n delete chartInstanceListRowByRowDirection[row];\n}\n\n/**\n * 清除所有延迟执行的定时器\n */\nexport function clearDelayRunDimensionHoverTimers() {\n for (const timer of delayRunDimensionHoverTimer) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimer.length = 0;\n}\n\nexport function clearAllChartInstanceList(table: BaseTableAPI, forceRelease: boolean = false) {\n // 清除所有延迟执行的定时器\n clearDelayRunDimensionHoverTimers();\n for (const col in chartInstanceListColumnByColumnDirection) {\n clearChartInstanceListByColumnDirection(Number(col), undefined, table, forceRelease);\n }\n for (const row in chartInstanceListRowByRowDirection) {\n clearChartInstanceListByRowDirection(Number(row), undefined, table, forceRelease);\n }\n}\n\nlet disabledTooltipToAllChartInstances: boolean = false;\nexport function isDisabledTooltipToAllChartInstances() {\n return disabledTooltipToAllChartInstances;\n}\nexport function disableTooltipToAllChartInstances() {\n disabledTooltipToAllChartInstances = true;\n clearDelayRunDimensionHoverTimers();\n for (const col in chartInstanceListColumnByColumnDirection) {\n for (const row in chartInstanceListColumnByColumnDirection[col]) {\n // chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(true);\n // chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(true);\n chartInstanceListColumnByColumnDirection[col][row].disableTooltip(true);\n chartInstanceListColumnByColumnDirection[col][row].hideTooltip();\n }\n }\n for (const row in chartInstanceListRowByRowDirection) {\n for (const col in chartInstanceListRowByRowDirection[row]) {\n // chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(true);\n // chartInstanceListRowByRowDirection[row][col].disableCrossHair(true);\n chartInstanceListRowByRowDirection[row][col].disableTooltip(true);\n chartInstanceListRowByRowDirection[row][col].hideTooltip();\n }\n }\n}\nexport function enableTooltipToAllChartInstances() {\n disabledTooltipToAllChartInstances = false;\n for (const col in chartInstanceListColumnByColumnDirection) {\n for (const row in chartInstanceListColumnByColumnDirection[col]) {\n // chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(false);\n // chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(false);\n chartInstanceListColumnByColumnDirection[col][row].disableTooltip(false);\n }\n }\n for (const row in chartInstanceListRowByRowDirection) {\n for (const col in chartInstanceListRowByRowDirection[row]) {\n // chartInstanceListRowByRowDirection[row][col].getChart().getComponentsByKey('brush')[0].enableDimensionHover();\n // chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(false);\n // chartInstanceListRowByRowDirection[row][col].disableCrossHair(false);\n chartInstanceListRowByRowDirection[row][col].disableTooltip(false);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/active-cell-chart-list.ts"],"names":[],"mappings":"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","file":"active-cell-chart-list.js","sourcesContent":["import { isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { Chart } from './chart';\nimport type { PivotChartConstructorOptions } from '../../ts-types/table-engine';\nimport type { Scenegraph } from '../scenegraph';\n\n/** 存储当前被执行brush框选操作的图表实例。目的是希望在鼠标离开框选的单元格 不希望chart实例马上释放掉。 实例需要保留住,这样brush框才会不消失 */\nlet brushingChartInstance: any;\nlet brushingChartInstanceCellPos: { col: number; row: number } = { col: -1, row: -1 };\n// window.brushingChartInstance = brushingChartInstance;\nexport function setBrushingChartInstance(chartInstance: any, col: number, row: number) {\n brushingChartInstance = chartInstance;\n brushingChartInstanceCellPos = { col, row };\n\n // window.brushingChartInstance = brushingChartInstance;\n}\nexport function clearAndReleaseBrushingChartInstance(scenegraph: Scenegraph) {\n enableTooltipToAllChartInstances();\n const cellGroup = scenegraph.getCell(brushingChartInstanceCellPos.col, brushingChartInstanceCellPos.row);\n if ((cellGroup?.firstChild as any)?.deactivate) {\n (cellGroup?.firstChild as any)?.deactivate?.(scenegraph.table, {\n forceRelease: true,\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false,\n releaseAllChartInstance: false\n });\n }\n //将这个单元格的chart引用从chartInstanceListColumnByColumnDirection或chartInstanceListRowByRowDirection中删除\n if (isValid(chartInstanceListColumnByColumnDirection[brushingChartInstanceCellPos.col])) {\n delete chartInstanceListColumnByColumnDirection[brushingChartInstanceCellPos.col][brushingChartInstanceCellPos.row];\n }\n if (isValid(chartInstanceListRowByRowDirection[brushingChartInstanceCellPos.row])) {\n delete chartInstanceListRowByRowDirection[brushingChartInstanceCellPos.row][brushingChartInstanceCellPos.col];\n }\n brushingChartInstance = undefined;\n brushingChartInstanceCellPos = { col: -1, row: -1 };\n\n // window.brushingChartInstance = brushingChartInstance;\n}\nexport function getBrushingChartInstance() {\n return brushingChartInstance;\n}\nexport function getBrushingChartInstanceCellPos() {\n return brushingChartInstanceCellPos;\n}\n//存储可视区域内鼠标hover到的该列的图表实例,key为列号做个缓存\nexport const chartInstanceListColumnByColumnDirection: Record<number, Record<number, any>> = {};\nexport const chartInstanceListRowByRowDirection: Record<number, Record<number, any>> = {};\nconst delayRunDimensionHoverTimerForColumnDirection: any[] = [];\nconst delayRunDimensionHoverTimerForRowDirection: any[] = [];\nconst delayRunDimensionHoverTimerForViewRange: any[] = [];\n//临时存储 用于调试\n// window.chartInstanceListColumnByColumnDirection = chartInstanceListColumnByColumnDirection;\n// window.chartInstanceListRowByRowDirection = chartInstanceListRowByRowDirection;\n/**\n * 根据列号生成可视区域内图表实例列表\n * @param col 列号\n * @param table 表格实例\n */\nexport function generateChartInstanceListByColumnDirection(\n col: number,\n dimensionValueOrXValue: string,\n positionValueOrYValue: string | number,\n canvasXY: { x: number; y: number },\n table: BaseTableAPI,\n hideTooltip: boolean = false,\n isScatter: boolean = false\n) {\n // 清除之前的定时器,避免旧的定时器执行\n clearDelayRunDimensionHoverTimerForColumnDirection();\n if (!isValid(chartInstanceListColumnByColumnDirection[col])) {\n chartInstanceListColumnByColumnDirection[col] = {};\n }\n const { rowStart } = table.getBodyVisibleRowRange();\n let rowEnd = table.getBodyVisibleRowRange().rowEnd;\n rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);\n //增加10像素的偏移量,最后一行不是完整显示的chart就不显示tooltip\n for (let i = rowStart; i <= rowEnd; i++) {\n const cellGroup = table.scenegraph.getCell(col, i);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (chartInstanceListColumnByColumnDirection[col][i]) {\n } else if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n if (chartNode.activeChartInstance) {\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n } else {\n chartNode.activate(table);\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n }\n }\n\n const timer = setTimeout(() => {\n // 需要等updateNextFrame 触发了chart的drawShape后 设置了数据后 才能触发setDimensionIndex\n if (chartInstanceListColumnByColumnDirection[col]?.[i]) {\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n let isShowTooltip = !isScatter;\n if (!isScatter && typeof chartDimensionLinkage === 'object') {\n isShowTooltip = chartDimensionLinkage.showTooltip ?? true;\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table);\n }\n //测试代码 用于查看图表实例的id\n // const _21Group = table.scenegraph.getCell(2, 1).firstChild.activeChartInstance;\n // console.log(\n // 'setDimensionIndex column',\n // col,\n // i,\n // chartInstanceListColumnByColumnDirection[col][i].id,\n // _21Group?.id\n // );\n if (isScatter) {\n if (table.stateManager.hover.cellPos.col !== col || table.stateManager.hover.cellPos.row !== i) {\n chartInstanceListColumnByColumnDirection[col][i].showCrosshair?.((axis: any) => {\n // console.log('showCrosshair', axis.layoutOrient, dimensionValueOrXValue);\n if (axis.layoutOrient === 'left') {\n return positionValueOrYValue;\n }\n return dimensionValueOrXValue;\n });\n }\n } else {\n const cellBoundry = table.getCellRelativeRect(col, i);\n const bodyBoundryTop = table.frozenRowCount\n ? table.getCellRelativeRect(col, table.frozenRowCount - 1).bottom\n : 0;\n const absolutePositionTop = Math.max(bodyBoundryTop, table.getCellRelativeRect(col, i).top);\n if (hideTooltip) {\n if (table.stateManager.hover.cellPos.col !== col || table.stateManager.hover.cellPos.row !== i) {\n chartInstanceListColumnByColumnDirection[col][i].hideTooltip();\n }\n chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: false,\n showTooltipOption: {\n x: canvasXY.x - cellBoundry.left,\n y: absolutePositionTop - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n } else {\n chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: isShowTooltip,\n showTooltipOption: {\n x: canvasXY.x - cellBoundry.left,\n y: absolutePositionTop - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n }\n }\n }\n }, 0);\n\n delayRunDimensionHoverTimerForColumnDirection.push(timer);\n table.scenegraph.updateNextFrame();\n }\n}\n\n/**\n * 根据行号生成可视区域内图表实例列表\n * @param row 行号\n * @param table 表格实例\n */\nexport function generateChartInstanceListByRowDirection(\n row: number,\n dimensionValueOrXValue: string,\n positionValueOrYValue: string | number,\n canvasXY: { x: number; y: number },\n table: BaseTableAPI,\n hideTooltip: boolean = false,\n isScatter: boolean = false\n) {\n // 清除之前的定时器,避免旧的定时器执行\n clearDelayRunDimensionHoverTimerForRowDirection();\n if (!isValid(chartInstanceListRowByRowDirection[row])) {\n chartInstanceListRowByRowDirection[row] = {};\n }\n const { colStart } = table.getBodyVisibleColRange();\n let colEnd = table.getBodyVisibleColRange().colEnd;\n colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);\n for (let i = colStart; i <= colEnd; i++) {\n const cellGroup = table.scenegraph.getCell(i, row);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (chartInstanceListRowByRowDirection[row][i]) {\n } else if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n if (chartNode.activeChartInstance) {\n chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance;\n } else {\n chartNode.activate(table);\n chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance;\n }\n }\n const timer = setTimeout(() => {\n // 需要等updateNextFrame 触发了chart的drawShape后 设置了数据后 才可触发setDimensionIndex绘制出东西 否则会绘制出空的\n if (chartInstanceListRowByRowDirection[row]?.[i]) {\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n let isShowTooltip = !isScatter;\n if (!isScatter && typeof chartDimensionLinkage === 'object') {\n isShowTooltip = chartDimensionLinkage.showTooltip ?? true;\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(i, table);\n }\n // console.log('setDimensionIndex row', i, row, chartInstanceListRowByRowDirection[row][i].id);\n if (isScatter) {\n if (table.stateManager.hover.cellPos.col !== i || table.stateManager.hover.cellPos.row !== row) {\n chartInstanceListRowByRowDirection[row][i].showCrosshair?.((axis: any) => {\n if (axis.layoutOrient === 'left') {\n return positionValueOrYValue;\n }\n return dimensionValueOrXValue;\n });\n }\n } else {\n const cellBoundry = table.getCellRelativeRect(i, row);\n const bodyBoundryLeft = table.frozenColCount\n ? table.getCellRelativeRect(table.frozenColCount - 1, row).right\n : 0;\n const absolutePositionLeft = Math.max(bodyBoundryLeft, table.getCellRelativeRect(i, row).left);\n if (hideTooltip) {\n if (table.stateManager.hover.cellPos.col !== i || table.stateManager.hover.cellPos.row !== row) {\n chartInstanceListRowByRowDirection[row][i].hideTooltip();\n }\n chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: false,\n showTooltipOption: {\n x: absolutePositionLeft - cellBoundry.left,\n y: canvasXY.y - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n } else {\n chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: isShowTooltip,\n showTooltipOption: {\n x: absolutePositionLeft - cellBoundry.left,\n y: canvasXY.y - cellBoundry.top,\n activeType: 'dimension'\n }\n });\n }\n }\n }\n }, 0);\n\n delayRunDimensionHoverTimerForRowDirection.push(timer);\n table.scenegraph.updateNextFrame();\n }\n}\nexport function generateChartInstanceListByViewRange(datum: any, table: BaseTableAPI, deactivate: boolean = false) {\n // 清除之前的定时器,避免旧的定时器执行\n clearDelayRunDimensionHoverTimerForViewRange();\n const { rowStart } = table.getBodyVisibleRowRange();\n let rowEnd = table.getBodyVisibleRowRange().rowEnd;\n rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);\n const { colStart } = table.getBodyVisibleColRange();\n let colEnd = table.getBodyVisibleColRange().colEnd;\n colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);\n //增加10像素的偏移量,最后一行不是完整显示的chart就不显示tooltip\n for (let col = colStart; col <= colEnd; col++) {\n if (!isValid(chartInstanceListColumnByColumnDirection[col])) {\n chartInstanceListColumnByColumnDirection[col] = {};\n }\n for (let i = rowStart; i <= rowEnd; i++) {\n const cellGroup = table.scenegraph.getCell(col, i);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (chartInstanceListColumnByColumnDirection[col][i]) {\n } else if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n if (chartNode.activeChartInstance) {\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n } else {\n if (chartNode.attribute.spec.type === 'pie') {\n chartNode.activate(table);\n chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance;\n }\n }\n }\n\n const timer = setTimeout(() => {\n // 需要等updateNextFrame 触发了chart的drawShape后 设置了数据后 才能触发setDimensionIndex\n if (chartInstanceListColumnByColumnDirection[col]?.[i]) {\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n let isShowTooltip = true;\n if (typeof chartDimensionLinkage === 'object') {\n if (deactivate) {\n chartInstanceListColumnByColumnDirection[col][i].setHovered();\n chartInstanceListColumnByColumnDirection[col][i].hideTooltip();\n } else {\n isShowTooltip = chartDimensionLinkage.showTooltip ?? true;\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table);\n isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(col, table);\n chartInstanceListColumnByColumnDirection[col][i].setHovered(datum);\n isShowTooltip &&\n chartInstanceListColumnByColumnDirection[col][i].showTooltip(datum, {\n activeType: 'mark'\n });\n }\n }\n }\n }, 0);\n\n delayRunDimensionHoverTimerForViewRange.push(timer);\n table.scenegraph.updateNextFrame();\n }\n }\n}\n/**\n * 检查是否显示tooltip 用于检查是否边缘行,且单元格被滚动遮挡只显示一部分的情况下,检测该图表显示出来至少多高 可允许显示tooltip。\n * @param row 行号\n * @param table 表格实例\n * @returns 是否显示tooltip\n * @returns\n */\nfunction checkIsShowTooltipForEdgeRow(row: number, table: BaseTableAPI) {\n let isShowTooltip = true;\n const { rowStart } = table.getBodyVisibleRowRange();\n let rowEnd = table.getBodyVisibleRowRange().rowEnd;\n rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n if (row === rowEnd && isShowTooltip) {\n const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;\n const { rowEnd: rowEnd1 } = table.getBodyVisibleRowRange(0, -heightLimitToShowTooltipForEdgeRow);\n if (rowEnd1 === rowEnd) {\n isShowTooltip = true;\n } else {\n const { rowEnd: rowEnd2 } = table.getBodyVisibleRowRange(0, 5);\n if (rowEnd2 !== rowEnd) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n } else if (row === rowStart && isShowTooltip) {\n const heightLimitToShowTooltipForEdgeRow = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow ?? 0;\n const { rowStart: rowStart1 } = table.getBodyVisibleRowRange(heightLimitToShowTooltipForEdgeRow, 0);\n if (rowStart1 === rowStart) {\n isShowTooltip = true;\n } else {\n const { rowStart: rowStart2 } = table.getBodyVisibleRowRange(0, -5);\n if (rowStart2 !== rowStart) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n }\n return isShowTooltip;\n}\n\n/**\n * 检查是否显示tooltip 用于检查是否边缘列,且单元格被滚动遮挡只显示一部分的情况下,检测该图表显示出来至少多宽 可允许显示tooltip。\n * @param col 列号\n * @param table 表格实例\n * @returns 是否显示tooltip\n * @returns\n */\nfunction checkIsShowTooltipForEdgeColumn(col: number, table: BaseTableAPI) {\n let isShowTooltip = true;\n const { colStart } = table.getBodyVisibleColRange();\n let colEnd = table.getBodyVisibleColRange().colEnd;\n colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);\n const chartDimensionLinkage = (table.options as PivotChartConstructorOptions).chartDimensionLinkage;\n if (col === colEnd && isShowTooltip) {\n const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;\n const { colEnd: colEnd1 } = table.getBodyVisibleColRange(0, -widthLimitToShowTooltipForEdgeColumn);\n if (colEnd1 === colEnd) {\n isShowTooltip = true;\n } else {\n const { colEnd: colEnd2 } = table.getBodyVisibleColRange(0, 5);\n if (colEnd2 !== colEnd) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n } else if (col === colStart && isShowTooltip) {\n const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn;\n const { colStart: colStart1 } = table.getBodyVisibleColRange(widthLimitToShowTooltipForEdgeColumn, 0);\n if (colStart1 === colStart) {\n isShowTooltip = true;\n } else {\n const { colStart: colStart2 } = table.getBodyVisibleColRange(0, -5);\n if (colStart2 !== colStart) {\n isShowTooltip = true;\n } else {\n isShowTooltip = false;\n }\n }\n }\n return isShowTooltip;\n}\nexport function clearChartInstanceListByColumnDirection(\n col: number,\n excludedRow: number,\n table: BaseTableAPI,\n forceRelease: boolean = false\n) {\n if (isValid(chartInstanceListColumnByColumnDirection[col])) {\n for (const i in chartInstanceListColumnByColumnDirection[col]) {\n if (isValid(excludedRow) && Number(i) === excludedRow) {\n continue;\n }\n const cellGroup = table.scenegraph.getCell(col, Number(i));\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n chartNode.deactivate(table, {\n forceRelease: forceRelease,\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false\n });\n chartInstanceListColumnByColumnDirection[col][i] = null;\n }\n }\n delete chartInstanceListColumnByColumnDirection[col];\n }\n}\n\nexport function clearChartInstanceListByRowDirection(\n row: number,\n excludedCol: number,\n table: BaseTableAPI,\n forceRelease: boolean = false\n) {\n if (isValid(chartInstanceListRowByRowDirection[row])) {\n for (const i in chartInstanceListRowByRowDirection[row]) {\n if (isValid(excludedCol) && Number(i) === excludedCol) {\n continue;\n }\n const cellGroup = table.scenegraph.getCell(Number(i), row);\n const chartNode = cellGroup?.getChildren()?.[0] as Chart;\n\n if (isValid(chartNode)) {\n chartNode.addUpdateShapeAndBoundsTag();\n chartNode.deactivate(table, {\n forceRelease: forceRelease,\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false\n });\n chartInstanceListRowByRowDirection[row][i] = null;\n }\n }\n }\n delete chartInstanceListRowByRowDirection[row];\n}\nexport function clearDelayRunDimensionHoverTimerForColumnDirection() {\n for (const timer of delayRunDimensionHoverTimerForColumnDirection) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimerForColumnDirection.length = 0;\n}\nexport function clearDelayRunDimensionHoverTimerForRowDirection() {\n for (const timer of delayRunDimensionHoverTimerForRowDirection) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimerForRowDirection.length = 0;\n}\nexport function clearDelayRunDimensionHoverTimerForViewRange() {\n for (const timer of delayRunDimensionHoverTimerForViewRange) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimerForViewRange.length = 0;\n}\n/**\n * 清除所有延迟执行的定时器\n */\nexport function clearDelayRunDimensionHoverTimers() {\n for (const timer of delayRunDimensionHoverTimerForColumnDirection) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimerForColumnDirection.length = 0;\n for (const timer of delayRunDimensionHoverTimerForRowDirection) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimerForRowDirection.length = 0;\n for (const timer of delayRunDimensionHoverTimerForViewRange) {\n clearTimeout(timer);\n }\n delayRunDimensionHoverTimerForViewRange.length = 0;\n}\n\nexport function clearAllChartInstanceList(table: BaseTableAPI, forceRelease: boolean = false) {\n // 清除所有延迟执行的定时器\n clearDelayRunDimensionHoverTimers();\n for (const col in chartInstanceListColumnByColumnDirection) {\n clearChartInstanceListByColumnDirection(Number(col), undefined, table, forceRelease);\n }\n for (const row in chartInstanceListRowByRowDirection) {\n clearChartInstanceListByRowDirection(Number(row), undefined, table, forceRelease);\n }\n}\n\nlet disabledTooltipToAllChartInstances: boolean = false;\nexport function isDisabledTooltipToAllChartInstances() {\n return disabledTooltipToAllChartInstances;\n}\nexport function disableTooltipToAllChartInstances() {\n disabledTooltipToAllChartInstances = true;\n clearDelayRunDimensionHoverTimers();\n for (const col in chartInstanceListColumnByColumnDirection) {\n for (const row in chartInstanceListColumnByColumnDirection[col]) {\n // chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(true);\n // chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(true);\n chartInstanceListColumnByColumnDirection[col][row].disableTooltip(true);\n chartInstanceListColumnByColumnDirection[col][row].hideTooltip();\n }\n }\n for (const row in chartInstanceListRowByRowDirection) {\n for (const col in chartInstanceListRowByRowDirection[row]) {\n // chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(true);\n // chartInstanceListRowByRowDirection[row][col].disableCrossHair(true);\n chartInstanceListRowByRowDirection[row][col].disableTooltip(true);\n chartInstanceListRowByRowDirection[row][col].hideTooltip();\n }\n }\n}\nexport function enableTooltipToAllChartInstances() {\n disabledTooltipToAllChartInstances = false;\n for (const col in chartInstanceListColumnByColumnDirection) {\n for (const row in chartInstanceListColumnByColumnDirection[col]) {\n // chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(false);\n // chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(false);\n chartInstanceListColumnByColumnDirection[col][row].disableTooltip(false);\n }\n }\n for (const row in chartInstanceListRowByRowDirection) {\n for (const col in chartInstanceListRowByRowDirection[row]) {\n // chartInstanceListRowByRowDirection[row][col].getChart().getComponentsByKey('brush')[0].enableDimensionHover();\n // chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(false);\n // chartInstanceListRowByRowDirection[row][col].disableCrossHair(false);\n chartInstanceListRowByRowDirection[row][col].disableTooltip(false);\n }\n }\n}\n"]}
@@ -4,7 +4,7 @@ import { Bounds, merge } from "@visactor/vutils";
4
4
 
5
5
  import { getCellHoverColor } from "../../state/hover/is-cell-hover";
6
6
 
7
- import { setBrushingChartInstance, clearAllChartInstanceList, clearChartInstanceListByColumnDirection, clearChartInstanceListByRowDirection, generateChartInstanceListByColumnDirection, generateChartInstanceListByRowDirection, generateChartInstanceListByViewRange, getBrushingChartInstance, isDisabledTooltipToAllChartInstances } from "./active-cell-chart-list";
7
+ import { setBrushingChartInstance, clearAllChartInstanceList, clearChartInstanceListByColumnDirection, clearChartInstanceListByRowDirection, generateChartInstanceListByColumnDirection, generateChartInstanceListByRowDirection, generateChartInstanceListByViewRange, getBrushingChartInstance, isDisabledTooltipToAllChartInstances, clearAndReleaseBrushingChartInstance } from "./active-cell-chart-list";
8
8
 
9
9
  import { getAxisConfigInPivotChart } from "../../layout/chart-helper/get-axis-config";
10
10
 
@@ -100,9 +100,8 @@ export class Chart extends Rect {
100
100
  var _a;
101
101
  brushChangeThrottle.throttled(null === (_a = null == params ? void 0 : params.value) || void 0 === _a ? void 0 : _a.inBrushData, "brush");
102
102
  }))), this.activeChartInstance.on("brushStart", (params => {
103
- var _a;
104
103
  const brushingChartInstance = getBrushingChartInstance();
105
- brushingChartInstance !== this.activeChartInstance && (brushingChartInstance && (null === (_a = brushingChartInstance.getChart()) || void 0 === _a || _a.getComponentsByKey("brush")[0].clearBrushStateAndMask()),
104
+ brushingChartInstance !== this.activeChartInstance && (brushingChartInstance && clearAndReleaseBrushingChartInstance(table.scenegraph),
106
105
  setBrushingChartInstance(this.activeChartInstance, col, row));
107
106
  })), this.activeChartInstance.on("brushEnd", (params => {
108
107
  var _a;