@visactor/vtable 0.11.1-alpha.9 → 0.12.0-alpha.0
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/ListTable.d.ts +0 -2
- package/cjs/ListTable.js +10 -16
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotChart.d.ts +2 -2
- package/cjs/PivotChart.js +53 -28
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/PivotTable.d.ts +1 -1
- package/cjs/PivotTable.js +63 -31
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/core/BaseTable.js +6 -6
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/dataset/dataset-pivot-table.js +5 -12
- package/cjs/dataset/dataset.d.ts +9 -8
- package/cjs/dataset/dataset.js +105 -61
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/dataset/flatDataToObject.js +2 -3
- package/cjs/event/event.js +2 -1
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/container-dom.js +1 -1
- package/cjs/event/listener/scroll-bar.js +6 -6
- package/cjs/event/listener/scroll-bar.js.map +1 -1
- package/cjs/event/pivot-chart/axis-click.js.map +1 -1
- package/cjs/event/pivot-chart/axis-hover.js.map +1 -1
- package/cjs/event/sparkline-event.js.map +1 -1
- package/cjs/index.d.ts +1 -2
- package/cjs/index.js +2 -3
- package/cjs/index.js.map +1 -1
- package/cjs/layout/chart-helper/get-axis-config.d.ts +4 -4
- package/cjs/layout/chart-helper/get-axis-config.js +25 -23
- package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
- package/cjs/layout/chart-helper/get-axis-domain.d.ts +1 -1
- package/cjs/layout/chart-helper/get-axis-domain.js +2 -2
- package/cjs/layout/chart-helper/get-axis-domain.js.map +1 -1
- package/cjs/layout/chart-helper/get-chart-spec.d.ts +4 -5
- package/cjs/layout/chart-helper/get-chart-spec.js +14 -13
- package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
- package/cjs/layout/pivot-header-layout.d.ts +58 -44
- package/cjs/layout/pivot-header-layout.js +425 -200
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/pivot-layout-helper.d.ts +40 -0
- package/cjs/layout/pivot-layout-helper.js +96 -0
- package/cjs/layout/pivot-layout-helper.js.map +1 -0
- package/cjs/layout/pivot-layout.d.ts +1 -145
- package/cjs/layout/pivot-layout.js +0 -819
- package/cjs/layout/pivot-layout.js.map +1 -1
- package/cjs/layout/simple-header-layout.d.ts +1 -1
- package/cjs/layout/simple-header-layout.js +2 -2
- package/cjs/layout/simple-header-layout.js.map +1 -1
- package/cjs/scenegraph/component/menu.d.ts +41 -0
- package/cjs/scenegraph/context/module.js +2 -4
- package/cjs/scenegraph/debug-tool/debug-tool.js +1 -1
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.js +2 -2
- package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +9 -9
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/image-contribution-render.js +3 -3
- package/cjs/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/index.d.ts +1 -1
- package/cjs/scenegraph/graphic/contributions/index.js +2 -2
- package/cjs/scenegraph/graphic/contributions/index.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +3 -3
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/group.d.ts +3 -0
- package/cjs/scenegraph/graphic/group.js +20 -0
- package/cjs/scenegraph/graphic/group.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.d.ts +3 -0
- package/cjs/scenegraph/group-creater/progress/proxy.js +15 -13
- package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -3
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js +2 -2
- package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-row.d.ts +1 -1
- package/cjs/scenegraph/layout/update-row.js +5 -1
- package/cjs/scenegraph/layout/update-row.js.map +1 -1
- package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -1
- package/cjs/scenegraph/scenegraph.js +9 -6
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/utils/break-string.js +3 -4
- package/cjs/scenegraph/utils/deal-promise-data.js +1 -3
- package/cjs/scenegraph/utils/render-service.d.ts +7 -0
- package/cjs/scenegraph/utils/render-service.js +27 -0
- package/cjs/scenegraph/utils/render-service.js.map +1 -0
- package/{es/scenegraph/utils/measure-text.d.ts → cjs/scenegraph/utils/text-measure.d.ts} +10 -3
- package/cjs/scenegraph/utils/{measure-text.js → text-measure.js} +30 -15
- package/cjs/scenegraph/utils/text-measure.js.map +1 -0
- package/cjs/state/state.d.ts +1 -0
- package/cjs/state/state.js +4 -2
- package/cjs/state/state.js.map +1 -1
- package/cjs/themes/BRIGHT.js +1 -2
- package/cjs/themes/DARK.js +2 -1
- package/cjs/tools/LimitPromiseQueue.js +1 -1
- package/cjs/tools/calc.js +1 -1
- package/cjs/tools/diff-cell.d.ts +9 -2
- package/cjs/tools/diff-cell.js +16 -4
- package/cjs/tools/diff-cell.js.map +1 -1
- package/cjs/tools/get-data-path/create-dataset.js +2 -2
- package/cjs/tools/get-data-path/create-dataset.js.map +1 -1
- package/cjs/tools/get-data-path/index.js +9 -4
- package/cjs/tools/get-data-path/index.js.map +1 -1
- package/cjs/tools/isx.d.ts +1 -1
- package/cjs/tools/util.d.ts +1 -3
- package/cjs/tools/util.js +2 -33
- package/cjs/tools/util.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +14 -6
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/list-table/layout-map/api.d.ts +2 -2
- package/cjs/ts-types/list-table/layout-map/api.js.map +1 -1
- package/cjs/ts-types/new-data-set.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +9 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/dist/vtable.js +58066 -69799
- package/dist/vtable.min.js +12 -14
- package/es/ListTable.d.ts +0 -2
- package/es/ListTable.js +8 -12
- package/es/ListTable.js.map +1 -1
- package/es/PivotChart.d.ts +2 -2
- package/es/PivotChart.js +53 -29
- package/es/PivotChart.js.map +1 -1
- package/es/PivotTable.d.ts +1 -1
- package/es/PivotTable.js +61 -32
- package/es/PivotTable.js.map +1 -1
- package/es/core/BaseTable.js +5 -5
- package/es/core/BaseTable.js.map +1 -1
- package/es/dataset/dataset-pivot-table.js +5 -12
- package/es/dataset/dataset.d.ts +9 -8
- package/es/dataset/dataset.js +104 -61
- package/es/dataset/dataset.js.map +1 -1
- package/es/dataset/flatDataToObject.js +2 -3
- package/es/event/event.js +2 -1
- package/es/event/event.js.map +1 -1
- package/es/event/listener/container-dom.js +1 -1
- package/es/event/listener/scroll-bar.js +6 -6
- package/es/event/listener/scroll-bar.js.map +1 -1
- package/es/event/pivot-chart/axis-click.js.map +1 -1
- package/es/event/pivot-chart/axis-hover.js.map +1 -1
- package/es/event/sparkline-event.js.map +1 -1
- package/es/index.d.ts +1 -2
- package/es/index.js +1 -3
- package/es/index.js.map +1 -1
- package/es/layout/chart-helper/get-axis-config.d.ts +4 -4
- package/es/layout/chart-helper/get-axis-config.js +21 -19
- package/es/layout/chart-helper/get-axis-config.js.map +1 -1
- package/es/layout/chart-helper/get-axis-domain.d.ts +1 -1
- package/es/layout/chart-helper/get-axis-domain.js +2 -2
- package/es/layout/chart-helper/get-axis-domain.js.map +1 -1
- package/es/layout/chart-helper/get-chart-spec.d.ts +4 -5
- package/es/layout/chart-helper/get-chart-spec.js +13 -12
- package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
- package/es/layout/pivot-header-layout.d.ts +58 -44
- package/es/layout/pivot-header-layout.js +425 -197
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/pivot-layout-helper.d.ts +40 -0
- package/es/layout/pivot-layout-helper.js +94 -0
- package/es/layout/pivot-layout-helper.js.map +1 -0
- package/es/layout/pivot-layout.d.ts +1 -145
- package/es/layout/pivot-layout.js +1 -823
- package/es/layout/pivot-layout.js.map +1 -1
- package/es/layout/simple-header-layout.d.ts +1 -1
- package/es/layout/simple-header-layout.js +2 -2
- package/es/layout/simple-header-layout.js.map +1 -1
- package/es/scenegraph/component/menu.d.ts +41 -0
- package/es/scenegraph/context/module.js +2 -4
- package/es/scenegraph/debug-tool/debug-tool.js +1 -1
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.js +1 -3
- package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/group-contribution-render.js +1 -3
- package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/image-contribution-render.js +1 -3
- package/es/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/index.d.ts +1 -1
- package/es/scenegraph/graphic/contributions/index.js +1 -3
- package/es/scenegraph/graphic/contributions/index.js.map +1 -1
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js +1 -3
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/group.d.ts +3 -0
- package/es/scenegraph/graphic/group.js +20 -0
- package/es/scenegraph/graphic/group.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/es/scenegraph/group-creater/progress/proxy.d.ts +3 -0
- package/es/scenegraph/group-creater/progress/proxy.js +15 -13
- package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -3
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +1 -1
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/compute-row-height.js +2 -2
- package/es/scenegraph/layout/compute-row-height.js.map +1 -1
- package/es/scenegraph/layout/update-row.d.ts +1 -1
- package/es/scenegraph/layout/update-row.js +5 -1
- package/es/scenegraph/layout/update-row.js.map +1 -1
- package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -1
- package/es/scenegraph/scenegraph.js +10 -7
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/utils/break-string.js +3 -4
- package/es/scenegraph/utils/deal-promise-data.js +1 -3
- package/es/scenegraph/utils/render-service.d.ts +7 -0
- package/es/scenegraph/utils/render-service.js +19 -0
- package/es/scenegraph/utils/render-service.js.map +1 -0
- package/{cjs/scenegraph/utils/measure-text.d.ts → es/scenegraph/utils/text-measure.d.ts} +10 -3
- package/es/scenegraph/utils/{measure-text.js → text-measure.js} +31 -19
- package/es/scenegraph/utils/text-measure.js.map +1 -0
- package/es/state/state.d.ts +1 -0
- package/es/state/state.js +4 -2
- package/es/state/state.js.map +1 -1
- package/es/themes/BRIGHT.js +1 -2
- package/es/themes/DARK.js +2 -1
- package/es/tools/LimitPromiseQueue.js +1 -1
- package/es/tools/calc.js +1 -1
- package/es/tools/diff-cell.d.ts +9 -2
- package/es/tools/diff-cell.js +16 -4
- package/es/tools/diff-cell.js.map +1 -1
- package/es/tools/get-data-path/create-dataset.js +2 -2
- package/es/tools/get-data-path/create-dataset.js.map +1 -1
- package/es/tools/get-data-path/index.js +10 -5
- package/es/tools/get-data-path/index.js.map +1 -1
- package/es/tools/isx.d.ts +1 -1
- package/es/tools/util.d.ts +1 -3
- package/es/tools/util.js +1 -31
- package/es/tools/util.js.map +1 -1
- package/es/ts-types/base-table.d.ts +14 -6
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/list-table/layout-map/api.d.ts +2 -2
- package/es/ts-types/list-table/layout-map/api.js.map +1 -1
- package/es/ts-types/new-data-set.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +9 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/package.json +6 -7
- package/cjs/components/axis/get-axis-attributes.d.ts +0 -151
- package/cjs/scenegraph/utils/measure-text.js.map +0 -1
- package/es/components/axis/get-axis-attributes.d.ts +0 -151
- package/es/scenegraph/utils/measure-text.js.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { NumberMap } from '../tools/NumberMap';
|
|
2
|
+
import type { Either } from '../tools/helper';
|
|
3
|
+
import type { CellInfo, ColumnIconOption, ICustomRender, LayoutObjectId } from '../ts-types';
|
|
4
|
+
import { HierarchyState } from '../ts-types';
|
|
5
|
+
interface IPivotLayoutBaseHeadNode {
|
|
6
|
+
id: number;
|
|
7
|
+
value: string;
|
|
8
|
+
children: IPivotLayoutHeadNode[] | undefined;
|
|
9
|
+
level: number;
|
|
10
|
+
startIndex: number;
|
|
11
|
+
size: number;
|
|
12
|
+
startInTotal: number;
|
|
13
|
+
customRender?: ICustomRender;
|
|
14
|
+
hierarchyState: HierarchyState;
|
|
15
|
+
headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);
|
|
16
|
+
}
|
|
17
|
+
interface IPivotLayoutDimensionHeadNode extends IPivotLayoutBaseHeadNode {
|
|
18
|
+
dimensionKey: string;
|
|
19
|
+
}
|
|
20
|
+
interface IPivotLayoutIndicatorHeadNode extends IPivotLayoutBaseHeadNode {
|
|
21
|
+
indicatorKey: string;
|
|
22
|
+
}
|
|
23
|
+
export type IPivotLayoutHeadNode = Either<IPivotLayoutDimensionHeadNode, IPivotLayoutIndicatorHeadNode>;
|
|
24
|
+
export declare class DimensionTree {
|
|
25
|
+
sizeIncludeParent: boolean;
|
|
26
|
+
rowExpandLevel: number;
|
|
27
|
+
hierarchyType: 'grid' | 'tree';
|
|
28
|
+
tree: IPivotLayoutHeadNode;
|
|
29
|
+
totalLevel: number;
|
|
30
|
+
dimensionKeys: NumberMap<string>;
|
|
31
|
+
constructor(tree: IPivotLayoutHeadNode[], hierarchyType?: 'grid' | 'tree', rowExpandLevel?: number);
|
|
32
|
+
reset(tree: IPivotLayoutHeadNode[], updateTreeNode?: boolean): void;
|
|
33
|
+
setTreeNode(node: IPivotLayoutHeadNode, startIndex: number, parent: IPivotLayoutHeadNode): number;
|
|
34
|
+
getTreePath(index: number, maxDeep?: number): Array<IPivotLayoutHeadNode>;
|
|
35
|
+
getTreePathByCellIds(ids: LayoutObjectId[]): Array<IPivotLayoutHeadNode>;
|
|
36
|
+
findNodeById(nodes: IPivotLayoutHeadNode[], id: LayoutObjectId): IPivotLayoutHeadNode;
|
|
37
|
+
searchPath(index: number, node: IPivotLayoutHeadNode, path: Array<IPivotLayoutHeadNode>, maxDeep: number): boolean;
|
|
38
|
+
movePosition(level: number, sourceIndex: number, targetIndex: number): void;
|
|
39
|
+
}
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { NumberMap } from "../tools/NumberMap";
|
|
2
|
+
|
|
3
|
+
import { IndicatorDimensionKeyPlaceholder } from "../tools/global";
|
|
4
|
+
|
|
5
|
+
import { HierarchyState } from "../ts-types";
|
|
6
|
+
|
|
7
|
+
import { sharedVar } from "./pivot-header-layout";
|
|
8
|
+
|
|
9
|
+
export class DimensionTree {
|
|
10
|
+
constructor(tree, hierarchyType = "grid", rowExpandLevel = void 0) {
|
|
11
|
+
this.sizeIncludeParent = !1, this.tree = {
|
|
12
|
+
id: 0,
|
|
13
|
+
dimensionKey: "",
|
|
14
|
+
value: "",
|
|
15
|
+
children: [],
|
|
16
|
+
level: -1,
|
|
17
|
+
startIndex: 0,
|
|
18
|
+
size: 0,
|
|
19
|
+
startInTotal: 0,
|
|
20
|
+
hierarchyState: void 0
|
|
21
|
+
}, this.totalLevel = 0, this.dimensionKeys = new NumberMap, this.sizeIncludeParent = null != rowExpandLevel,
|
|
22
|
+
this.rowExpandLevel = rowExpandLevel, this.hierarchyType = hierarchyType, this.reset(tree);
|
|
23
|
+
}
|
|
24
|
+
reset(tree, updateTreeNode = !1) {
|
|
25
|
+
this.dimensionKeys = new NumberMap, this.tree.children = tree, this.setTreeNode(this.tree, 0, this.tree),
|
|
26
|
+
this.totalLevel = this.dimensionKeys.count();
|
|
27
|
+
}
|
|
28
|
+
setTreeNode(node, startIndex, parent) {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
30
|
+
node.startIndex = startIndex, node.startInTotal = (null !== (_a = parent.startInTotal) && void 0 !== _a ? _a : 0) + node.startIndex,
|
|
31
|
+
(null !== (_b = node.dimensionKey) && void 0 !== _b ? _b : node.indicatorKey) && (!this.dimensionKeys.contain(node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey) && this.dimensionKeys.put(node.level, node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey),
|
|
32
|
+
node.id || (node.id = ++sharedVar.seqId));
|
|
33
|
+
let size = node.dimensionKey && this.sizeIncludeParent ? 1 : 0;
|
|
34
|
+
return "grid" === this.hierarchyType ? (null === (_c = node.children) || void 0 === _c ? void 0 : _c.length) >= 1 ? node.children.forEach((n => {
|
|
35
|
+
var _a;
|
|
36
|
+
n.level = (null !== (_a = node.level) && void 0 !== _a ? _a : 0) + 1, size += this.setTreeNode(n, size, node);
|
|
37
|
+
})) : size = 1 : node.hierarchyState === HierarchyState.expand && (null === (_d = node.children) || void 0 === _d ? void 0 : _d.length) >= 1 ? node.children.forEach((n => {
|
|
38
|
+
var _a;
|
|
39
|
+
n.level = (null !== (_a = node.level) && void 0 !== _a ? _a : 0) + 1, size += this.setTreeNode(n, size, node);
|
|
40
|
+
})) : node.hierarchyState === HierarchyState.collapse && (null === (_e = node.children) || void 0 === _e ? void 0 : _e.length) >= 1 ? node.children.forEach((n => {
|
|
41
|
+
var _a;
|
|
42
|
+
n.level = (null !== (_a = node.level) && void 0 !== _a ? _a : 0) + 1, this.setTreeNode(n, size, node);
|
|
43
|
+
})) : !node.hierarchyState && node.level + 1 < this.rowExpandLevel && (null === (_f = node.children) || void 0 === _f ? void 0 : _f.length) >= 1 ? (node.hierarchyState = HierarchyState.expand,
|
|
44
|
+
node.children.forEach((n => {
|
|
45
|
+
var _a;
|
|
46
|
+
n.level = (null !== (_a = node.level) && void 0 !== _a ? _a : 0) + 1, size += this.setTreeNode(n, size, node);
|
|
47
|
+
}))) : (null === (_g = node.children) || void 0 === _g ? void 0 : _g.length) >= 1 ? (node.hierarchyState = HierarchyState.collapse,
|
|
48
|
+
node.children.forEach((n => {
|
|
49
|
+
var _a;
|
|
50
|
+
n.level = (null !== (_a = node.level) && void 0 !== _a ? _a : 0) + 1, this.setTreeNode(n, size, node);
|
|
51
|
+
}))) : (node.hierarchyState = HierarchyState.none, size = 1), node.size = size,
|
|
52
|
+
size;
|
|
53
|
+
}
|
|
54
|
+
getTreePath(index, maxDeep = 30) {
|
|
55
|
+
const path = [];
|
|
56
|
+
return this.searchPath(index, this.tree, path, maxDeep), path.shift(), path;
|
|
57
|
+
}
|
|
58
|
+
getTreePathByCellIds(ids) {
|
|
59
|
+
const path = [];
|
|
60
|
+
let nodes = this.tree.children;
|
|
61
|
+
for (let i = 0; i < ids.length; i++) {
|
|
62
|
+
const id = ids[i], pathNode = this.findNodeById(nodes, id);
|
|
63
|
+
if (!pathNode) break;
|
|
64
|
+
path.push(pathNode), nodes = pathNode.children;
|
|
65
|
+
}
|
|
66
|
+
return path;
|
|
67
|
+
}
|
|
68
|
+
findNodeById(nodes, id) {
|
|
69
|
+
return nodes.find((node => node.id === id));
|
|
70
|
+
}
|
|
71
|
+
searchPath(index, node, path, maxDeep) {
|
|
72
|
+
if (!node) return !1;
|
|
73
|
+
if (index < node.startIndex || index >= node.startIndex + node.size) return !1;
|
|
74
|
+
if (path.push(node), !node.children || 0 === node.children.length) return !0;
|
|
75
|
+
if (node.level >= maxDeep) return !0;
|
|
76
|
+
const cIndex = index - node.startIndex;
|
|
77
|
+
return node.children.some((n => this.searchPath(cIndex, n, path, maxDeep))), !0;
|
|
78
|
+
}
|
|
79
|
+
movePosition(level, sourceIndex, targetIndex) {
|
|
80
|
+
let parNode, sourceSubIndex, targetSubIndex;
|
|
81
|
+
const findTargetNode = (node, subIndex) => {
|
|
82
|
+
if ((void 0 === sourceSubIndex || void 0 === targetSubIndex) && (node.level === level && (node.startInTotal === sourceIndex && (sourceSubIndex = subIndex),
|
|
83
|
+
node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1 && (targetSubIndex = subIndex)),
|
|
84
|
+
node.children && node.level < level)) {
|
|
85
|
+
parNode = node;
|
|
86
|
+
for (let i = 0; i < node.children.length; i++) (sourceIndex >= node.children[i].startInTotal && sourceIndex <= node.children[i].startInTotal + node.children[i].size || targetIndex >= node.children[i].startInTotal && targetIndex <= node.children[i].startInTotal + node.children[i].size) && findTargetNode(node.children[i], i);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
findTargetNode(this.tree, 0);
|
|
90
|
+
const sourceColumns = parNode.children.splice(sourceSubIndex, 1);
|
|
91
|
+
sourceColumns.unshift(targetSubIndex, 0), Array.prototype.splice.apply(parNode.children, sourceColumns);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=pivot-layout-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["layout/pivot-layout-helper.ts"],"names":[],"mappings":"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","file":"pivot-layout-helper.js","sourcesContent":["import { NumberMap } from '../tools/NumberMap';\nimport { IndicatorDimensionKeyPlaceholder } from '../tools/global';\nimport type { Either } from '../tools/helper';\nimport type { CellInfo, ColumnIconOption, ICustomRender, LayoutObjectId } from '../ts-types';\nimport { HierarchyState } from '../ts-types';\nimport { sharedVar } from './pivot-header-layout';\n\ninterface IPivotLayoutBaseHeadNode {\n id: number;\n // dimensionKey: string;\n // // title: string;\n // indicatorKey?: string;\n value: string;\n children: IPivotLayoutHeadNode[] | undefined;\n level: number;\n startIndex: number;\n size: number; //对应到colSpan或者rowSpan\n // parsing?: 'img' | 'link' | 'video' | 'templateLink';\n startInTotal: number;\n // headerStyle:HeaderStyleOption| null;\n customRender?: ICustomRender;\n\n hierarchyState: HierarchyState;\n headerIcon?: (string | ColumnIconOption)[] | ((args: CellInfo) => (string | ColumnIconOption)[]);\n}\n\ninterface IPivotLayoutDimensionHeadNode extends IPivotLayoutBaseHeadNode {\n dimensionKey: string;\n}\ninterface IPivotLayoutIndicatorHeadNode extends IPivotLayoutBaseHeadNode {\n indicatorKey: string;\n}\nexport type IPivotLayoutHeadNode = Either<IPivotLayoutDimensionHeadNode, IPivotLayoutIndicatorHeadNode>;\nexport class DimensionTree {\n // 每一个值对应的序号 结果缓存\n // cache: {\n // [propName: string]: any;\n // };\n //树形展示 会将非叶子节点单独展示一行 所以size会增加非叶子节点的个数\n sizeIncludeParent = false;\n rowExpandLevel: number;\n hierarchyType: 'grid' | 'tree';\n tree: IPivotLayoutHeadNode = {\n id: 0,\n dimensionKey: '',\n // title: '',\n value: '',\n children: [],\n level: -1,\n startIndex: 0,\n size: 0,\n startInTotal: 0,\n hierarchyState: undefined\n };\n\n totalLevel = 0;\n\n // blockLevel: number = 0;\n\n // blockStartIndexMap: Map<number, boolean> = new Map();\n // blockEndIndexMap: Map<number, boolean> = new Map();\n dimensionKeys: NumberMap<string> = new NumberMap<string>();\n // dimensions: IDimension[] | undefined;//目前用不到这个\n constructor(\n tree: IPivotLayoutHeadNode[],\n hierarchyType: 'grid' | 'tree' = 'grid',\n rowExpandLevel: number = undefined\n ) {\n this.sizeIncludeParent = rowExpandLevel !== null && rowExpandLevel !== undefined;\n this.rowExpandLevel = rowExpandLevel;\n this.hierarchyType = hierarchyType;\n this.reset(tree);\n }\n\n reset(tree: IPivotLayoutHeadNode[], updateTreeNode = false) {\n // 清空缓存的计算\n // this.cache = {};\n // this.dimensions = dimensions;\n this.dimensionKeys = new NumberMap<string>();\n this.tree.children = tree as IPivotLayoutHeadNode[];\n // const re = { totalLevel: 0 };\n // if (updateTreeNode) this.updateTreeNode(this.tree, 0, re, this.tree);\n // else\n this.setTreeNode(this.tree, 0, this.tree);\n this.totalLevel = this.dimensionKeys.count();\n }\n setTreeNode(node: IPivotLayoutHeadNode, startIndex: number, parent: IPivotLayoutHeadNode): number {\n node.startIndex = startIndex;\n node.startInTotal = (parent.startInTotal ?? 0) + node.startIndex;\n // if (node.dimensionKey) {\n // !this.dimensionKeys.contain(node.dimensionKey) &&\n // this.dimensionKeys.put(node.level, node.dimensionKey);\n // if (!node.id) node.id = ++seqId;\n // }\n if (node.dimensionKey ?? node.indicatorKey) {\n !this.dimensionKeys.contain(node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey) &&\n this.dimensionKeys.put(node.level, node.indicatorKey ? IndicatorDimensionKeyPlaceholder : node.dimensionKey);\n if (!node.id) {\n node.id = ++sharedVar.seqId;\n }\n }\n let size = node.dimensionKey ? (this.sizeIncludeParent ? 1 : 0) : 0;\n //平铺展示 分析所有层级\n if (this.hierarchyType === 'grid') {\n if (node.children?.length >= 1) {\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else {\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n } else if (node.hierarchyState === HierarchyState.expand && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.hierarchyState === HierarchyState.collapse && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n this.setTreeNode(n, size, node);\n });\n } else if (!node.hierarchyState && node.level + 1 < this.rowExpandLevel && node.children?.length >= 1) {\n //树形展示 有子节点 且下一层需要展开\n node.hierarchyState = HierarchyState.expand;\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n size += this.setTreeNode(n, size, node);\n });\n } else if (node.children?.length >= 1) {\n //树形展示 有子节点 且下一层不需要展开\n node.hierarchyState = HierarchyState.collapse;\n node.children.forEach(n => {\n n.level = (node.level ?? 0) + 1;\n this.setTreeNode(n, size, node);\n });\n } else {\n //树形展示 无children子节点。但不能确定是最后一层的叶子节点 totalLevel还不能确定是计算完整棵树的整体深度\n node.hierarchyState = HierarchyState.none;\n size = 1;\n // re.totalLevel = Math.max(re.totalLevel, (node.level ?? -1) + 1);\n }\n\n node.size = size;\n // startInTotal = parent.startIndex + prevStartIndex\n return size;\n }\n getTreePath(index: number, maxDeep = 30): Array<IPivotLayoutHeadNode> {\n const path: any[] = [];\n this.searchPath(index, this.tree, path, maxDeep);\n path.shift();\n return path;\n }\n\n getTreePathByCellIds(ids: LayoutObjectId[]): Array<IPivotLayoutHeadNode> {\n const path: any[] = [];\n let nodes = this.tree.children;\n for (let i = 0; i < ids.length; i++) {\n const id = ids[i];\n const pathNode = this.findNodeById(nodes, id);\n if (pathNode) {\n path.push(pathNode);\n nodes = pathNode.children;\n } else {\n break;\n }\n }\n // path.shift();\n return path;\n }\n findNodeById(nodes: IPivotLayoutHeadNode[], id: LayoutObjectId) {\n return nodes.find(node => {\n return node.id === id;\n });\n }\n searchPath(index: number, node: IPivotLayoutHeadNode, path: Array<IPivotLayoutHeadNode>, maxDeep: number) {\n if (!node) {\n return false;\n }\n if (index < node.startIndex || index >= node.startIndex + node.size) {\n return false;\n }\n path.push(node);\n if (!node.children || node.children.length === 0) {\n return true;\n }\n if (node.level >= maxDeep) {\n return true;\n }\n // 这里按照 数据填充时,序号时同级序号 还是全局序号\n const cIndex = index - node.startIndex;\n node.children.some(n => this.searchPath(cIndex, n, path, maxDeep));\n return true;\n }\n /**\n * 将该树中 层级为level 的sourceIndex处的节点移动到targetIndex位置\n * @param level\n * @param sourceIndex\n * @param targetIndex\n */\n movePosition(level: number, sourceIndex: number, targetIndex: number) {\n // let sourceNode: IPivotLayoutHeadNode;\n let parNode: IPivotLayoutHeadNode;\n let sourceSubIndex: number;\n let targetSubIndex: number;\n /**\n * 对parNode的子节点第subIndex处的node节点 进行判断是否为sourceIndex或者targetIndex\n * 如果是 则记录下subIndex 以对parNode中个节点位置进行移位\n * @param node\n * @param subIndex\n * @returns\n */\n const findTargetNode = (node: IPivotLayoutHeadNode, subIndex: number) => {\n if (sourceSubIndex !== undefined && targetSubIndex !== undefined) {\n return;\n }\n if (node.level === level) {\n if (node.startInTotal === sourceIndex) {\n // sourceNode = node;\n sourceSubIndex = subIndex;\n }\n // if (node.startInTotal === targetIndex) targetSubIndex = subIndex;\n // 判断targetIndex是否在node的范围内 将当前node的subIndex记为targetSubIndex\n if (node.startInTotal <= targetIndex && targetIndex <= node.startInTotal + node.size - 1) {\n targetSubIndex = subIndex;\n }\n }\n\n if (node.children && node.level < level) {\n parNode = node;\n for (let i = 0; i < node.children.length; i++) {\n if (\n (sourceIndex >= node.children[i].startInTotal &&\n sourceIndex <= node.children[i].startInTotal + node.children[i].size) ||\n (targetIndex >= node.children[i].startInTotal &&\n targetIndex <= node.children[i].startInTotal + node.children[i].size)\n ) {\n findTargetNode(node.children[i], i);\n }\n }\n }\n };\n findTargetNode(this.tree, 0);\n\n //对parNode子节点位置进行移位【根据sourceSubIndex和targetSubIndex】\n const sourceColumns = parNode.children.splice(sourceSubIndex, 1);\n sourceColumns.unshift(targetSubIndex as any, 0 as any);\n Array.prototype.splice.apply(parNode.children, sourceColumns);\n }\n}\n"]}
|
|
@@ -1,145 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import type { HeaderData, IndicatorData, LayoutMapAPI, WidthData } from '../ts-types/list-table/layout-map/api';
|
|
3
|
-
import type { CellAddress, CellRange, CellLocation, ICornerDefine, IDataConfig, IDimension, IDimensionInfo, IHeaderTreeDefine, IIndicator, IPivotTableCellHeaderPaths, ITitleDefine, LayoutObjectId } from '../ts-types';
|
|
4
|
-
import type { PivotTable } from '../PivotTable';
|
|
5
|
-
import type { PivotChart } from '../PivotChart';
|
|
6
|
-
export declare class PivotLayoutMap implements LayoutMapAPI {
|
|
7
|
-
private _headerObjects;
|
|
8
|
-
private _headerObjectMap;
|
|
9
|
-
private _indicatorObjects;
|
|
10
|
-
private _columnWidths;
|
|
11
|
-
rowTree: IHeaderTreeDefine[];
|
|
12
|
-
columnTree: IHeaderTreeDefine[];
|
|
13
|
-
rowsDefine: (IDimension | string)[];
|
|
14
|
-
columnsDefine: (IDimension | string)[];
|
|
15
|
-
indicatorsDefine: (IIndicator | string)[];
|
|
16
|
-
indicatorKeys: string[];
|
|
17
|
-
_showRowHeader: boolean;
|
|
18
|
-
_showColumnHeader: boolean;
|
|
19
|
-
_rowHeaderTitle: ITitleDefine;
|
|
20
|
-
_columnHeaderTitle: ITitleDefine;
|
|
21
|
-
private _indicatorShowType;
|
|
22
|
-
indicatorsAsCol: boolean;
|
|
23
|
-
hideIndicatorName: boolean;
|
|
24
|
-
indicatorDimensionKey: string;
|
|
25
|
-
indicatorTitle: string;
|
|
26
|
-
private rowKeysPath;
|
|
27
|
-
private colKeysPath;
|
|
28
|
-
private convertColKeys;
|
|
29
|
-
rows: string[];
|
|
30
|
-
columns: string[];
|
|
31
|
-
private rowShowAttrs;
|
|
32
|
-
private colShowAttrs;
|
|
33
|
-
tree: any;
|
|
34
|
-
dataset: Dataset;
|
|
35
|
-
dataConfig: IDataConfig;
|
|
36
|
-
_rowCount: number;
|
|
37
|
-
_colCount: number;
|
|
38
|
-
_bodyRowCount: number;
|
|
39
|
-
cornerSetting: ICornerDefine;
|
|
40
|
-
_table: PivotTable | PivotChart;
|
|
41
|
-
hasTwoIndicatorAxes: boolean;
|
|
42
|
-
_chartItemSpanSize: number;
|
|
43
|
-
_chartPaddingInner: number;
|
|
44
|
-
_chartPaddingOuter: number;
|
|
45
|
-
_chartItemBandSize: number;
|
|
46
|
-
_chartPadding?: number | number[];
|
|
47
|
-
constructor(table: PivotTable | PivotChart, dataset: Dataset);
|
|
48
|
-
private initState;
|
|
49
|
-
private setColumnWidths;
|
|
50
|
-
get columnWidths(): WidthData[];
|
|
51
|
-
getColumnWidthDefined(col: number): WidthData;
|
|
52
|
-
private getDimensionInfo;
|
|
53
|
-
getIndicatorInfo(indicatorKey: string, indicatorValue?: string): IIndicator;
|
|
54
|
-
getColKeysPath(): string[][];
|
|
55
|
-
getRowKeysPath(): string[][];
|
|
56
|
-
private initHeaderObjects;
|
|
57
|
-
private initIndicatorObjects;
|
|
58
|
-
get showColumnHeader(): boolean;
|
|
59
|
-
set showColumnHeader(_showColumnHeader: boolean);
|
|
60
|
-
get showRowHeader(): boolean;
|
|
61
|
-
set showRowHeader(_showRowHeader: boolean);
|
|
62
|
-
get columnHeaderTitle(): ITitleDefine;
|
|
63
|
-
set columnHeaderTitle(_columnHeaderTitle: ITitleDefine);
|
|
64
|
-
get rowHeaderTitle(): ITitleDefine;
|
|
65
|
-
set rowHeaderTitle(_rowHeaderTitle: ITitleDefine);
|
|
66
|
-
getCellLocation(col: number, row: number): CellLocation;
|
|
67
|
-
isHeader(col: number, row: number): boolean;
|
|
68
|
-
isCornerHeader(col: number, row: number): boolean;
|
|
69
|
-
isColumnHeader(col: number, row: number): boolean;
|
|
70
|
-
isRightFrozenColumn(col: number, row: number): boolean;
|
|
71
|
-
isBottomFrozenRow(col: number, row: number): boolean;
|
|
72
|
-
isLeftBottomCorner(col: number, row: number): boolean;
|
|
73
|
-
isRightTopCorner(col: number, row: number): boolean;
|
|
74
|
-
isRightBottomCorner(col: number, row: number): boolean;
|
|
75
|
-
isRowHeader(col: number, row: number): boolean;
|
|
76
|
-
isColumnIndicatorHeader(col: number, row: number): boolean;
|
|
77
|
-
isRowIndicatorHeader(col: number, row: number): boolean;
|
|
78
|
-
isIndicatorHeader(col: number, row: number): boolean;
|
|
79
|
-
getColumnHeaderRange(): CellRange;
|
|
80
|
-
getRowHeaderRange(): CellRange;
|
|
81
|
-
getCornerHeaderRange(): CellRange;
|
|
82
|
-
getBodyRange(): CellRange;
|
|
83
|
-
resetCellIds(): void;
|
|
84
|
-
get headerLevelCount(): number;
|
|
85
|
-
get columnHeaderLevelCount(): number;
|
|
86
|
-
get rowHeaderLevelCount(): number;
|
|
87
|
-
get colCount(): number;
|
|
88
|
-
get rowCount(): number;
|
|
89
|
-
get bodyRowCount(): number;
|
|
90
|
-
get bottomFrozenRowCount(): number;
|
|
91
|
-
get rightFrozenColCount(): number;
|
|
92
|
-
get leftAxesCount(): number;
|
|
93
|
-
get topAxesCount(): number;
|
|
94
|
-
get rightAxesCount(): number;
|
|
95
|
-
get bottomAxesCount(): number;
|
|
96
|
-
get headerObjects(): HeaderData[];
|
|
97
|
-
get columnObjects(): IndicatorData[];
|
|
98
|
-
getCellId(col: number, row: number): LayoutObjectId;
|
|
99
|
-
getIndicatorKey(col: number, row: number): string;
|
|
100
|
-
getHeader(col: number, row: number): HeaderData;
|
|
101
|
-
getHeaderField(col: number, row: number): import("../ts-types").FieldDef;
|
|
102
|
-
getHeaderFieldKey(col: number, row: number): undefined;
|
|
103
|
-
getHeaderCellAdress(id: number): CellAddress | undefined;
|
|
104
|
-
getHeaderCellAddressByField(field: string): CellAddress | undefined;
|
|
105
|
-
getBody(_col: number, _row: number): IndicatorData;
|
|
106
|
-
getBodyLayoutRangeById(id: LayoutObjectId): CellRange;
|
|
107
|
-
getCellRange(col: number, row: number): CellRange;
|
|
108
|
-
isCellRangeEqual(col: number, row: number, targetCol: number, targetRow: number): boolean;
|
|
109
|
-
getRecordIndexByRow(row: number): number;
|
|
110
|
-
getRecordIndexByCol(col: number): number;
|
|
111
|
-
getRecordStartRowByRecordIndex(index: number): number;
|
|
112
|
-
getCellHeaderPaths(col: number, row: number): IPivotTableCellHeaderPaths;
|
|
113
|
-
getCellAdressByHeaderPath(dimensionPaths: {
|
|
114
|
-
colHeaderPaths: IDimensionInfo[];
|
|
115
|
-
rowHeaderPaths: IDimensionInfo[];
|
|
116
|
-
} | IDimensionInfo[]): CellAddress | undefined;
|
|
117
|
-
getHeaderDimension(col: number, row: number): IDimension | undefined;
|
|
118
|
-
updateDataset(dataset: Dataset): void;
|
|
119
|
-
isHeaderForColWidth(col: number, row: number): boolean;
|
|
120
|
-
getHeaderForColWidth(col: number, row: number): HeaderData;
|
|
121
|
-
setChartInstance(_col: number, _row: number, chartInstance: any): void;
|
|
122
|
-
getChartInstance(_col: number, _row: number): any;
|
|
123
|
-
_generateChartState(): {
|
|
124
|
-
vtable_selected: {
|
|
125
|
-
filter: (datum: any) => boolean;
|
|
126
|
-
};
|
|
127
|
-
vtable_selected_reverse: {
|
|
128
|
-
filter: (datum: any) => boolean;
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
updateDataStateToChartInstance(activeChartInstance?: any): void;
|
|
132
|
-
updateDataStateToActiveChartInstance(activeChartInstance?: any): void;
|
|
133
|
-
getOptimunWidthForChart(col: number): number;
|
|
134
|
-
getOptimunHeightForChart(row: number): number;
|
|
135
|
-
getIndicatorKeyInChartSpec(_col: number, _row: number): string[];
|
|
136
|
-
getDimensionKeyInChartSpec(_col: number, _row: number): string[];
|
|
137
|
-
getAxisConfigInPivotChart(col: number, row: number): any;
|
|
138
|
-
getRawChartSpec(col: number, row: number): any;
|
|
139
|
-
getChartSpec(col: number, row: number): any;
|
|
140
|
-
getChartAxes(col: number, row: number): any;
|
|
141
|
-
getChartDataId(col: number, row: number): any;
|
|
142
|
-
isEmpty(col: number, row: number): boolean;
|
|
143
|
-
release(): void;
|
|
144
|
-
clearCellRangeMap(): void;
|
|
145
|
-
}
|
|
1
|
+
|