@univerjs-pro/engine-pivot 0.2.9
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/README.md +16 -0
- package/lib/cjs/index.js +1 -0
- package/lib/es/index.js +1 -0
- package/lib/types/const.d.ts +13 -0
- package/lib/types/field/data-field-manager.d.ts +22 -0
- package/lib/types/field/data-field.d.ts +161 -0
- package/lib/types/field/fields-collection.d.ts +70 -0
- package/lib/types/index.d.ts +11 -0
- package/lib/types/layout/base-layout.d.ts +63 -0
- package/lib/types/layout/compact.d.ts +8 -0
- package/lib/types/layout/outline.d.ts +8 -0
- package/lib/types/layout/pivot-view.d.ts +125 -0
- package/lib/types/layout/tabular.d.ts +41 -0
- package/lib/types/pivot/model.d.ts +198 -0
- package/lib/types/pivot/pivot-table.d.ts +224 -0
- package/lib/types/pivot/table-field.d.ts +131 -0
- package/lib/types/summary/node-tree.d.ts +48 -0
- package/lib/types/summary/pivot-tuple.d.ts +24 -0
- package/lib/types/summary/summary-manager.d.ts +72 -0
- package/lib/types/summary/tuple-group.d.ts +82 -0
- package/lib/types/types/enum.d.ts +624 -0
- package/lib/types/types/index.d.ts +5 -0
- package/lib/types/types/interface.d.ts +187 -0
- package/lib/types/types/json-types.d.ts +184 -0
- package/lib/types/types/layout-type.d.ts +234 -0
- package/lib/types/types/summary-type.d.ts +41 -0
- package/lib/types/util.d.ts +118 -0
- package/lib/umd/index.js +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { IPivotTableFilterInfo, IPivotTableLabelFieldJSON, IPivotTableLabelFieldQueryData, IPivotTableShowDataAsInfo, IPivotTableSortInfo, IPivotTableValueFieldJSON, IPivotTableValueFieldQueryData, PivotSubtotalTypeEnum } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a base class for the field in a pivot table.
|
|
4
|
+
* @abstract
|
|
5
|
+
* @description The base class for the field in a pivot table.
|
|
6
|
+
* @property {string} dataFieldId - The base data field id of the field.
|
|
7
|
+
* @property {string} id - The unique identifier of the field.
|
|
8
|
+
* @property {string} displayName - The display name of the field. the default value is the data field name.
|
|
9
|
+
* @property {string} lossLessProperty - thr public object to save the property not defined but should be saved.
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
export declare abstract class PivotTableFieldBase {
|
|
13
|
+
/**
|
|
14
|
+
* @property {string} - The base data field id of the field.
|
|
15
|
+
*/
|
|
16
|
+
readonly dataFieldId: string;
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly sourceName: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
format: string | undefined;
|
|
21
|
+
lossLessProperty?: any;
|
|
22
|
+
constructor(dataFieldId: string, id: string, displayName: string | undefined, sourceName: string);
|
|
23
|
+
getId(): string;
|
|
24
|
+
/**
|
|
25
|
+
* - the read only name in collection
|
|
26
|
+
* @returns {string} - the source name of the field, which is the name of the data field.
|
|
27
|
+
*/
|
|
28
|
+
getSourceName(): string;
|
|
29
|
+
setSourceName(sourceName: string): void;
|
|
30
|
+
setDataFieldId(dataFieldId: string): void;
|
|
31
|
+
getDataFieldId(): string;
|
|
32
|
+
getFormat(): string | undefined;
|
|
33
|
+
setFormat(format: string | undefined): void;
|
|
34
|
+
setDisplayName(displayName: string): void;
|
|
35
|
+
getDisplayName(): string;
|
|
36
|
+
/**
|
|
37
|
+
* @abstract
|
|
38
|
+
*/
|
|
39
|
+
abstract toJSON(): object;
|
|
40
|
+
/**
|
|
41
|
+
* @abstract
|
|
42
|
+
* @param {object} data - the data config a field.
|
|
43
|
+
*/
|
|
44
|
+
abstract fromJSON(data: object): void;
|
|
45
|
+
/**
|
|
46
|
+
* @abstract
|
|
47
|
+
* @returns {object} - the query data of the field.
|
|
48
|
+
*/
|
|
49
|
+
abstract getQueryData(): object;
|
|
50
|
+
}
|
|
51
|
+
export declare class PivotTableValueField extends PivotTableFieldBase {
|
|
52
|
+
subtotal: PivotSubtotalTypeEnum;
|
|
53
|
+
showDataAs: IPivotTableShowDataAsInfo;
|
|
54
|
+
constructor(dataFieldId: string, id: string, displayName: string | undefined, sourceName: string);
|
|
55
|
+
setSubtotal(subtotal: PivotSubtotalTypeEnum): void;
|
|
56
|
+
getSubtotal(): PivotSubtotalTypeEnum;
|
|
57
|
+
setShowDataAs(showDataAs: IPivotTableShowDataAsInfo): void;
|
|
58
|
+
getShowDataAs(): IPivotTableShowDataAsInfo;
|
|
59
|
+
getQueryData(): IPivotTableValueFieldQueryData;
|
|
60
|
+
/**
|
|
61
|
+
* @override
|
|
62
|
+
* @returns {IPivotTableValueFieldJSON} - the JSON data of the value field.
|
|
63
|
+
*/
|
|
64
|
+
toJSON(): IPivotTableValueFieldJSON;
|
|
65
|
+
/**
|
|
66
|
+
* @override
|
|
67
|
+
* @param data
|
|
68
|
+
*/
|
|
69
|
+
fromJSON(data: IPivotTableValueFieldJSON): void;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Represents a label field in a pivot table.
|
|
73
|
+
*/
|
|
74
|
+
export declare class PivotTableLabelField extends PivotTableFieldBase {
|
|
75
|
+
sortInfo: IPivotTableSortInfo | undefined;
|
|
76
|
+
filterInfo: IPivotTableFilterInfo;
|
|
77
|
+
constructor(dataFieldId: string, id: string, displayName: string | undefined, sourceName: string);
|
|
78
|
+
/**
|
|
79
|
+
* @method setSortInfo
|
|
80
|
+
* @description Set the sort information of the label field.
|
|
81
|
+
* @param {IPivotTableSortInfo} sortInfo - The sort information of the label field.
|
|
82
|
+
*/
|
|
83
|
+
setSortInfo(sortInfo: IPivotTableSortInfo | undefined): void;
|
|
84
|
+
/**
|
|
85
|
+
* @method getSortInfo
|
|
86
|
+
* @description Get the sort information of the label field.
|
|
87
|
+
* @returns {IPivotTableSortInfo} The sort information of the label field.
|
|
88
|
+
*/
|
|
89
|
+
getSortInfo(): IPivotTableSortInfo | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* @method setFilterInfo
|
|
92
|
+
* @description Set the filter information of the label field. Only one of the manual filter, custom filter or value filter can be effective.
|
|
93
|
+
* @param {IPivotTableFilterInfo} filterInfo - The filter information of the label field. the manual filter, custom filter or value filter is opposite to each other.
|
|
94
|
+
*/
|
|
95
|
+
setFilterInfo(filterInfo: IPivotTableFilterInfo): void;
|
|
96
|
+
/**
|
|
97
|
+
* @method getFilterInfo
|
|
98
|
+
* @description Get the filter information of the label field.
|
|
99
|
+
* @returns {IPivotTableFilterInfo} The filter information of the label field.
|
|
100
|
+
*/
|
|
101
|
+
getFilterInfo(): IPivotTableFilterInfo;
|
|
102
|
+
getQueryData(): IPivotTableLabelFieldQueryData;
|
|
103
|
+
toJSON(): IPivotTableLabelFieldJSON;
|
|
104
|
+
fromJSON(data: IPivotTableLabelFieldJSON): void;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clone the label field to a value field.
|
|
108
|
+
* @param {PivotTableLabelField} labelField - The label field to be cloned.
|
|
109
|
+
* @param {boolean} [keepUnknown] - Whether to keep the unknown property of the label field. the default value is true.
|
|
110
|
+
* @returns {PivotTableValueField} - the value field may has sortInfo and filterInfo in the property lossLessProperty.
|
|
111
|
+
*/
|
|
112
|
+
export declare function cloneLabelFieldToValueField(labelField: PivotTableLabelField, keepUnknown?: boolean): PivotTableValueField;
|
|
113
|
+
/**
|
|
114
|
+
* Clone the value field to a label field.
|
|
115
|
+
* @param {PivotTableValueField} valueField - The value field to be cloned.
|
|
116
|
+
* @param {boolean} [keepUnknown] - Whether to keep the unknown property of the value field. the default value is true.
|
|
117
|
+
* @returns {PivotTableLabelField} - the label field may has sortInfo and filterInfo in the property lossLessProperty.
|
|
118
|
+
*/
|
|
119
|
+
export declare function cloneValueFieldToLabelField(valueField: PivotTableValueField, keepUnknown?: boolean): PivotTableLabelField;
|
|
120
|
+
/**
|
|
121
|
+
* - Create a value field from the JSON data.
|
|
122
|
+
* @param {IPivotTableValueFieldJSON} data - The JSON data of the value field.
|
|
123
|
+
* @returns {PivotTableValueField} - The value field created from the JSON data.
|
|
124
|
+
*/
|
|
125
|
+
export declare function createValueField(data: IPivotTableValueFieldJSON): PivotTableValueField;
|
|
126
|
+
/**
|
|
127
|
+
* - Create a label field from the JSON data.
|
|
128
|
+
* @param {IPivotTableLabelFieldJSON} data - The JSON data of the label field.
|
|
129
|
+
* @returns {PivotTableLabelField} - The label field created from the JSON data.
|
|
130
|
+
*/
|
|
131
|
+
export declare function createLabelField(data: IPivotTableLabelFieldJSON): PivotTableLabelField;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { PivotDataFieldDataTypeEnum } from '../types';
|
|
2
|
+
export declare class NodeTree {
|
|
3
|
+
/**
|
|
4
|
+
* @property {number} index - The id of the node tree.which is the index of summary-manager tuples
|
|
5
|
+
*/
|
|
6
|
+
private readonly _index;
|
|
7
|
+
/**
|
|
8
|
+
* @property {number} level - The level of the node tree. the root level is 0.
|
|
9
|
+
*/
|
|
10
|
+
private _level;
|
|
11
|
+
/**
|
|
12
|
+
* @property {number} parentIndex - The parent index of the node tree. the root node parent index is -1.
|
|
13
|
+
*/
|
|
14
|
+
parentIndex: number;
|
|
15
|
+
paths: string[];
|
|
16
|
+
isLeaf: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @property {string} name - The name of the node tree.
|
|
19
|
+
*/
|
|
20
|
+
name: string;
|
|
21
|
+
fieldId: string;
|
|
22
|
+
collapse: boolean;
|
|
23
|
+
sortedList: string[];
|
|
24
|
+
hasSort: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* - the data type of the node tree.
|
|
27
|
+
*/
|
|
28
|
+
type: PivotDataFieldDataTypeEnum;
|
|
29
|
+
private _nodes;
|
|
30
|
+
constructor(index: number, fieldId: string, type: PivotDataFieldDataTypeEnum);
|
|
31
|
+
getCollapse(): boolean;
|
|
32
|
+
setCollapse(collapse: boolean): void;
|
|
33
|
+
getFieldsId(): string;
|
|
34
|
+
iterate(callback: (node: NodeTree) => void): void;
|
|
35
|
+
getIndex(): number;
|
|
36
|
+
hasNode(path: string): boolean;
|
|
37
|
+
setParentIndex(parentIndex: number): void;
|
|
38
|
+
setLevel(level: number): void;
|
|
39
|
+
getLevel(): number;
|
|
40
|
+
setPaths(paths: string[]): void;
|
|
41
|
+
getPaths(): string[];
|
|
42
|
+
setLeaf(): void;
|
|
43
|
+
getIsLeaf(): boolean;
|
|
44
|
+
setName(name: string): void;
|
|
45
|
+
addNode(node: NodeTree, path: string, sortMap: Record<string, number> | undefined, isAsc: boolean): void;
|
|
46
|
+
sortNode(path: string, sortedMap: Record<string, number>, isAsc: boolean): void;
|
|
47
|
+
getNode(path: string): NodeTree;
|
|
48
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IDataFieldValue, ITPivotTupleInfo, PivotErrorTypeEnum, PivotSubtotalTypeEnum } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* @class PivotTuple
|
|
4
|
+
* @description use Welford algorithm calc subtotal
|
|
5
|
+
* https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance
|
|
6
|
+
*/
|
|
7
|
+
export declare class PivotTuple {
|
|
8
|
+
private _sum;
|
|
9
|
+
private _count;
|
|
10
|
+
private _countN;
|
|
11
|
+
private _product;
|
|
12
|
+
private _min;
|
|
13
|
+
private _max;
|
|
14
|
+
private _squareSum;
|
|
15
|
+
constructor();
|
|
16
|
+
getInfo(): ITPivotTupleInfo;
|
|
17
|
+
reset(): void;
|
|
18
|
+
addValue(value: IDataFieldValue): void;
|
|
19
|
+
unionTuples(tuples: PivotTuple[]): void;
|
|
20
|
+
unionTupleInfo(tupleInfo: ITPivotTupleInfo): void;
|
|
21
|
+
getSubtotal(subtotalType: PivotSubtotalTypeEnum): number | {
|
|
22
|
+
errorType: PivotErrorTypeEnum;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { DataField } from '../field/data-field';
|
|
2
|
+
import { IDimensionMapItem, IMeasuresMapItem, IPivotSummaryLevelPool, IPivotTableQueryData, ITupleItem, PivotSubtotalTypeEnum, PivotDataFieldSortOperatorEnum } from '../types';
|
|
3
|
+
import { NodeTree } from './node-tree';
|
|
4
|
+
import { TupleGroup } from './tuple-group';
|
|
5
|
+
export declare class SummaryManager {
|
|
6
|
+
counter: number;
|
|
7
|
+
rowDimOrder: number[];
|
|
8
|
+
colDimOrder: number[];
|
|
9
|
+
rowTableIdList: string[];
|
|
10
|
+
colTableIdList: string[];
|
|
11
|
+
rowDeep: number;
|
|
12
|
+
colDeep: number;
|
|
13
|
+
measureCount: number;
|
|
14
|
+
leafCount: number;
|
|
15
|
+
measuresMap: Record<string, IMeasuresMapItem>;
|
|
16
|
+
/**
|
|
17
|
+
* @property The tuples of the pivot table, it contains the path, indexes, and save the measure value of each tuple.
|
|
18
|
+
*/
|
|
19
|
+
tuples: ITupleItem[];
|
|
20
|
+
/**
|
|
21
|
+
* @property The map of tuple, it is used to quickly find the tuple by the path of tuple. the key is the path of tuple, the value is the index of tuple in tuples.
|
|
22
|
+
*/
|
|
23
|
+
tupleMap: Record<string, number>;
|
|
24
|
+
/**
|
|
25
|
+
* @property The dimensionIdList, it contains the id of dimension fields.Only the the row and col fields are dimension fields.
|
|
26
|
+
*/
|
|
27
|
+
dimensionIdList: string[];
|
|
28
|
+
dimensionTableIdList: string[];
|
|
29
|
+
/**
|
|
30
|
+
* @property The measureIdList, it contains the id of measure fields.It used to quickly find the measure field.
|
|
31
|
+
*/
|
|
32
|
+
measureIdList: string[];
|
|
33
|
+
_rowLevelPool: IPivotSummaryLevelPool;
|
|
34
|
+
_colLevelPool: IPivotSummaryLevelPool;
|
|
35
|
+
rowNodeTree: NodeTree;
|
|
36
|
+
colNodeTree: NodeTree;
|
|
37
|
+
dimensionMap: Record<string, IDimensionMapItem>;
|
|
38
|
+
/**
|
|
39
|
+
* fist Record key is combinePathMap
|
|
40
|
+
*/
|
|
41
|
+
combinePathMap: Record<string, Record<string, number>>;
|
|
42
|
+
collapseInfo: Record<string, boolean | Record<string, boolean>>;
|
|
43
|
+
dimensionSortInfo: Record<string, {
|
|
44
|
+
type: PivotDataFieldSortOperatorEnum;
|
|
45
|
+
sortMap: Record<string, number>;
|
|
46
|
+
}>;
|
|
47
|
+
constructor(queryData: IPivotTableQueryData, tupleGroup: TupleGroup);
|
|
48
|
+
createSummaryLabelSortedMap(queryData: IPivotTableQueryData): void;
|
|
49
|
+
getCellValue(index: number, id: string, subtotal: PivotSubtotalTypeEnum): number | {
|
|
50
|
+
errorType: import('../types').PivotErrorTypeEnum;
|
|
51
|
+
} | undefined;
|
|
52
|
+
getSortedMap(tableFieldId: string, dataField: DataField): Record<string, number>;
|
|
53
|
+
doSummary(): void;
|
|
54
|
+
private _getIndex;
|
|
55
|
+
buildNodeTree(): void;
|
|
56
|
+
createTupleWithoutCheck(paths: string[], nodeIndex: number, tupleKey: string): void;
|
|
57
|
+
_buildNodeTreeImp(dimOrder: number[], tableIdList: string[], levelPool: IPivotSummaryLevelPool, nodePathStr: string): NodeTree;
|
|
58
|
+
combinePathMapList(colPathMapList: Record<string, number>[], basePath: string): Record<string, number>;
|
|
59
|
+
calculateListSubtotal(tupleItem: ITupleItem, indexes: number[]): void;
|
|
60
|
+
calculateSubtotal(): void;
|
|
61
|
+
getPathKeyWithFiledId(paths: string[], tableIdList: string[]): string;
|
|
62
|
+
ensureTupleItem(index: number, paths: string[], tableIdList: string[]): void;
|
|
63
|
+
ensureTupleItemByString(index: number, pathString: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* - create tuple if not exist
|
|
66
|
+
* @param {string[]} paths the path of tuple
|
|
67
|
+
* @param {string} [pathsStr] the joined path string of tuple
|
|
68
|
+
* @returns {void}
|
|
69
|
+
*/
|
|
70
|
+
createTuple(paths: string[], pathsStr?: string, nodeIndex?: number): void;
|
|
71
|
+
_calculateSubtotalImp(levelPool: IPivotSummaryLevelPool): void;
|
|
72
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { FieldsCollection } from '../field/fields-collection';
|
|
2
|
+
import { IDimensionMapItem, IMeasuresMapItem, IPivotTableQueryData, ITupleItem, PivotDataFieldDataTypeEnum } from '../types';
|
|
3
|
+
export declare class TupleGroup {
|
|
4
|
+
/**
|
|
5
|
+
* @property The tuples of the pivot table, it contains the path, indexes, and save the measure value of each tuple.
|
|
6
|
+
*/
|
|
7
|
+
tuples: ITupleItem[];
|
|
8
|
+
/**
|
|
9
|
+
* @property The map of tuple, it is used to quickly find the tuple by the path of tuple. the key is the path of tuple, the value is the index of tuple in tuples.
|
|
10
|
+
*/
|
|
11
|
+
tupleMap: Record<string, number>;
|
|
12
|
+
/**
|
|
13
|
+
* @property The measuresMap, it contains the field and subtotal of each measure.
|
|
14
|
+
*/
|
|
15
|
+
measuresMap: Record<string, IMeasuresMapItem>;
|
|
16
|
+
/**
|
|
17
|
+
* @property The dimensionIdList, it contains the id of dimension fields.Only the the row and col fields are dimension fields.
|
|
18
|
+
*/
|
|
19
|
+
dimensionIdList: string[];
|
|
20
|
+
dimensionTableIdList: string[];
|
|
21
|
+
/**
|
|
22
|
+
* @property The measureIdList, it contains the id of measure fields.It used to quickly find the measure field.
|
|
23
|
+
*/
|
|
24
|
+
measureIdList: string[];
|
|
25
|
+
/**
|
|
26
|
+
* @property The dimensionMap, it contains the field of each dimension.
|
|
27
|
+
*/
|
|
28
|
+
dimensionMap: Record<string, IDimensionMapItem>;
|
|
29
|
+
/**
|
|
30
|
+
* @property The rowDeep, the deep of row fields.
|
|
31
|
+
*/
|
|
32
|
+
rowDeep: number;
|
|
33
|
+
/**
|
|
34
|
+
* @property The colDeep, the deep of col fields.
|
|
35
|
+
*/
|
|
36
|
+
colDeep: number;
|
|
37
|
+
constructor();
|
|
38
|
+
/**
|
|
39
|
+
* - prepare the measuresMap and dimensionMap, it will prepare the measuresMap and dimensionMap based on the query data
|
|
40
|
+
* @param {FieldsCollection} dataFieldsCollection - the fields collection of pivot table
|
|
41
|
+
* @param {IPivotTableQueryData} queryData - the query data of pivot table, which contains the value, row, col, filter information,it the configuration of pivot table
|
|
42
|
+
*/
|
|
43
|
+
prepare(dataFieldsCollection: FieldsCollection, queryData: IPivotTableQueryData): void;
|
|
44
|
+
/**
|
|
45
|
+
* - filter the data records by the query data
|
|
46
|
+
* @param {IPivotTableQueryData} queryData - the query data of pivot table, which contains the value, row, col, filter information,it the configuration of pivot table
|
|
47
|
+
* @returns {number[]} list - the indexes of data records, which is used to iterate the data records, isALL - whether all the data records are selected
|
|
48
|
+
*/
|
|
49
|
+
filter(queryData: IPivotTableQueryData): {
|
|
50
|
+
isAll: boolean;
|
|
51
|
+
list: number[];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* - the core method of tuple group, it will prepare, filter, iterate the data records, and create or update tuple
|
|
55
|
+
* @param {FieldsCollection} dataFieldsCollection - the fields collection of pivot table
|
|
56
|
+
* @param {IPivotTableQueryData} queryData - the query data of pivot table, which contains the value, row, col, filter information,it the configuration of pivot table
|
|
57
|
+
* @returns {void}
|
|
58
|
+
*/
|
|
59
|
+
query(dataFieldsCollection: FieldsCollection, queryData: IPivotTableQueryData): void;
|
|
60
|
+
reset(): void;
|
|
61
|
+
/**
|
|
62
|
+
* - iterate the indexes of data records, and create or update tuple
|
|
63
|
+
* @param {boolean} isALL - whether all the data records are selected
|
|
64
|
+
* @param {number} indexes - the indexes of data records
|
|
65
|
+
*/
|
|
66
|
+
iterate(isALL: boolean, indexes: number[], recordCount?: number): void;
|
|
67
|
+
/**
|
|
68
|
+
* - create or update tuple, which is the core logic of tuple group, it will create a new tuple if not exist, or update the existing tuple., the judgment is based on the paths of tuple.
|
|
69
|
+
* @param {string} paths the path of tuple
|
|
70
|
+
* @param {string} pathsWithField the joined path string of tuple
|
|
71
|
+
* @param {number} index the index of data
|
|
72
|
+
* @returns {void}
|
|
73
|
+
*/
|
|
74
|
+
createOrUpdateTuple(paths: string[], pathsWithField: string[], index: number, types: PivotDataFieldDataTypeEnum[]): void;
|
|
75
|
+
/**
|
|
76
|
+
* - create tuple if not exist
|
|
77
|
+
* @param {string[]} paths the path of tuple
|
|
78
|
+
* @param {string} [pathsStr] the joined path string of tuple
|
|
79
|
+
* @returns {void}
|
|
80
|
+
*/
|
|
81
|
+
createTuple(paths: string[], pathsStr?: string, nodeIndex?: number, types?: PivotDataFieldDataTypeEnum[]): void;
|
|
82
|
+
}
|