@univerjs/engine-formula 0.22.1 → 0.23.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/lib/cjs/index.js +2209 -1910
- package/lib/es/index.js +2207 -1911
- package/lib/index.js +2207 -1911
- package/lib/types/engine/analysis/lexer-tree-builder.d.ts +18 -0
- package/lib/types/engine/dependency/formula-dependency.d.ts +22 -27
- package/lib/types/index.d.ts +3 -2
- package/lib/types/models/formula-data.model.d.ts +2 -2
- package/lib/types/models/utils/formula-data-util.d.ts +1 -1
- package/lib/types/services/calculate-formula.service.d.ts +10 -5
- package/lib/types/services/dependency-manager.service.d.ts +23 -29
- package/lib/types/services/runtime.service.d.ts +1 -0
- package/lib/umd/index.js +2 -2
- package/package.json +4 -4
|
@@ -44,6 +44,12 @@ export declare class LexerTreeBuilder extends Disposable {
|
|
|
44
44
|
private _colonState;
|
|
45
45
|
private _formulaErrorCount;
|
|
46
46
|
private _tableBracketState;
|
|
47
|
+
private _hasNewExcelFunction;
|
|
48
|
+
private _lambdaFunctionParameterSet;
|
|
49
|
+
private _xlpmPrefix;
|
|
50
|
+
private _xlfnPrefix;
|
|
51
|
+
private _resetPrefix;
|
|
52
|
+
private _clearPrefix;
|
|
47
53
|
dispose(): void;
|
|
48
54
|
getUpLevel(): number;
|
|
49
55
|
isColonClose(): boolean;
|
|
@@ -164,6 +170,18 @@ export declare class LexerTreeBuilder extends Disposable {
|
|
|
164
170
|
private _isScientificNotation;
|
|
165
171
|
private _addSequenceArray;
|
|
166
172
|
getNewFormulaWithPrefix(formulaString: string, hasFunction: (functionToken: IFunctionNames) => boolean): string | null;
|
|
173
|
+
private _generateNewFunctionString;
|
|
174
|
+
private _handleNewFunctionChild;
|
|
175
|
+
private _clearFunctionString;
|
|
176
|
+
private _checkAddBracketForMinus;
|
|
177
|
+
private _currentUnitId;
|
|
167
178
|
getFormulaExprTree(formulaString: string, unitId: string, hasFunction: (functionToken: IFunctionNames) => boolean, getDefinedNameName: (unitId: string, name: string) => Nullable<IDefinedNamesServiceParam>, getTable: (unitId: string, tableName: string) => Nullable<ISuperTable>): IExprTreeNode | null;
|
|
179
|
+
private _generateExprTree;
|
|
180
|
+
private _handleChildrenForExprTree;
|
|
181
|
+
private _checkColonNodeForExprTree;
|
|
182
|
+
private _handleTextNodeForExprTree;
|
|
183
|
+
private _getTableNameFromStructuredRef;
|
|
184
|
+
private _handleLambdaForExprTree;
|
|
185
|
+
private _getCurNodeTypeForExprTree;
|
|
168
186
|
}
|
|
169
187
|
export {};
|
|
@@ -45,7 +45,7 @@ export declare class FormulaDependencyGenerator extends Disposable implements IF
|
|
|
45
45
|
protected readonly _currentConfigService: IFormulaCurrentConfigService;
|
|
46
46
|
protected readonly _runtimeService: IFormulaRuntimeService;
|
|
47
47
|
protected readonly _otherFormulaManagerService: IOtherFormulaManagerService;
|
|
48
|
-
|
|
48
|
+
protected readonly _featureCalculationManagerService: IFeatureCalculationManagerService;
|
|
49
49
|
private readonly _univerInstanceService;
|
|
50
50
|
private readonly _interpreter;
|
|
51
51
|
protected readonly _astTreeBuilder: AstTreeBuilder;
|
|
@@ -54,37 +54,49 @@ export declare class FormulaDependencyGenerator extends Disposable implements IF
|
|
|
54
54
|
protected readonly _lexerTreeBuilder: LexerTreeBuilder;
|
|
55
55
|
private _updateRangeFlattenCache;
|
|
56
56
|
protected _dependencyRTreeCacheForAddressFunction: RTree;
|
|
57
|
+
protected _dependencyTreeCache: Map<number, IFormulaDependencyTree>;
|
|
57
58
|
constructor(_currentConfigService: IFormulaCurrentConfigService, _runtimeService: IFormulaRuntimeService, _otherFormulaManagerService: IOtherFormulaManagerService, _featureCalculationManagerService: IFeatureCalculationManagerService, _univerInstanceService: IUniverInstanceService, _interpreter: Interpreter, _astTreeBuilder: AstTreeBuilder, _lexer: Lexer, _dependencyManagerService: IDependencyManagerService, _lexerTreeBuilder: LexerTreeBuilder);
|
|
58
59
|
dispose(): void;
|
|
59
60
|
private _initUnitDispose;
|
|
60
61
|
private _disposeByUnitId;
|
|
61
62
|
generate(isCalculateTreeModel?: boolean): Promise<(FormulaDependencyTree | FormulaDependencyTreeVirtual)[]>;
|
|
62
|
-
private
|
|
63
|
-
|
|
63
|
+
private _isCyclicUtilMap;
|
|
64
|
+
protected _checkIsCycleDependency(treeList: IFormulaDependencyTree[]): boolean;
|
|
65
|
+
protected _getFeatureFormulaTree(featureId: string, treeId: Nullable<number>, params: IFeatureCalculationManagerParam): FormulaDependencyTree;
|
|
66
|
+
protected _registerOtherFormulas(otherFormulaData: IOtherFormulaData, otherFormulaDataKeys: string[], treeList: IFormulaDependencyTree[]): void;
|
|
67
|
+
protected _registerFormulas(formulaDataKeys: string[], formulaData: IFormulaData, unitData: IUnitData, treeList: IFormulaDependencyTree[]): void;
|
|
68
|
+
protected _createFDtree(unitId: string, sheetId: string, row: number, column: number, unitData: IUnitData, formulaDataItem: IFormulaDataItem): FormulaDependencyTree;
|
|
69
|
+
/**
|
|
70
|
+
* Build a formula dependency tree based on the dependency relationships.
|
|
71
|
+
* @param treeList
|
|
72
|
+
*/
|
|
73
|
+
protected _getUpdateTreeListAndMakeDependency(): IFormulaDependencyTree[];
|
|
74
|
+
protected _getTreeById(treeId: number): IFormulaDependencyTree | undefined;
|
|
75
|
+
protected _getTreeNode(tree: IFormulaDependencyTree): import("../ast-node").AstRootNode;
|
|
76
|
+
private _traverse;
|
|
77
|
+
protected _calculateRunList(treeList: IFormulaDependencyTree[]): (FormulaDependencyTree | FormulaDependencyTreeVirtual)[];
|
|
78
|
+
protected _getAllTreeList(): Promise<IFormulaDependencyTree[]>;
|
|
79
|
+
protected _getDependencyTreeParenIds(tree: IFormulaDependencyTree): Set<number>;
|
|
80
|
+
protected _getDependencyTreeChildrenIds(tree: IFormulaDependencyTree): Set<number>;
|
|
81
|
+
protected _startFormulaDependencyTreeModel(): void;
|
|
82
|
+
protected _endFormulaDependencyTreeModel(): void;
|
|
64
83
|
/**
|
|
65
84
|
* TODO @DR-Univer: The next step will be to try changing the incoming dirtyRanges to an array, thus avoiding conversion.
|
|
66
85
|
* @param dirtyRanges
|
|
67
86
|
* @returns
|
|
68
87
|
*/
|
|
69
88
|
protected _convertDirtyRangesToUnitRange(dirtyRanges: IFeatureDirtyRangeType): IUnitRange[];
|
|
70
|
-
private _intersectFeatureCalculation;
|
|
71
|
-
private _getExistTreeList;
|
|
72
89
|
private _isCyclicUtil;
|
|
73
|
-
protected _checkIsCycleDependency(treeList: IFormulaDependencyTree[]): boolean;
|
|
74
90
|
/**
|
|
75
91
|
* Generate nodes for the dependency tree, where each node contains all the reference data ranges included in each formula.
|
|
76
92
|
* @param formulaData
|
|
77
93
|
*/
|
|
78
94
|
protected _generateTreeList(formulaData: IFormulaData, otherFormulaData: IOtherFormulaData, unitData: IUnitData): Promise<IFormulaDependencyTree[]>;
|
|
79
95
|
protected _registerFeatureFormulas(treeList: FormulaDependencyTree[]): void;
|
|
80
|
-
protected _getFeatureFormulaTree(featureId: string, treeId: Nullable<number>, params: IFeatureCalculationManagerParam): FormulaDependencyTree;
|
|
81
|
-
protected _registerOtherFormulas(otherFormulaData: IOtherFormulaData, otherFormulaDataKeys: string[], treeList: IFormulaDependencyTree[]): void;
|
|
82
96
|
protected _getFirstCellOfRange(ranges: IRange[]): {
|
|
83
97
|
firstRow: number;
|
|
84
98
|
firstColumn: number;
|
|
85
99
|
};
|
|
86
|
-
protected _registerFormulas(formulaDataKeys: string[], formulaData: IFormulaData, unitData: IUnitData, treeList: IFormulaDependencyTree[]): void;
|
|
87
|
-
protected _createFDtree(unitId: string, sheetId: string, row: number, column: number, unitData: IUnitData, formulaDataItem: IFormulaDataItem): FormulaDependencyTree;
|
|
88
100
|
protected _createVirtualFDtree(tree: FormulaDependencyTree, formulaDataItem: IFormulaDataItem): FormulaDependencyTreeVirtual;
|
|
89
101
|
/**
|
|
90
102
|
* Break down the dirty areas into ranges for subsequent matching.
|
|
@@ -102,7 +114,6 @@ export declare class FormulaDependencyGenerator extends Disposable implements IF
|
|
|
102
114
|
*/
|
|
103
115
|
protected _getRangeListByNode(nodeData: IExecuteAstNodeData): Promise<IUnitRange[]>;
|
|
104
116
|
protected _getAddressFunctionNodeList(node: Nullable<BaseAstNode>): FunctionNode[];
|
|
105
|
-
protected _getTreeNode(tree: IFormulaDependencyTree): import("../ast-node").AstRootNode;
|
|
106
117
|
protected _buildDirtyRangesByAddressFunction(treeDependencyCache: RTree, tree: IFormulaDependencyTree): Promise<void>;
|
|
107
118
|
private _executedAddressFunctionNodeIds;
|
|
108
119
|
protected _calculateListByFunctionRefNode(treeList: IFormulaDependencyTree[]): Promise<void>;
|
|
@@ -110,7 +121,6 @@ export declare class FormulaDependencyGenerator extends Disposable implements IF
|
|
|
110
121
|
private _calculateAddressFunctionRuntimeData;
|
|
111
122
|
private _buildTreeNodeById;
|
|
112
123
|
private _searchDependencyByAddressFunction;
|
|
113
|
-
protected _getTreeById(treeId: number): Nullable<IFormulaDependencyTree>;
|
|
114
124
|
private _addDependencyTreeByAddressFunction;
|
|
115
125
|
/**
|
|
116
126
|
* Calculate the range required for collection in advance,
|
|
@@ -118,11 +128,6 @@ export declare class FormulaDependencyGenerator extends Disposable implements IF
|
|
|
118
128
|
* @param node
|
|
119
129
|
*/
|
|
120
130
|
protected _getRangeListByFunctionRefNode(referenceFunctionList: FunctionNode[], refOffsetX: number, refOffsetY: number): Promise<IUnitRange[]>;
|
|
121
|
-
/**
|
|
122
|
-
* Build a formula dependency tree based on the dependency relationships.
|
|
123
|
-
* @param treeList
|
|
124
|
-
*/
|
|
125
|
-
protected _getUpdateTreeListAndMakeDependency(treeList: IFormulaDependencyTree[]): IFormulaDependencyTree[];
|
|
126
131
|
private _includeTreeFeature;
|
|
127
132
|
private _includeOtherFormula;
|
|
128
133
|
private _detectForcedRecalculationNode;
|
|
@@ -133,20 +138,10 @@ export declare class FormulaDependencyGenerator extends Disposable implements IF
|
|
|
133
138
|
* @param tree
|
|
134
139
|
*/
|
|
135
140
|
protected _includeTree(tree: IFormulaDependencyTree, node: BaseAstNode): boolean;
|
|
136
|
-
/**
|
|
137
|
-
* Generate the final formula calculation order array by traversing the dependency tree established via depth-first search.
|
|
138
|
-
* @param treeList
|
|
139
|
-
*/
|
|
140
|
-
protected _calculateRunList(treeList: IFormulaDependencyTree[]): (FormulaDependencyTree | FormulaDependencyTreeVirtual)[];
|
|
141
141
|
protected _initializeGenerateTreeList(): Promise<IFormulaDependencyTree[]>;
|
|
142
|
-
protected _getAllTreeList(): Promise<IFormulaDependencyTree[]>;
|
|
143
142
|
protected _formulaDependencyTreeModel: Map<number, FormulaDependencyTreeModel>;
|
|
144
143
|
protected _getTreeModel(treeId: number): FormulaDependencyTreeModel | undefined;
|
|
145
|
-
protected _getDependencyTreeParenIds(tree: IFormulaDependencyTree): Set<number>;
|
|
146
|
-
protected _getDependencyTreeChildrenIds(tree: IFormulaDependencyTree): Set<number>;
|
|
147
144
|
protected _getFormulaDependencyTreeModel(tree: IFormulaDependencyTree): FormulaDependencyTreeModel;
|
|
148
|
-
protected _endFormulaDependencyTreeModel(): void;
|
|
149
|
-
protected _startFormulaDependencyTreeModel(): void;
|
|
150
145
|
protected _getAllDependencyJson(treeList: IFormulaDependencyTree[]): IFormulaDependencyTreeJson[];
|
|
151
146
|
getAllDependencyJson(): Promise<IFormulaDependencyTreeJson[]>;
|
|
152
147
|
protected _setRealFormulaString(treeModel: FormulaDependencyTreeModel): void;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export { ERROR_TYPE_SET, ErrorType } from './basics/error-type';
|
|
|
23
23
|
export { type ISheetFormulaError } from './basics/error-type';
|
|
24
24
|
export { FunctionType, type IFunctionInfo, type IFunctionParam } from './basics/function';
|
|
25
25
|
export { type IFunctionNames } from './basics/function';
|
|
26
|
+
export { CELL_INVERTED_INDEX_CACHE } from './basics/inverted-index-cache';
|
|
26
27
|
export { includeFormulaLexerToken, isFormulaLexerToken, normalizeSheetName } from './basics/match-token';
|
|
27
28
|
export { matchRefDrawToken } from './basics/match-token';
|
|
28
29
|
export { isReferenceString } from './basics/regex';
|
|
@@ -41,7 +42,7 @@ export { type ISetImageFormulaDataMutationParams, SetImageFormulaDataMutation }
|
|
|
41
42
|
export { type IRemoveOtherFormulaMutationParams, type ISetOtherFormulaMutationParams, RemoveOtherFormulaMutation, SetOtherFormulaMutation } from './commands/mutations/set-other-formula.mutation';
|
|
42
43
|
export { RemoveSuperTableMutation, SetSuperTableMutation, SetSuperTableOptionMutation } from './commands/mutations/set-super-table.mutation';
|
|
43
44
|
export type { ISetSuperTableMutationParam, ISetSuperTableMutationSearchParam } from './commands/mutations/set-super-table.mutation';
|
|
44
|
-
export { ENGINE_FORMULA_CYCLE_REFERENCE_COUNT, ENGINE_FORMULA_PLUGIN_CONFIG_KEY, ENGINE_FORMULA_RETURN_DEPENDENCY_TREE, type IUniverEngineFormulaConfig } from './config/config';
|
|
45
|
+
export { DEFAULT_CYCLE_REFERENCE_COUNT, ENGINE_FORMULA_CYCLE_REFERENCE_COUNT, ENGINE_FORMULA_PLUGIN_CONFIG_KEY, ENGINE_FORMULA_RETURN_DEPENDENCY_TREE, type IUniverEngineFormulaConfig } from './config/config';
|
|
45
46
|
export { CalculateController } from './controllers/calculate.controller';
|
|
46
47
|
export { Lexer } from './engine/analysis/lexer';
|
|
47
48
|
export { LexerNode } from './engine/analysis/lexer-node';
|
|
@@ -65,7 +66,7 @@ export { FormulaDependencyGenerator, IFormulaDependencyGenerator } from './engin
|
|
|
65
66
|
export { generateRandomDependencyTreeId } from './engine/dependency/formula-dependency';
|
|
66
67
|
export { Interpreter } from './engine/interpreter/interpreter';
|
|
67
68
|
export { BaseReferenceObject, type FunctionVariantType } from './engine/reference-object/base-reference-object';
|
|
68
|
-
export { AsyncArrayObject, AsyncObject } from './engine/reference-object/base-reference-object';
|
|
69
|
+
export { AsyncArrayObject, AsyncObject, FORMULA_REF_TO_ARRAY_CACHE } from './engine/reference-object/base-reference-object';
|
|
69
70
|
export { RangeReferenceObject } from './engine/reference-object/range-reference-object';
|
|
70
71
|
export { generateExecuteAstNodeData } from './engine/utils/ast-node-tool';
|
|
71
72
|
export { extractFormulaError } from './engine/utils/cell';
|
|
@@ -54,8 +54,8 @@ export declare class FormulaDataModel extends Disposable {
|
|
|
54
54
|
*/
|
|
55
55
|
getHiddenRowsFiltered(): IUnitRowData;
|
|
56
56
|
updateFormulaData(unitId: string, sheetId: string, cellValue: IObjectMatrixPrimitiveType<Nullable<ICellData>>): IObjectMatrixPrimitiveType<IFormulaDataItem | null>;
|
|
57
|
-
updateArrayFormulaRange(unitId: string, sheetId: string, cellValue: IObjectMatrixPrimitiveType<Nullable<ICellData>>):
|
|
58
|
-
updateArrayFormulaCellData(unitId: string, sheetId: string, cellValue: IObjectMatrixPrimitiveType<Nullable<ICellData>>):
|
|
57
|
+
updateArrayFormulaRange(unitId: string, sheetId: string, cellValue: IObjectMatrixPrimitiveType<Nullable<ICellData>>): boolean;
|
|
58
|
+
updateArrayFormulaCellData(unitId: string, sheetId: string, cellValue: IObjectMatrixPrimitiveType<Nullable<ICellData>>): boolean;
|
|
59
59
|
updateImageFormulaData(unitId: string, sheetId: string, cellValue: IObjectMatrixPrimitiveType<Nullable<ICellData>>): void;
|
|
60
60
|
getFormulaStringByCell(row: number, column: number, sheetId: string, unitId: string): Nullable<string>;
|
|
61
61
|
/**
|
|
@@ -18,4 +18,4 @@ import type { IFormulaDataItem, IFormulaIdMap } from '../../basics/common';
|
|
|
18
18
|
export declare function updateFormulaDataByCellValue(sheetFormulaDataMatrix: ObjectMatrix<Nullable<IFormulaDataItem>>, newSheetFormulaDataMatrix: ObjectMatrix<IFormulaDataItem | null>, formulaIdMap: {
|
|
19
19
|
[formulaId: string]: IFormulaIdMap;
|
|
20
20
|
}, deleteFormulaIdMap: Map<string, string | IFormulaIdMap>, r: number, c: number, cell: Nullable<ICellData>): void;
|
|
21
|
-
export declare function clearArrayFormulaCellDataByCell(arrayFormulaRangeMatrix: ObjectMatrix<IRange>, arrayFormulaCellDataMatrix: ObjectMatrix<Nullable<ICellData>>, r: number, c: number):
|
|
21
|
+
export declare function clearArrayFormulaCellDataByCell(arrayFormulaRangeMatrix: ObjectMatrix<IRange>, arrayFormulaCellDataMatrix: ObjectMatrix<Nullable<ICellData>>, r: number, c: number): boolean;
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { IUnitRange } from '@univerjs/core';
|
|
17
17
|
import type { Observable } from 'rxjs';
|
|
18
|
-
import type { IFeatureDirtyRangeType, IFormulaDatasetConfig, IFormulaExecuteResultMap, IFormulaStringMap, IRuntimeUnitDataType, IUnitRowData } from '../basics/common';
|
|
18
|
+
import type { IArrayFormulaRangeType, IFeatureDirtyRangeType, IFormulaDatasetConfig, IFormulaExecuteResultMap, IFormulaStringMap, IRuntimeUnitDataType, IUnitExcludedCell, IUnitRowData } from '../basics/common';
|
|
19
19
|
import type { IFormulaDependencyTreeFullJson, IFormulaDependencyTreeJson, IFormulaDependentsAndInRangeResults } from '../engine/dependency/dependency-tree';
|
|
20
20
|
import type { FunctionVariantType } from '../engine/reference-object/base-reference-object';
|
|
21
21
|
import type { IAllRuntimeData, IExecutionInProgressParams } from './runtime.service';
|
|
22
|
-
import { Disposable, IConfigService } from '@univerjs/core';
|
|
22
|
+
import { AsyncLock, Disposable, IConfigService } from '@univerjs/core';
|
|
23
23
|
import { Subject } from 'rxjs';
|
|
24
24
|
import { Lexer } from '../engine/analysis/lexer';
|
|
25
25
|
import { AstTreeBuilder } from '../engine/analysis/parser';
|
|
@@ -58,7 +58,7 @@ export declare class CalculateFormulaService extends Disposable implements ICalc
|
|
|
58
58
|
readonly executionInProgressListener$: Observable<IExecutionInProgressParams>;
|
|
59
59
|
protected readonly _executionCompleteListener$: Subject<IAllRuntimeData>;
|
|
60
60
|
readonly executionCompleteListener$: Observable<IAllRuntimeData>;
|
|
61
|
-
|
|
61
|
+
protected _executeLock: AsyncLock;
|
|
62
62
|
protected _isCalculateTreeModel: boolean;
|
|
63
63
|
constructor(_configService: IConfigService, _lexer: Lexer, _currentConfigService: IFormulaCurrentConfigService, _runtimeService: IFormulaRuntimeService, _formulaDependencyGenerator: IFormulaDependencyGenerator, _interpreter: Interpreter, _astTreeBuilder: AstTreeBuilder);
|
|
64
64
|
dispose(): void;
|
|
@@ -76,8 +76,13 @@ export declare class CalculateFormulaService extends Disposable implements ICalc
|
|
|
76
76
|
setRuntimeFeatureCellData(featureId: string, featureData: IRuntimeUnitDataType): void;
|
|
77
77
|
setRuntimeFeatureRange(featureId: string, featureRange: IFeatureDirtyRangeType): void;
|
|
78
78
|
execute(formulaDatasetConfig: IFormulaDatasetConfig): Promise<void>;
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
protected _executeStep(): Promise<true | undefined>;
|
|
80
|
+
protected _getArrayFormulaDirtyRangeAndExcludedRange(arrayFormulaRange: IArrayFormulaRangeType, runtimeFeatureRange: {
|
|
81
|
+
[featureId: string]: IFeatureDirtyRangeType;
|
|
82
|
+
}): {
|
|
83
|
+
dirtyRanges: IUnitRange[];
|
|
84
|
+
excludedCell: IUnitExcludedCell;
|
|
85
|
+
};
|
|
81
86
|
protected _apply(isArrayFormulaState?: boolean): Promise<IAllRuntimeData | undefined>;
|
|
82
87
|
executeFormulas(formulas: IFormulaStringMap, rowData?: IUnitRowData): Promise<IFormulaExecuteResultMap>;
|
|
83
88
|
calculate(formulaString: string): Promise<FunctionVariantType | undefined>;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import type { IUnitRange, Nullable } from '@univerjs/core';
|
|
16
|
+
import type { IRange, IUnitRange, Nullable } from '@univerjs/core';
|
|
17
17
|
import type { AstRootNode } from '../engine/ast-node';
|
|
18
18
|
import type { FormulaDependencyTree, IFormulaDependencyTree } from '../engine/dependency/dependency-tree';
|
|
19
19
|
import { Disposable, ObjectMatrix, RTree } from '@univerjs/core';
|
|
@@ -43,6 +43,8 @@ export interface IDependencyManagerService {
|
|
|
43
43
|
getAllTree(): IFormulaDependencyTree[];
|
|
44
44
|
buildDependencyTree(shouldBeBuildTrees: IFormulaDependencyTree[], dependencyTrees?: IFormulaDependencyTree[]): IFormulaDependencyTree[];
|
|
45
45
|
updateDependencyTreeDirtyState(treeId: number, isDirty: boolean): void;
|
|
46
|
+
openKdTree(): void;
|
|
47
|
+
closeKdTree(): void;
|
|
46
48
|
}
|
|
47
49
|
export declare class DependencyManagerBaseService extends Disposable implements IDependencyManagerService {
|
|
48
50
|
buildDependencyTree(shouldBeBuildTrees: IFormulaDependencyTree[], dependencyTrees?: IFormulaDependencyTree[]): IFormulaDependencyTree[];
|
|
@@ -80,6 +82,8 @@ export declare class DependencyManagerBaseService extends Disposable implements
|
|
|
80
82
|
protected _addDefinedName(unitId: string, definedName: string, treeId: number): void;
|
|
81
83
|
addFormulaDependencyByDefinedName(tree: IFormulaDependencyTree, node: Nullable<AstRootNode>): void;
|
|
82
84
|
updateDependencyTreeDirtyState(treeId: number, isDirty: boolean): void;
|
|
85
|
+
openKdTree(): void;
|
|
86
|
+
closeKdTree(): void;
|
|
83
87
|
}
|
|
84
88
|
/**
|
|
85
89
|
* Passively marked as dirty, register the reference and execution actions of the feature plugin.
|
|
@@ -88,27 +92,8 @@ export declare class DependencyManagerBaseService extends Disposable implements
|
|
|
88
92
|
* thereby completing the calculation of the entire dependency tree.
|
|
89
93
|
*/
|
|
90
94
|
export declare class DependencyManagerService extends DependencyManagerBaseService implements IDependencyManagerService {
|
|
91
|
-
protected _allTreeMap: Map<number,
|
|
92
|
-
|
|
93
|
-
buildDependencyTree(shouldBeBuildTrees: IFormulaDependencyTree[], dependencyTrees?: IFormulaDependencyTree[]): IFormulaDependencyTree[];
|
|
94
|
-
/**
|
|
95
|
-
* Build the dependency relationship between the trees.
|
|
96
|
-
* @param allTrees all FormulaDependencyTree
|
|
97
|
-
* @param shouldBeBuildTrees FormulaDependencyTree[] | FormulaDependencyTreeCache
|
|
98
|
-
*/
|
|
99
|
-
private _buildDependencyTree;
|
|
100
|
-
/**
|
|
101
|
-
* Build the reverse dependency relationship between the trees.
|
|
102
|
-
* @param allTrees
|
|
103
|
-
* @param dependencyTrees
|
|
104
|
-
*/
|
|
105
|
-
private _buildReverseDependency;
|
|
106
|
-
/**
|
|
107
|
-
* Get all FormulaDependencyTree from _otherFormulaData, _featureFormulaData, _formulaData
|
|
108
|
-
* return FormulaDependencyTree[]
|
|
109
|
-
*/
|
|
110
|
-
getAllTree(): IFormulaDependencyTree[];
|
|
111
|
-
getTreeById(treeId: number): IFormulaDependencyTree | undefined;
|
|
95
|
+
protected _allTreeMap: Map<number, Map<string, Map<string, IRange>>>;
|
|
96
|
+
protected _dependencyRTreeCache: RTree;
|
|
112
97
|
reset(): void;
|
|
113
98
|
addOtherFormulaDependency(unitId: string, sheetId: string, formulaId: string, dependencyTree: IFormulaDependencyTree): void;
|
|
114
99
|
removeOtherFormulaDependency(unitId: string, sheetId: string, formulaIds: string[]): void;
|
|
@@ -119,16 +104,25 @@ export declare class DependencyManagerService extends DependencyManagerBaseServi
|
|
|
119
104
|
addFormulaDependency(unitId: string, sheetId: string, row: number, column: number, dependencyTree: IFormulaDependencyTree): void;
|
|
120
105
|
removeFormulaDependency(unitId: string, sheetId: string, row: number, column: number): void;
|
|
121
106
|
clearFormulaDependency(unitId: string, sheetId?: string): void;
|
|
122
|
-
/**
|
|
123
|
-
* Clear the dependency relationship of the tree.
|
|
124
|
-
* establish the relationship between the parent and the child.
|
|
125
|
-
* @param shouldBeClearTree
|
|
126
|
-
*/
|
|
127
|
-
clearDependencyForTree(shouldBeClearTree: Nullable<IFormulaDependencyTree>): void;
|
|
128
107
|
private _removeDependencyRTreeCache;
|
|
129
108
|
removeFormulaDependencyByDefinedName(unitId: string, definedName: string): void;
|
|
109
|
+
openKdTree(): void;
|
|
110
|
+
closeKdTree(): void;
|
|
130
111
|
protected _removeAllTreeMap(treeId: Nullable<number>): void;
|
|
131
112
|
protected _addAllTreeMap(tree: IFormulaDependencyTree): void;
|
|
132
|
-
|
|
113
|
+
dispose(): void;
|
|
114
|
+
buildDependencyTree(shouldBeBuildTrees: IFormulaDependencyTree[], dependencyTrees?: IFormulaDependencyTree[]): IFormulaDependencyTree[];
|
|
115
|
+
/**
|
|
116
|
+
* Build the dependency relationship between the trees.
|
|
117
|
+
* @param allTrees all FormulaDependencyTree
|
|
118
|
+
* @param shouldBeBuildTrees FormulaDependencyTree[] | FormulaDependencyTreeCache
|
|
119
|
+
*/
|
|
120
|
+
private _buildDependencyTree;
|
|
121
|
+
/**
|
|
122
|
+
* Build the reverse dependency relationship between the trees.
|
|
123
|
+
* @param allTrees
|
|
124
|
+
* @param dependencyTrees
|
|
125
|
+
*/
|
|
126
|
+
private _buildReverseDependency;
|
|
133
127
|
}
|
|
134
128
|
export declare const IDependencyManagerService: import("@wendellhu/redi").IdentifierDecorator<IDependencyManagerService>;
|
|
@@ -224,6 +224,7 @@ export declare class FormulaRuntimeService extends Disposable implements IFormul
|
|
|
224
224
|
*/
|
|
225
225
|
private _isInOtherArrayFormulaRange;
|
|
226
226
|
private _isInArrayFormulaRange;
|
|
227
|
+
private _isSameCellValue;
|
|
227
228
|
private _checkIfArrayFormulaExceeded;
|
|
228
229
|
private _isInDirtyRange;
|
|
229
230
|
}
|