@visactor/vtable 1.22.11-alpha.4 → 1.22.11-alpha.6
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.
- package/cjs/PivotChart.d.ts +3 -0
- package/cjs/PivotChart.js +12 -5
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/body-helper/style.js +2 -1
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/FouseInput.js +1 -2
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/table-group.js +10 -6
- package/cjs/event/listener/table-group.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/pivot-header-layout.d.ts +6 -0
- package/cjs/layout/pivot-header-layout.js +39 -20
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/plugins/custom-cell-style.js +1 -1
- package/cjs/plugins/index.js +1 -1
- package/cjs/scenegraph/graphic/active-cell-chart-list.d.ts +14 -2
- package/cjs/scenegraph/graphic/active-cell-chart-list.js +195 -75
- package/cjs/scenegraph/graphic/active-cell-chart-list.js.map +1 -1
- package/cjs/scenegraph/graphic/chart.d.ts +9 -1
- package/cjs/scenegraph/graphic/chart.js +48 -20
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.js +3 -4
- package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/cjs/scenegraph/refresh-node/update-chart.d.ts +1 -1
- package/cjs/scenegraph/refresh-node/update-chart.js +2 -1
- package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +2 -2
- package/cjs/scenegraph/scenegraph.js +41 -12
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/state/state.js +1 -1
- package/cjs/themes/theme-define.js +6 -0
- package/cjs/themes/theme-define.js.map +1 -1
- package/cjs/tools/util.d.ts +5 -0
- package/cjs/tools/util.js +22 -4
- package/cjs/tools/util.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +7 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +541 -188
- package/dist/vtable.min.js +2 -2
- package/es/PivotChart.d.ts +3 -0
- package/es/PivotChart.js +13 -4
- package/es/PivotChart.js.map +1 -1
- package/es/body-helper/style.js +2 -1
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/FouseInput.js +1 -2
- package/es/event/event.js.map +1 -1
- package/es/event/listener/table-group.js +9 -6
- package/es/event/listener/table-group.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/pivot-header-layout.d.ts +6 -0
- package/es/layout/pivot-header-layout.js +39 -20
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/plugins/custom-cell-style.js +1 -1
- package/es/plugins/index.js +1 -1
- package/es/scenegraph/graphic/active-cell-chart-list.d.ts +14 -2
- package/es/scenegraph/graphic/active-cell-chart-list.js +183 -68
- package/es/scenegraph/graphic/active-cell-chart-list.js.map +1 -1
- package/es/scenegraph/graphic/chart.d.ts +9 -1
- package/es/scenegraph/graphic/chart.js +47 -19
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.js +3 -4
- package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/es/scenegraph/refresh-node/update-chart.d.ts +1 -1
- package/es/scenegraph/refresh-node/update-chart.js +2 -1
- package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +2 -2
- package/es/scenegraph/scenegraph.js +41 -11
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/state/state.js +1 -1
- package/es/themes/theme-define.js +6 -0
- package/es/themes/theme-define.js.map +1 -1
- package/es/tools/util.d.ts +5 -0
- package/es/tools/util.js +18 -0
- package/es/tools/util.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +7 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +3 -3
|
@@ -104,4 +104,4 @@ export function mergeStyle(cacheStyle, customCellStyle) {
|
|
|
104
104
|
export const registerCustomCellStylePlugin = () => {
|
|
105
105
|
Factory.registerComponent("customCellStylePlugin", CustomCellStylePlugin);
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=custom-cell-style.js.map
|
|
107
|
+
//# sourceMappingURL=custom-cell-style.js.map
|
package/es/plugins/index.js
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import type { BaseTableAPI } from '../../ts-types/base-table';
|
|
2
|
+
export declare function setBrushingChartInstance(chartInstance: any, col: number, row: number): void;
|
|
3
|
+
export declare function clearBrushingChartInstance(): void;
|
|
4
|
+
export declare function getBrushingChartInstance(): any;
|
|
5
|
+
export declare function getBrushingChartInstanceCellPos(): {
|
|
6
|
+
col: number;
|
|
7
|
+
row: number;
|
|
8
|
+
};
|
|
2
9
|
export declare const chartInstanceListColumnByColumnDirection: Record<number, Record<number, any>>;
|
|
3
10
|
export declare const chartInstanceListRowByRowDirection: Record<number, Record<number, any>>;
|
|
4
11
|
export declare function generateChartInstanceListByColumnDirection(col: number, dimensionValueOrXValue: string, positionValueOrYValue: string | number, canvasXY: {
|
|
5
12
|
x: number;
|
|
6
13
|
y: number;
|
|
7
14
|
}, table: BaseTableAPI, hideTooltip?: boolean, isScatter?: boolean): void;
|
|
8
|
-
export declare function clearChartInstanceListByColumnDirection(col: number, excludedRow: number, table: BaseTableAPI): void;
|
|
9
15
|
export declare function generateChartInstanceListByRowDirection(row: number, dimensionValueOrXValue: string, positionValueOrYValue: string | number, canvasXY: {
|
|
10
16
|
x: number;
|
|
11
17
|
y: number;
|
|
12
18
|
}, table: BaseTableAPI, hideTooltip?: boolean, isScatter?: boolean): void;
|
|
13
|
-
export declare function
|
|
19
|
+
export declare function generateChartInstanceListByViewRange(datum: any, table: BaseTableAPI, deactivate?: boolean): void;
|
|
20
|
+
export declare function clearChartInstanceListByColumnDirection(col: number, excludedRow: number, table: BaseTableAPI, forceRelease?: boolean): void;
|
|
21
|
+
export declare function clearChartInstanceListByRowDirection(row: number, excludedCol: number, table: BaseTableAPI, forceRelease?: boolean): void;
|
|
22
|
+
export declare function clearDelayRunDimensionHoverTimers(): void;
|
|
23
|
+
export declare function clearAllChartInstanceList(table: BaseTableAPI, forceRelease?: boolean): void;
|
|
24
|
+
export declare function disableDimensionHoverToAllChartInstances(): void;
|
|
25
|
+
export declare function enableDimensionHoverToAllChartInstances(): void;
|
|
@@ -1,136 +1,223 @@
|
|
|
1
1
|
import { isValid } from "@visactor/vutils";
|
|
2
2
|
|
|
3
|
+
let brushingChartInstance, brushingChartInstanceCellPos = {
|
|
4
|
+
col: -1,
|
|
5
|
+
row: -1
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export function setBrushingChartInstance(chartInstance, col, row) {
|
|
9
|
+
brushingChartInstance = chartInstance, brushingChartInstanceCellPos = {
|
|
10
|
+
col: col,
|
|
11
|
+
row: row
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function clearBrushingChartInstance() {
|
|
16
|
+
brushingChartInstance = void 0, brushingChartInstanceCellPos = {
|
|
17
|
+
col: -1,
|
|
18
|
+
row: -1
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getBrushingChartInstance() {
|
|
23
|
+
return brushingChartInstance;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function getBrushingChartInstanceCellPos() {
|
|
27
|
+
return brushingChartInstanceCellPos;
|
|
28
|
+
}
|
|
29
|
+
|
|
3
30
|
export const chartInstanceListColumnByColumnDirection = {};
|
|
4
31
|
|
|
5
32
|
export const chartInstanceListRowByRowDirection = {};
|
|
6
33
|
|
|
34
|
+
const delayRunDimensionHoverTimer = [];
|
|
35
|
+
|
|
7
36
|
export function generateChartInstanceListByColumnDirection(col, dimensionValueOrXValue, positionValueOrYValue, canvasXY, table, hideTooltip = !1, isScatter = !1) {
|
|
8
37
|
var _a;
|
|
9
|
-
isValid(chartInstanceListColumnByColumnDirection[col]) || (chartInstanceListColumnByColumnDirection[col] = {});
|
|
38
|
+
clearDelayRunDimensionHoverTimers(), isValid(chartInstanceListColumnByColumnDirection[col]) || (chartInstanceListColumnByColumnDirection[col] = {});
|
|
10
39
|
const {rowStart: rowStart} = table.getBodyVisibleRowRange();
|
|
11
40
|
let rowEnd = table.getBodyVisibleRowRange().rowEnd;
|
|
12
41
|
rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
|
|
13
42
|
for (let i = rowStart; i <= rowEnd; i++) {
|
|
14
43
|
const cellGroup = table.scenegraph.getCell(col, i), chartNode = null === (_a = null == cellGroup ? void 0 : cellGroup.getChildren()) || void 0 === _a ? void 0 : _a[0];
|
|
15
|
-
|
|
16
|
-
chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance)
|
|
17
|
-
setTimeout((() => {
|
|
18
|
-
var _a, _b, _c, _d
|
|
44
|
+
chartInstanceListColumnByColumnDirection[col][i] || isValid(chartNode) && (chartNode.addUpdateShapeAndBoundsTag(),
|
|
45
|
+
chartNode.activeChartInstance || chartNode.activate(table), chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance);
|
|
46
|
+
const timer = setTimeout((() => {
|
|
47
|
+
var _a, _b, _c, _d;
|
|
19
48
|
if (null === (_a = chartInstanceListColumnByColumnDirection[col]) || void 0 === _a ? void 0 : _a[i]) {
|
|
20
49
|
const chartDimensionLinkage = table.options.chartDimensionLinkage;
|
|
21
50
|
let isShowTooltip = !isScatter;
|
|
22
|
-
if (
|
|
23
|
-
i ===
|
|
24
|
-
const
|
|
25
|
-
if (rowEnd1 === rowEnd) isShowTooltip = !0; else {
|
|
26
|
-
const {rowEnd: rowEnd2} = table.getBodyVisibleRowRange(0, 5);
|
|
27
|
-
isShowTooltip = rowEnd2 !== rowEnd;
|
|
28
|
-
}
|
|
29
|
-
} else if (i === rowStart && isShowTooltip) {
|
|
30
|
-
const heightLimitToShowTooltipForEdgeRow = null !== (_d = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow) && void 0 !== _d ? _d : 0, {rowStart: rowStart1} = table.getBodyVisibleRowRange(heightLimitToShowTooltipForEdgeRow, 0);
|
|
31
|
-
if (rowStart1 === rowStart) isShowTooltip = !0; else {
|
|
32
|
-
const {rowStart: rowStart2} = table.getBodyVisibleRowRange(0, -5);
|
|
33
|
-
isShowTooltip = rowStart2 !== rowStart;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (isScatter) table.stateManager.hover.cellPos.col === col && table.stateManager.hover.cellPos.row === i || null === (_f = (_e = chartInstanceListColumnByColumnDirection[col][i]).showCrosshair) || void 0 === _f || _f.call(_e, (axis => "left" === axis.layoutOrient ? positionValueOrYValue : dimensionValueOrXValue)); else {
|
|
37
|
-
const bodyBoundryTop = table.frozenRowCount ? table.getCellRelativeRect(col, table.frozenRowCount - 1).bottom : 0, absolutePositionTop = Math.max(bodyBoundryTop, table.getCellRelativeRect(col, i).top);
|
|
51
|
+
if (isScatter || "object" != typeof chartDimensionLinkage || (isShowTooltip = null === (_b = chartDimensionLinkage.showTooltip) || void 0 === _b || _b,
|
|
52
|
+
isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table)), isScatter) table.stateManager.hover.cellPos.col === col && table.stateManager.hover.cellPos.row === i || null === (_d = (_c = chartInstanceListColumnByColumnDirection[col][i]).showCrosshair) || void 0 === _d || _d.call(_c, (axis => "left" === axis.layoutOrient ? positionValueOrYValue : dimensionValueOrXValue)); else {
|
|
53
|
+
const cellBoundry = table.getCellRelativeRect(col, i), bodyBoundryTop = table.frozenRowCount ? table.getCellRelativeRect(col, table.frozenRowCount - 1).bottom : 0, absolutePositionTop = Math.max(bodyBoundryTop, table.getCellRelativeRect(col, i).top);
|
|
38
54
|
hideTooltip ? (table.stateManager.hover.cellPos.col === col && table.stateManager.hover.cellPos.row === i || chartInstanceListColumnByColumnDirection[col][i].hideTooltip(),
|
|
39
55
|
chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {
|
|
40
56
|
tooltip: !1,
|
|
41
57
|
showTooltipOption: {
|
|
42
|
-
x: canvasXY.x,
|
|
43
|
-
y: absolutePositionTop,
|
|
58
|
+
x: canvasXY.x - cellBoundry.left,
|
|
59
|
+
y: absolutePositionTop - cellBoundry.top,
|
|
44
60
|
activeType: "dimension"
|
|
45
61
|
}
|
|
46
62
|
})) : chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {
|
|
47
63
|
tooltip: isShowTooltip,
|
|
48
64
|
showTooltipOption: {
|
|
49
|
-
x: canvasXY.x,
|
|
50
|
-
y: absolutePositionTop,
|
|
65
|
+
x: canvasXY.x - cellBoundry.left,
|
|
66
|
+
y: absolutePositionTop - cellBoundry.top,
|
|
51
67
|
activeType: "dimension"
|
|
52
68
|
}
|
|
53
69
|
});
|
|
54
70
|
}
|
|
55
71
|
}
|
|
56
|
-
}), 0)
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function clearChartInstanceListByColumnDirection(col, excludedRow, table) {
|
|
61
|
-
var _a;
|
|
62
|
-
if (isValid(chartInstanceListColumnByColumnDirection[col])) {
|
|
63
|
-
for (const i in chartInstanceListColumnByColumnDirection[col]) {
|
|
64
|
-
if (isValid(excludedRow) && Number(i) === excludedRow) continue;
|
|
65
|
-
const cellGroup = table.scenegraph.getCell(col, Number(i)), chartNode = null === (_a = null == cellGroup ? void 0 : cellGroup.getChildren()) || void 0 === _a ? void 0 : _a[0];
|
|
66
|
-
chartNode.addUpdateShapeAndBoundsTag(), isValid(chartNode) && (chartNode.deactivate(table, {
|
|
67
|
-
releaseChartInstance: !0,
|
|
68
|
-
releaseColumnChartInstance: !1,
|
|
69
|
-
releaseRowChartInstance: !1
|
|
70
|
-
}), chartInstanceListColumnByColumnDirection[col][i] = null);
|
|
71
|
-
}
|
|
72
|
-
delete chartInstanceListColumnByColumnDirection[col];
|
|
72
|
+
}), 0);
|
|
73
|
+
delayRunDimensionHoverTimer.push(timer), table.scenegraph.updateNextFrame();
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
export function generateChartInstanceListByRowDirection(row, dimensionValueOrXValue, positionValueOrYValue, canvasXY, table, hideTooltip = !1, isScatter = !1) {
|
|
77
78
|
var _a;
|
|
78
|
-
isValid(chartInstanceListRowByRowDirection[row]) || (chartInstanceListRowByRowDirection[row] = {});
|
|
79
|
+
clearDelayRunDimensionHoverTimers(), isValid(chartInstanceListRowByRowDirection[row]) || (chartInstanceListRowByRowDirection[row] = {});
|
|
79
80
|
const {colStart: colStart} = table.getBodyVisibleColRange();
|
|
80
81
|
let colEnd = table.getBodyVisibleColRange().colEnd;
|
|
81
82
|
colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);
|
|
82
83
|
for (let i = colStart; i <= colEnd; i++) {
|
|
83
84
|
const cellGroup = table.scenegraph.getCell(i, row), chartNode = null === (_a = null == cellGroup ? void 0 : cellGroup.getChildren()) || void 0 === _a ? void 0 : _a[0];
|
|
84
|
-
|
|
85
|
-
chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance)
|
|
85
|
+
chartInstanceListRowByRowDirection[row][i] || isValid(chartNode) && (chartNode.addUpdateShapeAndBoundsTag(),
|
|
86
|
+
chartNode.activeChartInstance || chartNode.activate(table), chartInstanceListRowByRowDirection[row][i] = chartNode.activeChartInstance);
|
|
87
|
+
const timer = setTimeout((() => {
|
|
86
88
|
var _a, _b, _c, _d;
|
|
87
89
|
if (null === (_a = chartInstanceListRowByRowDirection[row]) || void 0 === _a ? void 0 : _a[i]) {
|
|
88
90
|
const chartDimensionLinkage = table.options.chartDimensionLinkage;
|
|
89
91
|
let isShowTooltip = !isScatter;
|
|
90
|
-
if (
|
|
91
|
-
i ===
|
|
92
|
-
const
|
|
93
|
-
if (colEnd1 === colEnd) isShowTooltip = !0; else {
|
|
94
|
-
const {colEnd: colEnd2} = table.getBodyVisibleColRange(0, 5);
|
|
95
|
-
isShowTooltip = colEnd2 !== colEnd;
|
|
96
|
-
}
|
|
97
|
-
} else if (i === colStart && isShowTooltip) {
|
|
98
|
-
const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn, {colStart: colStart1} = table.getBodyVisibleColRange(widthLimitToShowTooltipForEdgeColumn, 0);
|
|
99
|
-
if (colStart1 === colStart) isShowTooltip = !0; else {
|
|
100
|
-
const {colStart: colStart2} = table.getBodyVisibleColRange(0, -5);
|
|
101
|
-
isShowTooltip = colStart2 !== colStart;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (isScatter) table.stateManager.hover.cellPos.col === i && table.stateManager.hover.cellPos.row === row || null === (_d = (_c = chartInstanceListRowByRowDirection[row][i]).showCrosshair) || void 0 === _d || _d.call(_c, (axis => "left" === axis.layoutOrient ? positionValueOrYValue : dimensionValueOrXValue)); else {
|
|
105
|
-
const bodyBoundryLeft = table.frozenColCount ? table.getCellRelativeRect(table.frozenColCount - 1, row).right : 0, absolutePositionLeft = Math.max(bodyBoundryLeft, table.getCellRelativeRect(i, row).left);
|
|
92
|
+
if (isScatter || "object" != typeof chartDimensionLinkage || (isShowTooltip = null === (_b = chartDimensionLinkage.showTooltip) || void 0 === _b || _b,
|
|
93
|
+
isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(i, table)), isScatter) table.stateManager.hover.cellPos.col === i && table.stateManager.hover.cellPos.row === row || null === (_d = (_c = chartInstanceListRowByRowDirection[row][i]).showCrosshair) || void 0 === _d || _d.call(_c, (axis => "left" === axis.layoutOrient ? positionValueOrYValue : dimensionValueOrXValue)); else {
|
|
94
|
+
const cellBoundry = table.getCellRelativeRect(i, row), bodyBoundryLeft = table.frozenColCount ? table.getCellRelativeRect(table.frozenColCount - 1, row).right : 0, absolutePositionLeft = Math.max(bodyBoundryLeft, table.getCellRelativeRect(i, row).left);
|
|
106
95
|
hideTooltip ? (table.stateManager.hover.cellPos.col === i && table.stateManager.hover.cellPos.row === row || chartInstanceListRowByRowDirection[row][i].hideTooltip(),
|
|
107
96
|
chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {
|
|
108
97
|
tooltip: !1,
|
|
109
98
|
showTooltipOption: {
|
|
110
|
-
x: absolutePositionLeft,
|
|
111
|
-
y: canvasXY.y,
|
|
99
|
+
x: absolutePositionLeft - cellBoundry.left,
|
|
100
|
+
y: canvasXY.y - cellBoundry.top,
|
|
112
101
|
activeType: "dimension"
|
|
113
102
|
}
|
|
114
103
|
})) : chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {
|
|
115
104
|
tooltip: isShowTooltip,
|
|
116
105
|
showTooltipOption: {
|
|
117
|
-
x: absolutePositionLeft,
|
|
118
|
-
y: canvasXY.y,
|
|
106
|
+
x: absolutePositionLeft - cellBoundry.left,
|
|
107
|
+
y: canvasXY.y - cellBoundry.top,
|
|
119
108
|
activeType: "dimension"
|
|
120
109
|
}
|
|
121
110
|
});
|
|
122
111
|
}
|
|
123
112
|
}
|
|
124
|
-
}), 0)
|
|
113
|
+
}), 0);
|
|
114
|
+
delayRunDimensionHoverTimer.push(timer), table.scenegraph.updateNextFrame();
|
|
125
115
|
}
|
|
126
116
|
}
|
|
127
117
|
|
|
128
|
-
export function
|
|
118
|
+
export function generateChartInstanceListByViewRange(datum, table, deactivate = !1) {
|
|
119
|
+
var _a;
|
|
120
|
+
clearDelayRunDimensionHoverTimers();
|
|
121
|
+
const {rowStart: rowStart} = table.getBodyVisibleRowRange();
|
|
122
|
+
let rowEnd = table.getBodyVisibleRowRange().rowEnd;
|
|
123
|
+
rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
|
|
124
|
+
const {colStart: colStart} = table.getBodyVisibleColRange();
|
|
125
|
+
let colEnd = table.getBodyVisibleColRange().colEnd;
|
|
126
|
+
colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);
|
|
127
|
+
for (let col = colStart; col <= colEnd; col++) {
|
|
128
|
+
isValid(chartInstanceListColumnByColumnDirection[col]) || (chartInstanceListColumnByColumnDirection[col] = {});
|
|
129
|
+
for (let i = rowStart; i <= rowEnd; i++) {
|
|
130
|
+
const cellGroup = table.scenegraph.getCell(col, i), chartNode = null === (_a = null == cellGroup ? void 0 : cellGroup.getChildren()) || void 0 === _a ? void 0 : _a[0];
|
|
131
|
+
chartInstanceListColumnByColumnDirection[col][i] || isValid(chartNode) && (chartNode.addUpdateShapeAndBoundsTag(),
|
|
132
|
+
chartNode.activeChartInstance ? chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance : "pie" === chartNode.attribute.spec.type && (chartNode.activate(table),
|
|
133
|
+
chartInstanceListColumnByColumnDirection[col][i] = chartNode.activeChartInstance));
|
|
134
|
+
const timer = setTimeout((() => {
|
|
135
|
+
var _a, _b;
|
|
136
|
+
if (null === (_a = chartInstanceListColumnByColumnDirection[col]) || void 0 === _a ? void 0 : _a[i]) {
|
|
137
|
+
const chartDimensionLinkage = table.options.chartDimensionLinkage;
|
|
138
|
+
let isShowTooltip = !0;
|
|
139
|
+
"object" == typeof chartDimensionLinkage && (deactivate ? (chartInstanceListColumnByColumnDirection[col][i].setHovered(),
|
|
140
|
+
chartInstanceListColumnByColumnDirection[col][i].hideTooltip()) : (isShowTooltip = null === (_b = chartDimensionLinkage.showTooltip) || void 0 === _b || _b,
|
|
141
|
+
isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeRow(i, table), isShowTooltip = isShowTooltip && checkIsShowTooltipForEdgeColumn(col, table),
|
|
142
|
+
chartInstanceListColumnByColumnDirection[col][i].setHovered(datum), isShowTooltip && chartInstanceListColumnByColumnDirection[col][i].showTooltip(datum, {
|
|
143
|
+
activeType: "mark"
|
|
144
|
+
})));
|
|
145
|
+
}
|
|
146
|
+
}), 0);
|
|
147
|
+
delayRunDimensionHoverTimer.push(timer), table.scenegraph.updateNextFrame();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function checkIsShowTooltipForEdgeRow(row, table) {
|
|
153
|
+
var _a, _b;
|
|
154
|
+
let isShowTooltip = !0;
|
|
155
|
+
const {rowStart: rowStart} = table.getBodyVisibleRowRange();
|
|
156
|
+
let rowEnd = table.getBodyVisibleRowRange().rowEnd;
|
|
157
|
+
rowEnd = Math.min(table.rowCount - 1 - table.bottomFrozenRowCount, rowEnd);
|
|
158
|
+
const chartDimensionLinkage = table.options.chartDimensionLinkage;
|
|
159
|
+
if (row === rowEnd && isShowTooltip) {
|
|
160
|
+
const heightLimitToShowTooltipForEdgeRow = null !== (_a = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow) && void 0 !== _a ? _a : 0, {rowEnd: rowEnd1} = table.getBodyVisibleRowRange(0, -heightLimitToShowTooltipForEdgeRow);
|
|
161
|
+
if (rowEnd1 === rowEnd) isShowTooltip = !0; else {
|
|
162
|
+
const {rowEnd: rowEnd2} = table.getBodyVisibleRowRange(0, 5);
|
|
163
|
+
isShowTooltip = rowEnd2 !== rowEnd;
|
|
164
|
+
}
|
|
165
|
+
} else if (row === rowStart && isShowTooltip) {
|
|
166
|
+
const heightLimitToShowTooltipForEdgeRow = null !== (_b = chartDimensionLinkage.heightLimitToShowTooltipForEdgeRow) && void 0 !== _b ? _b : 0, {rowStart: rowStart1} = table.getBodyVisibleRowRange(heightLimitToShowTooltipForEdgeRow, 0);
|
|
167
|
+
if (rowStart1 === rowStart) isShowTooltip = !0; else {
|
|
168
|
+
const {rowStart: rowStart2} = table.getBodyVisibleRowRange(0, -5);
|
|
169
|
+
isShowTooltip = rowStart2 !== rowStart;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return isShowTooltip;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function checkIsShowTooltipForEdgeColumn(col, table) {
|
|
176
|
+
let isShowTooltip = !0;
|
|
177
|
+
const {colStart: colStart} = table.getBodyVisibleColRange();
|
|
178
|
+
let colEnd = table.getBodyVisibleColRange().colEnd;
|
|
179
|
+
colEnd = Math.min(table.colCount - 1 - table.rightFrozenColCount, colEnd);
|
|
180
|
+
const chartDimensionLinkage = table.options.chartDimensionLinkage;
|
|
181
|
+
if (col === colEnd && isShowTooltip) {
|
|
182
|
+
const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn, {colEnd: colEnd1} = table.getBodyVisibleColRange(0, -widthLimitToShowTooltipForEdgeColumn);
|
|
183
|
+
if (colEnd1 === colEnd) isShowTooltip = !0; else {
|
|
184
|
+
const {colEnd: colEnd2} = table.getBodyVisibleColRange(0, 5);
|
|
185
|
+
isShowTooltip = colEnd2 !== colEnd;
|
|
186
|
+
}
|
|
187
|
+
} else if (col === colStart && isShowTooltip) {
|
|
188
|
+
const widthLimitToShowTooltipForEdgeColumn = chartDimensionLinkage.widthLimitToShowTooltipForEdgeColumn, {colStart: colStart1} = table.getBodyVisibleColRange(widthLimitToShowTooltipForEdgeColumn, 0);
|
|
189
|
+
if (colStart1 === colStart) isShowTooltip = !0; else {
|
|
190
|
+
const {colStart: colStart2} = table.getBodyVisibleColRange(0, -5);
|
|
191
|
+
isShowTooltip = colStart2 !== colStart;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return isShowTooltip;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export function clearChartInstanceListByColumnDirection(col, excludedRow, table, forceRelease = !1) {
|
|
198
|
+
var _a;
|
|
199
|
+
if (isValid(chartInstanceListColumnByColumnDirection[col])) {
|
|
200
|
+
for (const i in chartInstanceListColumnByColumnDirection[col]) {
|
|
201
|
+
if (isValid(excludedRow) && Number(i) === excludedRow) continue;
|
|
202
|
+
const cellGroup = table.scenegraph.getCell(col, Number(i)), chartNode = null === (_a = null == cellGroup ? void 0 : cellGroup.getChildren()) || void 0 === _a ? void 0 : _a[0];
|
|
203
|
+
isValid(chartNode) && (chartNode.addUpdateShapeAndBoundsTag(), chartNode.deactivate(table, {
|
|
204
|
+
forceRelease: forceRelease,
|
|
205
|
+
releaseChartInstance: !0,
|
|
206
|
+
releaseColumnChartInstance: !1,
|
|
207
|
+
releaseRowChartInstance: !1
|
|
208
|
+
}), chartInstanceListColumnByColumnDirection[col][i] = null);
|
|
209
|
+
}
|
|
210
|
+
delete chartInstanceListColumnByColumnDirection[col];
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export function clearChartInstanceListByRowDirection(row, excludedCol, table, forceRelease = !1) {
|
|
129
215
|
var _a;
|
|
130
216
|
if (isValid(chartInstanceListRowByRowDirection[row])) for (const i in chartInstanceListRowByRowDirection[row]) {
|
|
131
217
|
if (isValid(excludedCol) && Number(i) === excludedCol) continue;
|
|
132
218
|
const cellGroup = table.scenegraph.getCell(Number(i), row), chartNode = null === (_a = null == cellGroup ? void 0 : cellGroup.getChildren()) || void 0 === _a ? void 0 : _a[0];
|
|
133
|
-
|
|
219
|
+
isValid(chartNode) && (chartNode.addUpdateShapeAndBoundsTag(), chartNode.deactivate(table, {
|
|
220
|
+
forceRelease: forceRelease,
|
|
134
221
|
releaseChartInstance: !0,
|
|
135
222
|
releaseColumnChartInstance: !1,
|
|
136
223
|
releaseRowChartInstance: !1
|
|
@@ -138,4 +225,32 @@ export function clearChartInstanceListByRowDirection(row, excludedCol, table) {
|
|
|
138
225
|
}
|
|
139
226
|
delete chartInstanceListRowByRowDirection[row];
|
|
140
227
|
}
|
|
228
|
+
|
|
229
|
+
export function clearDelayRunDimensionHoverTimers() {
|
|
230
|
+
for (const timer of delayRunDimensionHoverTimer) clearTimeout(timer);
|
|
231
|
+
delayRunDimensionHoverTimer.length = 0;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export function clearAllChartInstanceList(table, forceRelease = !1) {
|
|
235
|
+
clearDelayRunDimensionHoverTimers();
|
|
236
|
+
for (const col in chartInstanceListColumnByColumnDirection) clearChartInstanceListByColumnDirection(Number(col), void 0, table, forceRelease);
|
|
237
|
+
for (const row in chartInstanceListRowByRowDirection) clearChartInstanceListByRowDirection(Number(row), void 0, table, forceRelease);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export function disableDimensionHoverToAllChartInstances() {
|
|
241
|
+
clearDelayRunDimensionHoverTimers();
|
|
242
|
+
for (const col in chartInstanceListColumnByColumnDirection) for (const row in chartInstanceListColumnByColumnDirection[col]) chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(!0),
|
|
243
|
+
chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(!0), chartInstanceListColumnByColumnDirection[col][row].disableTooltip(!0),
|
|
244
|
+
chartInstanceListColumnByColumnDirection[col][row].hideTooltip();
|
|
245
|
+
for (const row in chartInstanceListRowByRowDirection) for (const col in chartInstanceListRowByRowDirection[row]) chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(!0),
|
|
246
|
+
chartInstanceListRowByRowDirection[row][col].disableCrossHair(!0), chartInstanceListRowByRowDirection[row][col].disableTooltip(!0),
|
|
247
|
+
chartInstanceListRowByRowDirection[row][col].hideTooltip();
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export function enableDimensionHoverToAllChartInstances() {
|
|
251
|
+
for (const col in chartInstanceListColumnByColumnDirection) for (const row in chartInstanceListColumnByColumnDirection[col]) chartInstanceListColumnByColumnDirection[col][row].disableDimensionHoverEvent(!1),
|
|
252
|
+
chartInstanceListColumnByColumnDirection[col][row].disableCrossHair(!1), chartInstanceListColumnByColumnDirection[col][row].disableTooltip(!1);
|
|
253
|
+
for (const row in chartInstanceListRowByRowDirection) for (const col in chartInstanceListRowByRowDirection[row]) chartInstanceListRowByRowDirection[row][col].disableDimensionHoverEvent(!1),
|
|
254
|
+
chartInstanceListRowByRowDirection[row][col].disableCrossHair(!1), chartInstanceListRowByRowDirection[row][col].disableTooltip(!1);
|
|
255
|
+
}
|
|
141
256
|
//# sourceMappingURL=active-cell-chart-list.js.map
|
|
@@ -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';\nimport { debug } from 'console';\n\n//存储可视区域内鼠标hover到的该列的图表实例,key为列号做个缓存\nexport const chartInstanceListColumnByColumnDirection: Record<number, Record<number, any>> = {};\nexport const chartInstanceListRowByRowDirection: Record<number, Record<number, any>> = {};\n\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 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 chartNode.addUpdateShapeAndBoundsTag();\n if (chartInstanceListColumnByColumnDirection[col][i]) {\n } else if (isValid(chartNode)) {\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 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 if (i === 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 (i === 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 }\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 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: { x: canvasXY.x, y: absolutePositionTop, activeType: 'dimension' }\n });\n } else {\n chartInstanceListColumnByColumnDirection[col][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: isShowTooltip,\n showTooltipOption: { x: canvasXY.x, y: absolutePositionTop, activeType: 'dimension' }\n });\n }\n }\n }\n }, 0);\n\n table.scenegraph.updateNextFrame();\n }\n}\nexport function clearChartInstanceListByColumnDirection(col: number, excludedRow: number, table: BaseTableAPI) {\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 chartNode.addUpdateShapeAndBoundsTag();\n if (isValid(chartNode)) {\n chartNode.deactivate(table, {\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false\n });\n chartInstanceListColumnByColumnDirection[col][i] = null;\n }\n }\n delete chartInstanceListColumnByColumnDirection[col];\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 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 chartNode.addUpdateShapeAndBoundsTag();\n if (chartInstanceListRowByRowDirection[row][i]) {\n } else if (isValid(chartNode)) {\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 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 if (i === 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 (i === 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 }\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 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 console.log('hideTooltip', row, i);\n chartInstanceListRowByRowDirection[row][i].hideTooltip();\n }\n chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: false,\n showTooltipOption: { x: absolutePositionLeft, y: canvasXY.y, activeType: 'dimension' }\n });\n } else {\n chartInstanceListRowByRowDirection[row][i].setDimensionIndex(dimensionValueOrXValue, {\n tooltip: isShowTooltip,\n showTooltipOption: { x: absolutePositionLeft, y: canvasXY.y, activeType: 'dimension' }\n });\n }\n }\n }\n }, 0);\n\n table.scenegraph.updateNextFrame();\n }\n}\n\nexport function clearChartInstanceListByRowDirection(row: number, excludedCol: number, table: BaseTableAPI) {\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 chartNode.addUpdateShapeAndBoundsTag();\n if (isValid(chartNode)) {\n chartNode.deactivate(table, {\n releaseChartInstance: true,\n releaseColumnChartInstance: false,\n releaseRowChartInstance: false\n });\n chartInstanceListRowByRowDirection[row][i] = null;\n console.log('clearChartInstanceListByRowDirection', row, i);\n }\n }\n }\n delete chartInstanceListRowByRowDirection[row];\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 { debug } from 'console';\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}\nexport function clearBrushingChartInstance() {\n brushingChartInstance = undefined;\n brushingChartInstanceCellPos = { col: -1, row: -1 };\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\nexport function disableDimensionHoverToAllChartInstances() {\n clearDelayRunDimensionHoverTimers();\n for (const col in chartInstanceListColumnByColumnDirection) {\n for (const row in chartInstanceListColumnByColumnDirection[col]) {\n // chartInstanceListColumnByColumnDirection[col][row]\n // .getChart()\n // .getComponentsByKey('brush')[0]\n // .disableDimensionHover();\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 enableDimensionHoverToAllChartInstances() {\n for (const col in chartInstanceListColumnByColumnDirection) {\n for (const row in chartInstanceListColumnByColumnDirection[col]) {\n // chartInstanceListColumnByColumnDirection[col][row]\n // .getChart()\n // .getComponentsByKey('brush')[0]\n // .enableDimensionHover();\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"]}
|
|
@@ -24,6 +24,12 @@ export declare class Chart extends Rect {
|
|
|
24
24
|
attribute: IChartGraphicAttribute;
|
|
25
25
|
chartInstance: any;
|
|
26
26
|
activeChartInstance: any;
|
|
27
|
+
activeChartInstanceLastViewBox: {
|
|
28
|
+
x1: number;
|
|
29
|
+
y1: number;
|
|
30
|
+
x2: number;
|
|
31
|
+
y2: number;
|
|
32
|
+
};
|
|
27
33
|
activeChartInstanceHoverOnMark: any;
|
|
28
34
|
justShowMarkTooltip: boolean;
|
|
29
35
|
justShowMarkTooltipTimer: number;
|
|
@@ -39,10 +45,12 @@ export declare class Chart extends Rect {
|
|
|
39
45
|
constructor(isShareChartSpec: boolean, params: IChartGraphicAttribute);
|
|
40
46
|
activate(table: BaseTableAPI): void;
|
|
41
47
|
static temp: number;
|
|
42
|
-
deactivate(table: BaseTableAPI, { releaseChartInstance, releaseColumnChartInstance, releaseRowChartInstance }?: {
|
|
48
|
+
deactivate(table: BaseTableAPI, { forceRelease, releaseChartInstance, releaseColumnChartInstance, releaseRowChartInstance, releaseAllChartInstance }?: {
|
|
49
|
+
forceRelease?: boolean;
|
|
43
50
|
releaseChartInstance?: boolean;
|
|
44
51
|
releaseColumnChartInstance?: boolean;
|
|
45
52
|
releaseRowChartInstance?: boolean;
|
|
53
|
+
releaseAllChartInstance?: boolean;
|
|
46
54
|
}): void;
|
|
47
55
|
updateData(data: any): void;
|
|
48
56
|
getViewBox(): {
|