@finos/legend-query-builder 0.4.3 → 0.5.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/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +11 -2
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts +23 -0
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -0
- package/lib/components/QueryBuilderConstantExpressionPanel.js +104 -0
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -0
- package/lib/components/QueryBuilderDiffPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderDiffPanel.js +1 -2
- package/lib/components/QueryBuilderDiffPanel.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.d.ts +0 -9
- package/lib/components/QueryBuilderParametersPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.js +10 -30
- package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +60 -12
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts +2 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +6 -14
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js +12 -18
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
- package/lib/components/fetch-structure/{QueryBuilderOLAPGroupByPanel_.d.ts → QueryBuilderOLAPGroupByPanel.d.ts} +2 -2
- package/lib/components/fetch-structure/QueryBuilderOLAPGroupByPanel.d.ts.map +1 -0
- package/lib/components/fetch-structure/{QueryBuilderOLAPGroupByPanel_.js → QueryBuilderOLAPGroupByPanel.js} +2 -2
- package/lib/components/fetch-structure/QueryBuilderOLAPGroupByPanel.js.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +9 -11
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +4 -4
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +8 -9
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts +12 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +11 -7
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.js +1 -15
- package/lib/components/shared/LambdaEditor.js.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts +36 -0
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -0
- package/lib/components/shared/QueryBuilderVariableSelector.js +50 -0
- package/lib/components/shared/QueryBuilderVariableSelector.js.map +1 -0
- package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.js +9 -11
- package/lib/components/watermark/QueryBuilderWatermark.js.map +1 -1
- package/lib/graphManager/QueryBuilderHashUtils.d.ts +2 -0
- package/lib/graphManager/QueryBuilderHashUtils.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderHashUtils.js +2 -0
- package/lib/graphManager/QueryBuilderHashUtils.js.map +1 -1
- package/lib/index.css +17 -1
- package/lib/index.css.map +1 -1
- package/lib/package.json +8 -8
- package/lib/stores/QueryBuilderConfig.d.ts +1 -0
- package/lib/stores/QueryBuilderConfig.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConfig.js +1 -0
- package/lib/stores/QueryBuilderConfig.js.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.d.ts +43 -0
- package/lib/stores/QueryBuilderConstantsState.d.ts.map +1 -0
- package/lib/stores/QueryBuilderConstantsState.js +116 -0
- package/lib/stores/QueryBuilderConstantsState.js.map +1 -0
- package/lib/stores/QueryBuilderParametersState.d.ts +0 -4
- package/lib/stores/QueryBuilderParametersState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderParametersState.js +0 -1
- package/lib/stores/QueryBuilderParametersState.js.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts +3 -10
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +6 -140
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderResultState.d.ts +1 -2
- package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderResultState.js +7 -12
- package/lib/stores/QueryBuilderResultState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +9 -3
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +19 -4
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +4 -3
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +50 -42
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js +32 -29
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +14 -78
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +4 -20
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts +3 -3
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +4 -4
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +2 -2
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.d.ts +3 -3
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js +6 -6
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByOperatorLoader_.d.ts → QueryBuilderOLAPGroupByOperatorLoader.d.ts} +1 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByOperatorLoader.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByOperatorLoader_.js → QueryBuilderOLAPGroupByOperatorLoader.js} +1 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByOperatorLoader.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByState_.d.ts → QueryBuilderOLAPGroupByState.d.ts} +1 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByState.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByState_.js → QueryBuilderOLAPGroupByState.js} +1 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByState.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByStateBuilder_.d.ts → QueryBuilderOLAPGroupByStateBuilder.d.ts} +3 -3
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByStateBuilder_.js → QueryBuilderOLAPGroupByStateBuilder.js} +4 -4
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByValueSpecificationBuilder_.d.ts → QueryBuilderOLAPGroupByValueSpecificationBuilder.d.ts} +2 -2
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByValueSpecificationBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByValueSpecificationBuilder_.js → QueryBuilderOLAPGroupByValueSpecificationBuilder.js} +2 -2
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByValueSpecificationBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts +5 -5
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +10 -10
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts +2 -2
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js +6 -4
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.d.ts +27 -0
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.d.ts.map +1 -0
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.js +93 -0
- package/lib/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.js.map +1 -0
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.d.ts +26 -0
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.d.ts.map +1 -0
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.js +60 -0
- package/lib/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.js.map +1 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.d.ts +70 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.d.ts.map +1 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js +199 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningHelper.js.map +1 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.d.ts +49 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.d.ts.map +1 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.js +24 -0
- package/lib/stores/milestoning/QueryBuilderMilestoningImplementation.js.map +1 -0
- package/lib/stores/{QueryBuilderMilestoningState.d.ts → milestoning/QueryBuilderMilestoningState.d.ts} +6 -2
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts.map +1 -0
- package/lib/stores/{QueryBuilderMilestoningState.js → milestoning/QueryBuilderMilestoningState.js} +20 -20
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -0
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.d.ts +26 -0
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.d.ts.map +1 -0
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.js +55 -0
- package/lib/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.js.map +1 -0
- package/lib/stores/shared/LambdaParameterState.d.ts +14 -2
- package/lib/stores/shared/LambdaParameterState.d.ts.map +1 -1
- package/lib/stores/shared/LambdaParameterState.js +79 -6
- package/lib/stores/shared/LambdaParameterState.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +3 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.js +58 -2
- package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkStateBuilder.d.ts +2 -2
- package/lib/stores/watermark/QueryBuilderWatermarkStateBuilder.d.ts.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkStateBuilder.js +2 -2
- package/lib/stores/watermark/QueryBuilderWatermarkStateBuilder.js.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkValueSpecificationBuilder.d.ts +2 -2
- package/lib/stores/watermark/QueryBuilderWatermarkValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkValueSpecificationBuilder.js +7 -4
- package/lib/stores/watermark/QueryBuilderWatermarkValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.js +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
- package/package.json +15 -15
- package/src/components/QueryBuilder.tsx +38 -0
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +284 -0
- package/src/components/QueryBuilderDiffPanel.tsx +0 -2
- package/src/components/QueryBuilderParametersPanel.tsx +24 -110
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +119 -36
- package/src/components/QueryBuilderSideBar.tsx +5 -22
- package/src/components/explorer/QueryBuilderMilestoningEditor.tsx +29 -39
- package/src/components/fetch-structure/{QueryBuilderOLAPGroupByPanel_.tsx → QueryBuilderOLAPGroupByPanel.tsx} +1 -1
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +18 -19
- package/src/components/fetch-structure/QueryBuilderPostTDSPanel.tsx +1 -1
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +9 -9
- package/src/components/filter/QueryBuilderFilterPanel.tsx +16 -17
- package/src/components/shared/BasicValueSpecificationEditor.tsx +47 -22
- package/src/components/shared/LambdaEditor.tsx +0 -15
- package/src/components/shared/QueryBuilderVariableSelector.tsx +186 -0
- package/src/components/watermark/QueryBuilderWatermark.tsx +19 -31
- package/src/graphManager/QueryBuilderHashUtils.ts +2 -0
- package/src/stores/QueryBuilderConfig.ts +1 -0
- package/src/stores/QueryBuilderConstantsState.ts +173 -0
- package/src/stores/QueryBuilderParametersState.ts +0 -6
- package/src/stores/QueryBuilderPropertyEditorState.ts +6 -235
- package/src/stores/QueryBuilderResultState.ts +19 -17
- package/src/stores/QueryBuilderState.ts +25 -4
- package/src/stores/QueryBuilderStateBuilder.ts +111 -52
- package/src/stores/QueryBuilderValueSpecificationBuilder.ts +48 -58
- package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +16 -105
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +10 -29
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +5 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +2 -2
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.ts +7 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByOperatorLoader_.ts → QueryBuilderOLAPGroupByOperatorLoader.ts} +0 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByState_.ts → QueryBuilderOLAPGroupByState.ts} +0 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByStateBuilder_.ts → QueryBuilderOLAPGroupByStateBuilder.ts} +3 -1
- package/src/stores/fetch-structure/tds/olapGroupBy/{QueryBuilderOLAPGroupByValueSpecificationBuilder_.ts → QueryBuilderOLAPGroupByValueSpecificationBuilder.ts} +1 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.ts +1 -1
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +11 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +1 -1
- package/src/stores/filter/QueryBuilderFilterValueSpecificationBuilder.ts +10 -5
- package/src/stores/milestoning/QueryBuilderBitemporalMilestoningImplementation.ts +165 -0
- package/src/stores/milestoning/QueryBuilderBusinessTemporalMilestoningImplementation.ts +96 -0
- package/src/stores/milestoning/QueryBuilderMilestoningHelper.ts +311 -0
- package/src/stores/milestoning/QueryBuilderMilestoningImplementation.ts +77 -0
- package/src/stores/{QueryBuilderMilestoningState.ts → milestoning/QueryBuilderMilestoningState.ts} +55 -39
- package/src/stores/milestoning/QueryBuilderProcessingTemporalMilestoningImplementation.ts +88 -0
- package/src/stores/shared/LambdaParameterState.ts +151 -10
- package/src/stores/shared/ValueSpecificationEditorHelper.ts +84 -2
- package/src/stores/watermark/QueryBuilderWatermarkStateBuilder.ts +3 -0
- package/src/stores/watermark/QueryBuilderWatermarkValueSpecificationBuilder.ts +11 -5
- package/src/stores/workflows/ServiceQueryBuilderState.ts +1 -1
- package/tsconfig.json +14 -6
- package/lib/components/fetch-structure/QueryBuilderOLAPGroupByPanel_.d.ts.map +0 -1
- package/lib/components/fetch-structure/QueryBuilderOLAPGroupByPanel_.js.map +0 -1
- package/lib/stores/QueryBuilderMilestoningState.d.ts.map +0 -1
- package/lib/stores/QueryBuilderMilestoningState.js.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByOperatorLoader_.d.ts.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByOperatorLoader_.js.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByStateBuilder_.d.ts.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByStateBuilder_.js.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByState_.d.ts.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByState_.js.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByValueSpecificationBuilder_.d.ts.map +0 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOLAPGroupByValueSpecificationBuilder_.js.map +0 -1
@@ -0,0 +1,173 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import {
|
18
|
+
type Type,
|
19
|
+
type ValueSpecification,
|
20
|
+
GenericType,
|
21
|
+
GenericTypeExplicitReference,
|
22
|
+
observe_ValueSpecification,
|
23
|
+
VariableExpression,
|
24
|
+
} from '@finos/legend-graph';
|
25
|
+
import {
|
26
|
+
type Hashable,
|
27
|
+
hashArray,
|
28
|
+
deleteEntry,
|
29
|
+
addUniqueEntry,
|
30
|
+
IllegalStateError,
|
31
|
+
uuid,
|
32
|
+
assertErrorThrown,
|
33
|
+
} from '@finos/legend-shared';
|
34
|
+
import { action, makeObservable, observable } from 'mobx';
|
35
|
+
import { QUERY_BUILDER_HASH_STRUCTURE } from '../graphManager/QueryBuilderHashUtils.js';
|
36
|
+
import type { QueryBuilderState } from './QueryBuilderState.js';
|
37
|
+
import { buildDefaultInstanceValue } from './shared/ValueSpecificationEditorHelper.js';
|
38
|
+
import { valueSpecification_setGenericType } from './shared/ValueSpecificationModifierHelper.js';
|
39
|
+
|
40
|
+
export class QueryBuilderConstantExpressionState implements Hashable {
|
41
|
+
readonly queryBuilderState: QueryBuilderState;
|
42
|
+
readonly uuid = uuid();
|
43
|
+
variable: VariableExpression;
|
44
|
+
value: ValueSpecification;
|
45
|
+
|
46
|
+
constructor(
|
47
|
+
queryBuilderState: QueryBuilderState,
|
48
|
+
variable: VariableExpression,
|
49
|
+
value: ValueSpecification,
|
50
|
+
) {
|
51
|
+
makeObservable(this, {
|
52
|
+
variable: observable,
|
53
|
+
value: observable,
|
54
|
+
setValueSpec: action,
|
55
|
+
changeValSpecType: action,
|
56
|
+
});
|
57
|
+
this.queryBuilderState = queryBuilderState;
|
58
|
+
this.value = observe_ValueSpecification(
|
59
|
+
value,
|
60
|
+
this.queryBuilderState.observableContext,
|
61
|
+
);
|
62
|
+
observe_ValueSpecification(
|
63
|
+
variable,
|
64
|
+
this.queryBuilderState.observableContext,
|
65
|
+
);
|
66
|
+
this.variable = variable;
|
67
|
+
}
|
68
|
+
|
69
|
+
changeValSpecType(type: Type): void {
|
70
|
+
const variableType = this.value.genericType?.value.rawType;
|
71
|
+
if (variableType !== type) {
|
72
|
+
try {
|
73
|
+
const valSpec = buildDefaultInstanceValue(
|
74
|
+
this.queryBuilderState.graphManagerState.graph,
|
75
|
+
type,
|
76
|
+
);
|
77
|
+
this.setValueSpec(valSpec);
|
78
|
+
} catch (error) {
|
79
|
+
assertErrorThrown(error);
|
80
|
+
this.queryBuilderState.applicationStore.notifyError(error.message);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
setValueSpec(value: ValueSpecification): void {
|
86
|
+
if (value instanceof VariableExpression) {
|
87
|
+
throw new IllegalStateError(
|
88
|
+
'Can not assign a parameter to another parameter',
|
89
|
+
);
|
90
|
+
}
|
91
|
+
this.value = observe_ValueSpecification(
|
92
|
+
value,
|
93
|
+
this.queryBuilderState.observableContext,
|
94
|
+
);
|
95
|
+
const valueSpecType = value.genericType?.value.rawType;
|
96
|
+
if (
|
97
|
+
valueSpecType &&
|
98
|
+
valueSpecType !== this.variable.genericType?.value.rawType
|
99
|
+
) {
|
100
|
+
valueSpecification_setGenericType(
|
101
|
+
this.variable,
|
102
|
+
GenericTypeExplicitReference.create(new GenericType(valueSpecType)),
|
103
|
+
);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
get hashCode(): string {
|
108
|
+
return hashArray([
|
109
|
+
QUERY_BUILDER_HASH_STRUCTURE.CONSTANT_EXPRESSION_STATE,
|
110
|
+
this.variable.name,
|
111
|
+
this.value,
|
112
|
+
]);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
export class QueryBuilderConstantsState implements Hashable {
|
117
|
+
readonly queryBuilderState: QueryBuilderState;
|
118
|
+
showConstantPanel = false;
|
119
|
+
constants: QueryBuilderConstantExpressionState[] = [];
|
120
|
+
selectedConstant: QueryBuilderConstantExpressionState | undefined;
|
121
|
+
|
122
|
+
constructor(queryBuilderState: QueryBuilderState) {
|
123
|
+
this.queryBuilderState = queryBuilderState;
|
124
|
+
|
125
|
+
makeObservable(this, {
|
126
|
+
constants: observable,
|
127
|
+
showConstantPanel: observable,
|
128
|
+
selectedConstant: observable,
|
129
|
+
addConstant: action,
|
130
|
+
removeConstant: action,
|
131
|
+
setShowConstantPanel: action,
|
132
|
+
setSelectedConstant: action,
|
133
|
+
});
|
134
|
+
}
|
135
|
+
|
136
|
+
get isEmpty(): boolean {
|
137
|
+
return !this.constants.length;
|
138
|
+
}
|
139
|
+
|
140
|
+
setShowConstantPanel(val: boolean): void {
|
141
|
+
this.showConstantPanel = val;
|
142
|
+
}
|
143
|
+
|
144
|
+
addConstant(val: QueryBuilderConstantExpressionState): void {
|
145
|
+
addUniqueEntry(this.constants, val);
|
146
|
+
}
|
147
|
+
|
148
|
+
removeConstant(val: QueryBuilderConstantExpressionState): void {
|
149
|
+
deleteEntry(this.constants, val);
|
150
|
+
}
|
151
|
+
|
152
|
+
setSelectedConstant(
|
153
|
+
val: QueryBuilderConstantExpressionState | undefined,
|
154
|
+
): void {
|
155
|
+
this.selectedConstant = val;
|
156
|
+
}
|
157
|
+
|
158
|
+
isValueSpecConstant(value: ValueSpecification): boolean {
|
159
|
+
if (value instanceof VariableExpression) {
|
160
|
+
return Boolean(
|
161
|
+
this.constants.find((v) => v.variable.name === value.name),
|
162
|
+
);
|
163
|
+
}
|
164
|
+
return false;
|
165
|
+
}
|
166
|
+
|
167
|
+
get hashCode(): string {
|
168
|
+
return hashArray([
|
169
|
+
QUERY_BUILDER_HASH_STRUCTURE.CONSTANT_STATE,
|
170
|
+
hashArray(this.constants),
|
171
|
+
]);
|
172
|
+
}
|
173
|
+
}
|
@@ -23,12 +23,6 @@ import {
|
|
23
23
|
LambdaParametersState,
|
24
24
|
} from './shared/LambdaParameterState.js';
|
25
25
|
|
26
|
-
export const QUERY_BUILDER_PARAMETER_DND_TYPE = 'PARAMETER';
|
27
|
-
|
28
|
-
export interface QueryBuilderParameterDragSource {
|
29
|
-
variable: LambdaParameterState;
|
30
|
-
}
|
31
|
-
|
32
26
|
export class QueryBuilderParametersState
|
33
27
|
extends LambdaParametersState
|
34
28
|
implements Hashable
|
@@ -38,21 +38,14 @@ import {
|
|
38
38
|
EnumValueInstanceValue,
|
39
39
|
InstanceValue,
|
40
40
|
PrimitiveInstanceValue,
|
41
|
-
PRIMITIVE_TYPE,
|
41
|
+
type PRIMITIVE_TYPE,
|
42
42
|
VariableExpression,
|
43
|
-
getMilestoneTemporalStereotype,
|
44
|
-
MILESTONING_STEREOTYPE,
|
45
43
|
SimpleFunctionExpression,
|
46
44
|
matchFunctionName,
|
47
45
|
TYPE_CAST_TOKEN,
|
48
46
|
observe_AbstractPropertyExpression,
|
49
47
|
GenericTypeExplicitReference,
|
50
48
|
GenericType,
|
51
|
-
BUSINESS_DATE_MILESTONING_PROPERTY_NAME,
|
52
|
-
PROCESSING_DATE_MILESTONING_PROPERTY_NAME,
|
53
|
-
INTERNAL__PropagatedValue,
|
54
|
-
Association,
|
55
|
-
getGeneratedMilestonedPropertiesForAssociation,
|
56
49
|
PropertyExplicitReference,
|
57
50
|
PrimitiveType,
|
58
51
|
} from '@finos/legend-graph';
|
@@ -61,7 +54,6 @@ import {
|
|
61
54
|
generateDefaultValueForPrimitiveType,
|
62
55
|
} from './QueryBuilderValueSpecificationHelper.js';
|
63
56
|
import type { QueryBuilderState } from './QueryBuilderState.js';
|
64
|
-
import type { QueryBuilderMilestoningState } from './QueryBuilderMilestoningState.js';
|
65
57
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../graphManager/QueryBuilderSupportedFunctions.js';
|
66
58
|
import { QUERY_BUILDER_HASH_STRUCTURE } from '../graphManager/QueryBuilderHashUtils.js';
|
67
59
|
import {
|
@@ -69,236 +61,11 @@ import {
|
|
69
61
|
functionExpression_setParametersValues,
|
70
62
|
instanceValue_setValues,
|
71
63
|
} from './shared/ValueSpecificationModifierHelper.js';
|
72
|
-
|
73
|
-
export const getDerivedPropertyMilestoningSteoreotype = (
|
74
|
-
property: DerivedProperty,
|
75
|
-
graph: PureModel,
|
76
|
-
): MILESTONING_STEREOTYPE | undefined => {
|
77
|
-
const owner = property._OWNER;
|
78
|
-
if (owner instanceof Class) {
|
79
|
-
return getMilestoneTemporalStereotype(owner, graph);
|
80
|
-
} else if (owner instanceof Association) {
|
81
|
-
const generatedMilestonedProperties =
|
82
|
-
getGeneratedMilestonedPropertiesForAssociation(owner, property);
|
83
|
-
if (generatedMilestonedProperties.length) {
|
84
|
-
const ownerClass =
|
85
|
-
generatedMilestonedProperties[0]?.genericType.value.rawType;
|
86
|
-
return getMilestoneTemporalStereotype(
|
87
|
-
guaranteeType(ownerClass, Class),
|
88
|
-
graph,
|
89
|
-
);
|
90
|
-
}
|
91
|
-
}
|
92
|
-
return undefined;
|
93
|
-
};
|
94
|
-
|
95
|
-
/**
|
96
|
-
* Check if the parameter value of the milestoned property is
|
97
|
-
* the same as those specified in global scope, so that we can
|
98
|
-
* potentially replace them with propgated value.
|
99
|
-
*/
|
100
|
-
const matchMilestoningParameterValue = (
|
101
|
-
stereotype: MILESTONING_STEREOTYPE,
|
102
|
-
idx: number,
|
103
|
-
parameterValue: ValueSpecification,
|
104
|
-
milestoningDate: QueryBuilderMilestoningState,
|
105
|
-
): boolean => {
|
106
|
-
const checkIfEquivalent = (
|
107
|
-
param1: ValueSpecification | undefined,
|
108
|
-
param2: ValueSpecification | undefined,
|
109
|
-
): boolean => {
|
110
|
-
if (
|
111
|
-
param1 instanceof VariableExpression &&
|
112
|
-
param2 instanceof VariableExpression
|
113
|
-
) {
|
114
|
-
return param1.name === param2.name;
|
115
|
-
} else if (
|
116
|
-
param1 instanceof PrimitiveInstanceValue &&
|
117
|
-
param2 instanceof PrimitiveInstanceValue
|
118
|
-
) {
|
119
|
-
if (
|
120
|
-
param1.genericType.value.rawType.name === PRIMITIVE_TYPE.LATESTDATE &&
|
121
|
-
param2.genericType.value.rawType.name === PRIMITIVE_TYPE.LATESTDATE
|
122
|
-
) {
|
123
|
-
return true;
|
124
|
-
}
|
125
|
-
return (
|
126
|
-
param1.genericType.value.rawType.name ===
|
127
|
-
param2.genericType.value.rawType.name &&
|
128
|
-
param1.values[0] === param2.values[0]
|
129
|
-
);
|
130
|
-
}
|
131
|
-
return false;
|
132
|
-
};
|
133
|
-
switch (stereotype) {
|
134
|
-
case MILESTONING_STEREOTYPE.BITEMPORAL:
|
135
|
-
return (
|
136
|
-
(idx === 0 &&
|
137
|
-
checkIfEquivalent(parameterValue, milestoningDate.processingDate)) ||
|
138
|
-
(idx === 1 &&
|
139
|
-
checkIfEquivalent(parameterValue, milestoningDate.businessDate))
|
140
|
-
);
|
141
|
-
case MILESTONING_STEREOTYPE.PROCESSING_TEMPORAL:
|
142
|
-
return checkIfEquivalent(parameterValue, milestoningDate.processingDate);
|
143
|
-
case MILESTONING_STEREOTYPE.BUSINESS_TEMPORAL:
|
144
|
-
return checkIfEquivalent(parameterValue, milestoningDate.businessDate);
|
145
|
-
default:
|
146
|
-
}
|
147
|
-
return false;
|
148
|
-
};
|
64
|
+
import { generateMilestonedPropertyParameterValue } from './milestoning/QueryBuilderMilestoningHelper.js';
|
149
65
|
|
150
66
|
export const prettyPropertyName = (value: string): string =>
|
151
67
|
isCamelCase(value) ? prettyCamelCase(value) : prettyCONSTName(value);
|
152
68
|
|
153
|
-
/**
|
154
|
-
* Generate a parameter value for the derived property given the index if the property is milestoned.
|
155
|
-
*
|
156
|
-
* This method considers different scenarios for milestoning and take into account date propagation
|
157
|
-
* See https://github.com/finos/legend-studio/pull/891
|
158
|
-
*/
|
159
|
-
export const generateMilestonedPropertyParameterValue = (
|
160
|
-
derivedPropertyExpressionState: QueryBuilderDerivedPropertyExpressionState,
|
161
|
-
idx: number,
|
162
|
-
): ValueSpecification | undefined => {
|
163
|
-
// Milestoning transformations should not be done on actual derived properties.
|
164
|
-
if (
|
165
|
-
derivedPropertyExpressionState.derivedProperty._OWNER.derivedProperties.includes(
|
166
|
-
derivedPropertyExpressionState.derivedProperty,
|
167
|
-
)
|
168
|
-
) {
|
169
|
-
return undefined;
|
170
|
-
}
|
171
|
-
const milestoningState =
|
172
|
-
derivedPropertyExpressionState.queryBuilderState.milestoningState;
|
173
|
-
const temporalSource = getDerivedPropertyMilestoningSteoreotype(
|
174
|
-
derivedPropertyExpressionState.derivedProperty,
|
175
|
-
derivedPropertyExpressionState.queryBuilderState.graphManagerState.graph,
|
176
|
-
);
|
177
|
-
const temporalTarget =
|
178
|
-
derivedPropertyExpressionState.propertyExpression.func.value.genericType
|
179
|
-
.value.rawType instanceof Class &&
|
180
|
-
derivedPropertyExpressionState.propertyExpression.func.value._OWNER
|
181
|
-
._generatedMilestonedProperties.length !== 0
|
182
|
-
? getMilestoneTemporalStereotype(
|
183
|
-
derivedPropertyExpressionState.propertyExpression.func.value
|
184
|
-
.genericType.value.rawType,
|
185
|
-
derivedPropertyExpressionState.queryBuilderState.graphManagerState
|
186
|
-
.graph,
|
187
|
-
)
|
188
|
-
: undefined;
|
189
|
-
const shouldReturnMilestoningParameter =
|
190
|
-
temporalTarget &&
|
191
|
-
((idx < derivedPropertyExpressionState.parameterValues.length &&
|
192
|
-
(matchMilestoningParameterValue(
|
193
|
-
temporalTarget,
|
194
|
-
idx,
|
195
|
-
guaranteeNonNullable(
|
196
|
-
derivedPropertyExpressionState.parameterValues[idx],
|
197
|
-
),
|
198
|
-
milestoningState,
|
199
|
-
) ||
|
200
|
-
/**
|
201
|
-
* Checks if the given milestoning needs to be overwritten or not.
|
202
|
-
* Specially, we would need to rewrite the query if the user passes a single parameter
|
203
|
-
* to the `bitemporal` property expression with `processing temporal` source.
|
204
|
-
*/
|
205
|
-
(getDerivedPropertyMilestoningSteoreotype(
|
206
|
-
derivedPropertyExpressionState.derivedProperty,
|
207
|
-
derivedPropertyExpressionState.queryBuilderState.graphManagerState
|
208
|
-
.graph,
|
209
|
-
) === MILESTONING_STEREOTYPE.PROCESSING_TEMPORAL &&
|
210
|
-
temporalTarget === MILESTONING_STEREOTYPE.BITEMPORAL &&
|
211
|
-
derivedPropertyExpressionState.parameterValues.length === 1))) ||
|
212
|
-
idx >= derivedPropertyExpressionState.parameterValues.length);
|
213
|
-
|
214
|
-
if (!shouldReturnMilestoningParameter) {
|
215
|
-
return undefined;
|
216
|
-
}
|
217
|
-
|
218
|
-
switch (temporalTarget) {
|
219
|
-
case MILESTONING_STEREOTYPE.BUSINESS_TEMPORAL: {
|
220
|
-
if (!milestoningState.businessDate) {
|
221
|
-
milestoningState.setBusinessDate(
|
222
|
-
derivedPropertyExpressionState.queryBuilderState.milestoningState.buildMilestoningParameter(
|
223
|
-
BUSINESS_DATE_MILESTONING_PROPERTY_NAME,
|
224
|
-
),
|
225
|
-
);
|
226
|
-
}
|
227
|
-
const parameter = new INTERNAL__PropagatedValue(() =>
|
228
|
-
guaranteeNonNullable(milestoningState.businessDate),
|
229
|
-
);
|
230
|
-
return parameter;
|
231
|
-
}
|
232
|
-
case MILESTONING_STEREOTYPE.BITEMPORAL: {
|
233
|
-
if (!milestoningState.processingDate) {
|
234
|
-
milestoningState.setProcessingDate(
|
235
|
-
derivedPropertyExpressionState.queryBuilderState.milestoningState.buildMilestoningParameter(
|
236
|
-
PROCESSING_DATE_MILESTONING_PROPERTY_NAME,
|
237
|
-
),
|
238
|
-
);
|
239
|
-
}
|
240
|
-
if (!milestoningState.businessDate) {
|
241
|
-
milestoningState.setBusinessDate(
|
242
|
-
derivedPropertyExpressionState.queryBuilderState.milestoningState.buildMilestoningParameter(
|
243
|
-
BUSINESS_DATE_MILESTONING_PROPERTY_NAME,
|
244
|
-
),
|
245
|
-
);
|
246
|
-
}
|
247
|
-
if (idx === 0) {
|
248
|
-
if (
|
249
|
-
temporalSource === MILESTONING_STEREOTYPE.PROCESSING_TEMPORAL &&
|
250
|
-
derivedPropertyExpressionState.parameterValues.length === 1
|
251
|
-
) {
|
252
|
-
return guaranteeType(
|
253
|
-
derivedPropertyExpressionState.propertyExpression
|
254
|
-
.parametersValues[0],
|
255
|
-
AbstractPropertyExpression,
|
256
|
-
).parametersValues[1];
|
257
|
-
}
|
258
|
-
const parameter = new INTERNAL__PropagatedValue(() =>
|
259
|
-
guaranteeNonNullable(milestoningState.processingDate),
|
260
|
-
);
|
261
|
-
return parameter;
|
262
|
-
} else {
|
263
|
-
if (
|
264
|
-
temporalSource === MILESTONING_STEREOTYPE.PROCESSING_TEMPORAL &&
|
265
|
-
derivedPropertyExpressionState.parameterValues.length === 1
|
266
|
-
) {
|
267
|
-
return derivedPropertyExpressionState.parameterValues[0];
|
268
|
-
} else if (
|
269
|
-
temporalSource === MILESTONING_STEREOTYPE.BUSINESS_TEMPORAL &&
|
270
|
-
derivedPropertyExpressionState.parameterValues.length === 1
|
271
|
-
) {
|
272
|
-
return guaranteeType(
|
273
|
-
derivedPropertyExpressionState.propertyExpression
|
274
|
-
.parametersValues[0],
|
275
|
-
AbstractPropertyExpression,
|
276
|
-
).parametersValues[1];
|
277
|
-
}
|
278
|
-
const parameter = new INTERNAL__PropagatedValue(() =>
|
279
|
-
guaranteeNonNullable(milestoningState.businessDate),
|
280
|
-
);
|
281
|
-
return parameter;
|
282
|
-
}
|
283
|
-
}
|
284
|
-
case MILESTONING_STEREOTYPE.PROCESSING_TEMPORAL: {
|
285
|
-
if (!milestoningState.processingDate) {
|
286
|
-
milestoningState.setProcessingDate(
|
287
|
-
derivedPropertyExpressionState.queryBuilderState.milestoningState.buildMilestoningParameter(
|
288
|
-
PROCESSING_DATE_MILESTONING_PROPERTY_NAME,
|
289
|
-
),
|
290
|
-
);
|
291
|
-
}
|
292
|
-
const parameter = new INTERNAL__PropagatedValue(() =>
|
293
|
-
guaranteeNonNullable(milestoningState.processingDate),
|
294
|
-
);
|
295
|
-
return parameter;
|
296
|
-
}
|
297
|
-
default:
|
298
|
-
return undefined;
|
299
|
-
}
|
300
|
-
};
|
301
|
-
|
302
69
|
export const getPropertyChainName = (
|
303
70
|
propertyExpression: AbstractPropertyExpression,
|
304
71
|
humanizePropertyName: boolean,
|
@@ -468,10 +235,12 @@ export class QueryBuilderDerivedPropertyExpressionState {
|
|
468
235
|
readonly propertyExpression: AbstractPropertyExpression;
|
469
236
|
readonly derivedProperty: DerivedProperty;
|
470
237
|
readonly parameters: VariableExpression[] = [];
|
238
|
+
readonly propertyExpressionState: QueryBuilderPropertyExpressionState;
|
471
239
|
|
472
240
|
constructor(
|
473
241
|
queryBuilderState: QueryBuilderState,
|
474
242
|
propertyExpression: AbstractPropertyExpression,
|
243
|
+
propertyExpressionState: QueryBuilderPropertyExpressionState,
|
475
244
|
) {
|
476
245
|
this.path = getPropertyPath(propertyExpression);
|
477
246
|
this.title = getPropertyChainName(propertyExpression, true);
|
@@ -484,6 +253,7 @@ export class QueryBuilderDerivedPropertyExpressionState {
|
|
484
253
|
propertyExpression.func.value,
|
485
254
|
DerivedProperty,
|
486
255
|
);
|
256
|
+
this.propertyExpressionState = propertyExpressionState;
|
487
257
|
// build the parameters of the derived properties
|
488
258
|
if (Array.isArray(this.derivedProperty.parameters)) {
|
489
259
|
this.parameters = this.derivedProperty.parameters.map((parameter) =>
|
@@ -625,6 +395,7 @@ export class QueryBuilderPropertyExpressionState implements Hashable {
|
|
625
395
|
new QueryBuilderDerivedPropertyExpressionState(
|
626
396
|
this.queryBuilderState,
|
627
397
|
currentExpression,
|
398
|
+
this,
|
628
399
|
);
|
629
400
|
result.push(derivedPropertyExpressionState);
|
630
401
|
}
|
@@ -35,10 +35,13 @@ import {
|
|
35
35
|
EXECUTION_SERIALIZATION_FORMAT,
|
36
36
|
RawExecutionResult,
|
37
37
|
buildRawLambdaFromLambdaFunction,
|
38
|
-
ParameterValue,
|
39
38
|
} from '@finos/legend-graph';
|
40
39
|
import { buildLambdaFunction } from './QueryBuilderValueSpecificationBuilder.js';
|
41
40
|
import { ExecutionPlanState } from '@finos/legend-application';
|
41
|
+
import {
|
42
|
+
buildExecutionParameterValues,
|
43
|
+
getExecutionQueryFromRawLambda,
|
44
|
+
} from './shared/LambdaParameterState.js';
|
42
45
|
|
43
46
|
const DEFAULT_LIMIT = 1000;
|
44
47
|
|
@@ -125,24 +128,17 @@ export class QueryBuilderResultState {
|
|
125
128
|
this.queryBuilderState.unsupportedQueryState.rawLambda,
|
126
129
|
'Lambda is required to execute query',
|
127
130
|
);
|
131
|
+
if (!this.queryBuilderState.isParameterSupportDisabled) {
|
132
|
+
return getExecutionQueryFromRawLambda(
|
133
|
+
query,
|
134
|
+
this.queryBuilderState.parametersState.parameterStates,
|
135
|
+
this.queryBuilderState.graphManagerState,
|
136
|
+
);
|
137
|
+
}
|
128
138
|
}
|
129
139
|
return query;
|
130
140
|
}
|
131
141
|
|
132
|
-
buildExecutionParameterValues(): ParameterValue[] {
|
133
|
-
return this.queryBuilderState.parametersState.parameterStates.map(
|
134
|
-
(queryParamState) => {
|
135
|
-
const paramValue = new ParameterValue();
|
136
|
-
paramValue.name = queryParamState.parameter.name;
|
137
|
-
paramValue.value =
|
138
|
-
this.queryBuilderState.graphManagerState.graphManager.serializeValueSpecification(
|
139
|
-
guaranteeNonNullable(queryParamState.value),
|
140
|
-
);
|
141
|
-
return paramValue;
|
142
|
-
},
|
143
|
-
);
|
144
|
-
}
|
145
|
-
|
146
142
|
*exportData(
|
147
143
|
serializationFormat: EXECUTION_SERIALIZATION_FORMAT,
|
148
144
|
): GeneratorFn<void> {
|
@@ -165,6 +161,10 @@ export class QueryBuilderResultState {
|
|
165
161
|
this.queryBuilderState.graphManagerState.graph,
|
166
162
|
{
|
167
163
|
serializationFormat,
|
164
|
+
parameterValues: buildExecutionParameterValues(
|
165
|
+
this.queryBuilderState.parametersState.parameterStates,
|
166
|
+
this.queryBuilderState.graphManagerState,
|
167
|
+
),
|
168
168
|
},
|
169
169
|
)) as ExecutionResult;
|
170
170
|
let contentType: ContentType;
|
@@ -210,7 +210,6 @@ export class QueryBuilderResultState {
|
|
210
210
|
`Runtime is required to execute query`,
|
211
211
|
);
|
212
212
|
const query = this.buildExecutionRawLambda();
|
213
|
-
const parameterValues = this.buildExecutionParameterValues();
|
214
213
|
const startTime = Date.now();
|
215
214
|
const promise =
|
216
215
|
this.queryBuilderState.graphManagerState.graphManager.executeMapping(
|
@@ -219,7 +218,10 @@ export class QueryBuilderResultState {
|
|
219
218
|
runtime,
|
220
219
|
this.queryBuilderState.graphManagerState.graph,
|
221
220
|
{
|
222
|
-
parameterValues:
|
221
|
+
parameterValues: buildExecutionParameterValues(
|
222
|
+
this.queryBuilderState.parametersState.parameterStates,
|
223
|
+
this.queryBuilderState.graphManagerState,
|
224
|
+
),
|
223
225
|
},
|
224
226
|
);
|
225
227
|
this.setQueryRunPromise(promise);
|
@@ -72,10 +72,11 @@ import { QueryBuilderParametersState } from './QueryBuilderParametersState.js';
|
|
72
72
|
import type { QueryBuilderFilterOperator } from './filter/QueryBuilderFilterOperator.js';
|
73
73
|
import { getQueryBuilderCoreFilterOperators } from './filter/QueryBuilderFilterOperatorLoader.js';
|
74
74
|
import { QueryBuilderChangeDetectionState } from './QueryBuilderChangeDetectionState.js';
|
75
|
-
import { QueryBuilderMilestoningState } from './QueryBuilderMilestoningState.js';
|
75
|
+
import { QueryBuilderMilestoningState } from './milestoning/QueryBuilderMilestoningState.js';
|
76
76
|
import { QUERY_BUILDER_HASH_STRUCTURE } from '../graphManager/QueryBuilderHashUtils.js';
|
77
77
|
import { QUERY_BUILDER_COMMAND_KEY } from './QueryBuilderCommand.js';
|
78
78
|
import { QueryBuilderWatermarkState } from './watermark/QueryBuilderWatermarkState.js';
|
79
|
+
import { QueryBuilderConstantsState } from './QueryBuilderConstantsState.js';
|
79
80
|
|
80
81
|
export abstract class QueryBuilderState implements CommandRegistrar {
|
81
82
|
applicationStore: GenericLegendApplicationStore;
|
@@ -85,6 +86,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
85
86
|
explorerState: QueryBuilderExplorerState;
|
86
87
|
functionsExplorerState: QueryFunctionsExplorerState;
|
87
88
|
parametersState: QueryBuilderParametersState;
|
89
|
+
constantState: QueryBuilderConstantsState;
|
88
90
|
milestoningState: QueryBuilderMilestoningState;
|
89
91
|
fetchStructureState: QueryBuilderFetchStructureState;
|
90
92
|
filterState: QueryBuilderFilterState;
|
@@ -116,6 +118,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
116
118
|
makeObservable(this, {
|
117
119
|
explorerState: observable,
|
118
120
|
parametersState: observable,
|
121
|
+
constantState: observable,
|
119
122
|
functionsExplorerState: observable,
|
120
123
|
fetchStructureState: observable,
|
121
124
|
filterState: observable,
|
@@ -159,6 +162,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
159
162
|
this.milestoningState = new QueryBuilderMilestoningState(this);
|
160
163
|
this.explorerState = new QueryBuilderExplorerState(this);
|
161
164
|
this.parametersState = new QueryBuilderParametersState(this);
|
165
|
+
this.constantState = new QueryBuilderConstantsState(this);
|
162
166
|
this.functionsExplorerState = new QueryFunctionsExplorerState(this);
|
163
167
|
this.fetchStructureState = new QueryBuilderFetchStructureState(this);
|
164
168
|
this.filterState = new QueryBuilderFilterState(this, this.filterOperators);
|
@@ -200,6 +204,20 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
200
204
|
return true;
|
201
205
|
}
|
202
206
|
|
207
|
+
get allVariables(): VariableExpression[] {
|
208
|
+
const parameterVars = this.parametersState.parameterStates.map(
|
209
|
+
(paramState) => paramState.parameter,
|
210
|
+
);
|
211
|
+
const letVars = this.constantState.constants.map(
|
212
|
+
(letVar) => letVar.variable,
|
213
|
+
);
|
214
|
+
return [...parameterVars, ...letVars];
|
215
|
+
}
|
216
|
+
|
217
|
+
get allVariableNames(): string[] {
|
218
|
+
return this.allVariables.map((e) => e.name);
|
219
|
+
}
|
220
|
+
|
203
221
|
setShowFunctionsExplorerPanel(val: boolean): void {
|
204
222
|
this.showFunctionsExplorerPanel = val;
|
205
223
|
}
|
@@ -258,6 +276,7 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
258
276
|
this.explorerState = new QueryBuilderExplorerState(this);
|
259
277
|
this.explorerState.refreshTreeData();
|
260
278
|
this.parametersState = new QueryBuilderParametersState(this);
|
279
|
+
this.constantState = new QueryBuilderConstantsState(this);
|
261
280
|
this.functionsExplorerState = new QueryFunctionsExplorerState(this);
|
262
281
|
this.filterState = new QueryBuilderFilterState(this, this.filterOperators);
|
263
282
|
this.watermarkState = new QueryBuilderWatermarkState(this);
|
@@ -284,10 +303,12 @@ export abstract class QueryBuilderState implements CommandRegistrar {
|
|
284
303
|
this.milestoningState.updateMilestoningConfiguration();
|
285
304
|
}
|
286
305
|
|
287
|
-
changeMapping(val: Mapping): void {
|
306
|
+
changeMapping(val: Mapping, options?: { keepQueryContent?: boolean }): void {
|
288
307
|
this.resetQueryResult();
|
289
|
-
|
290
|
-
|
308
|
+
if (!options?.keepQueryContent) {
|
309
|
+
this.resetQueryContent();
|
310
|
+
this.milestoningState.updateMilestoningConfiguration();
|
311
|
+
}
|
291
312
|
this.setMapping(val);
|
292
313
|
}
|
293
314
|
|