@finos/legend-application-query 5.2.6 → 5.2.7
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 +22 -11
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +12 -7
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/QueryBuilderSetupPanel.js +1 -1
- package/lib/components/QueryBuilderSetupPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts +1 -2
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +14 -16
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +2 -2
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js +22 -105
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +1 -2
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +8 -10
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +23 -17
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts +2 -2
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js +15 -12
- package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +2 -2
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +23 -28
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +7 -7
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js +1 -1
- package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +5 -3
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +7 -7
- package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPreviewDataHelper.js +17 -14
- package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +34 -24
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +1 -2
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +17 -26
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +124 -0
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -0
- package/lib/stores/QueryBuilderStateBuilder.js +310 -0
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -0
- package/lib/stores/{QueryBuilderTestUtils.d.ts → QueryBuilderStateTestUtils.d.ts} +2 -2
- package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -0
- package/lib/stores/{QueryBuilderTestUtils.js → QueryBuilderStateTestUtils.js} +2 -2
- package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -0
- package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.js +14 -12
- package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +3 -11
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js +10 -319
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts +27 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +153 -0
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -0
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +37 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +79 -2
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -11
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +53 -20
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts +1 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js +3 -1
- package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +17 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +10 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts +3 -20
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +31 -73
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +17 -4
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +110 -21
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts +20 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +62 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts +2 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +3 -8
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts +9 -2
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js +28 -5
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js +2 -2
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts +10 -2
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js +102 -39
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts +25 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js +186 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts +9 -4
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js +129 -13
- package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts +20 -0
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js +96 -0
- package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js +1 -1
- package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.d.ts → QueryBuilderPostFilterStateBuilder.d.ts} +4 -3
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.js → QueryBuilderPostFilterStateBuilder.js} +30 -21
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -4
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js.map +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
- package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts +19 -0
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts.map +1 -0
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.js +74 -0
- package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -0
- package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.d.ts → QueryBuilderFilterValueSpecificationBuilder.d.ts} +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts.map +1 -0
- package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.js → QueryBuilderFilterValueSpecificationBuilder.js} +1 -1
- package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -0
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js +5 -5
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js.map +1 -1
- package/package.json +14 -14
- package/src/components/QueryBuilder.tsx +47 -28
- package/src/components/QueryBuilderResultPanel.tsx +21 -14
- package/src/components/QueryBuilderSetupPanel.tsx +1 -1
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +23 -38
- package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +2 -2
- package/src/components/fetch-structure/QueryBuilderFetchStructurePanel.tsx +41 -175
- package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +9 -12
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +62 -28
- package/src/components/fetch-structure/QueryBuilderProjectionPanel.tsx +74 -48
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +33 -41
- package/src/components/filter/QueryBuilderFilterPanel.tsx +7 -7
- package/src/components/shared/QueryBuilderPanelIssueCountBadge.tsx +3 -1
- package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +5 -8
- package/src/stores/QueryBuilderPreviewDataHelper.ts +27 -18
- package/src/stores/QueryBuilderPropertyEditorState.ts +40 -31
- package/src/stores/QueryBuilderState.ts +26 -32
- package/src/stores/QueryBuilderStateBuilder.ts +584 -0
- package/src/stores/{QueryBuilderTestUtils.ts → QueryBuilderStateTestUtils.ts} +1 -1
- package/src/stores/QueryBuilderTypeaheadHelper.ts +23 -16
- package/src/stores/QueryBuilderValueSpecificationBuilder.ts +24 -584
- package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +248 -0
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +114 -0
- package/src/stores/explorer/QueryBuilderExplorerState.ts +73 -33
- package/src/stores/explorer/QueryBuilderPropertySearchPanelState.ts +3 -1
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +33 -2
- package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +53 -118
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +166 -26
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +131 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -19
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.ts +68 -4
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.ts +2 -2
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionState.ts +172 -67
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.ts +426 -0
- package/src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +266 -21
- package/src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts +228 -0
- package/src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.ts → QueryBuilderPostFilterStateBuilder.ts} +68 -48
- package/src/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -11
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
- package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
- package/src/stores/filter/QueryBuilderFilterStateBuilder.ts +155 -0
- package/src/stores/filter/{QueryBuilderValueSpecificationBuilder.ts → QueryBuilderFilterValueSpecificationBuilder.ts} +0 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperatorHelper.ts +5 -5
- package/tsconfig.json +10 -5
- package/tsconfig.package.json +1 -1
- package/lib/stores/QueryBuilderTestUtils.d.ts.map +0 -1
- package/lib/stores/QueryBuilderTestUtils.js.map +0 -1
- package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts +0 -56
- package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts.map +0 -1
- package/lib/stores/QueryBuilderValueSpecificationProcessor.js +0 -548
- package/lib/stores/QueryBuilderValueSpecificationProcessor.js.map +0 -1
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.d.ts.map +0 -1
- package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.js.map +0 -1
- package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.d.ts.map +0 -1
- package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.js.map +0 -1
- package/src/stores/QueryBuilderValueSpecificationProcessor.ts +0 -1254
@@ -32,6 +32,8 @@ import {
|
|
32
32
|
DragPreviewLayer,
|
33
33
|
PanelEntryDropZonePlaceholder,
|
34
34
|
useDragPreviewLayer,
|
35
|
+
OptionsIcon,
|
36
|
+
PlusIcon,
|
35
37
|
} from '@finos/legend-art';
|
36
38
|
import {
|
37
39
|
type QueryBuilderExplorerTreeDragSource,
|
@@ -48,7 +50,6 @@ import {
|
|
48
50
|
QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE,
|
49
51
|
} from '../../stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js';
|
50
52
|
import { QueryBuilderPropertyExpressionBadge } from '../QueryBuilderPropertyExpressionEditor.js';
|
51
|
-
import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
|
52
53
|
import { QueryResultModifierModal } from './QueryBuilderResultModifierPanel.js';
|
53
54
|
import { QUERY_BUILDER_TEST_ID } from '../QueryBuilder_TestID.js';
|
54
55
|
import { QueryBuilderAggregateColumnState } from '../../stores/fetch-structure/projection/aggregation/QueryBuilderAggregationState.js';
|
@@ -73,6 +74,7 @@ import { DEFAULT_LAMBDA_VARIABLE_NAME } from '../../QueryBuilder_Const.js';
|
|
73
74
|
import { QueryBuilderPostFilterTreeConditionNodeData } from '../../stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterState.js';
|
74
75
|
import { filterByType } from '@finos/legend-shared';
|
75
76
|
import type { QueryBuilderAggregateOperator } from '../../stores/fetch-structure/projection/aggregation/QueryBuilderAggregateOperator.js';
|
77
|
+
import type { QueryBuilderProjectionState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionState.js';
|
76
78
|
|
77
79
|
const QueryBuilderProjectionColumnContextMenu = observer(
|
78
80
|
forwardRef<
|
@@ -234,10 +236,7 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
234
236
|
const onContextMenuClose = (): void => setIsSelectedFromContextMenu(false);
|
235
237
|
|
236
238
|
const { projectionColumnState } = props;
|
237
|
-
const
|
238
|
-
projectionColumnState.projectionState.queryBuilderState;
|
239
|
-
const projectionState =
|
240
|
-
queryBuilderState.fetchStructureState.projectionState;
|
239
|
+
const projectionState = projectionColumnState.projectionState;
|
241
240
|
const postFilterColumnStates = Array.from(
|
242
241
|
projectionState.postFilterState.nodes.values(),
|
243
242
|
)
|
@@ -496,12 +495,18 @@ const QueryBuilderProjectionColumnEditor = observer(
|
|
496
495
|
);
|
497
496
|
|
498
497
|
export const QueryBuilderProjectionPanel = observer(
|
499
|
-
(props: {
|
498
|
+
(props: { projectionState: QueryBuilderProjectionState }) => {
|
500
499
|
const applicationStore = useApplicationStore();
|
501
|
-
const {
|
502
|
-
const projectionState =
|
503
|
-
queryBuilderState.fetchStructureState.projectionState;
|
500
|
+
const { projectionState } = props;
|
504
501
|
const projectionColumns = projectionState.columns;
|
502
|
+
|
503
|
+
// Toolbar
|
504
|
+
const openResultSetModifierEditor = (): void =>
|
505
|
+
projectionState.resultSetModifierState.setShowModal(true);
|
506
|
+
const addNewBlankDerivation = (): void =>
|
507
|
+
projectionState.addNewBlankDerivation();
|
508
|
+
|
509
|
+
// Drag and Drop
|
505
510
|
const handleDrop = useCallback(
|
506
511
|
(
|
507
512
|
item:
|
@@ -514,7 +519,7 @@ export const QueryBuilderProjectionPanel = observer(
|
|
514
519
|
const derivationProjectionColumn =
|
515
520
|
new QueryBuilderDerivationProjectionColumnState(
|
516
521
|
projectionState,
|
517
|
-
queryBuilderState.graphManagerState.graphManager.createDefaultBasicRawLambda(
|
522
|
+
projectionState.queryBuilderState.graphManagerState.graphManager.createDefaultBasicRawLambda(
|
518
523
|
{ addDummyParameter: true },
|
519
524
|
),
|
520
525
|
);
|
@@ -533,13 +538,14 @@ export const QueryBuilderProjectionPanel = observer(
|
|
533
538
|
new QueryBuilderSimpleProjectionColumnState(
|
534
539
|
projectionState,
|
535
540
|
buildPropertyExpressionFromExplorerTreeNodeData(
|
536
|
-
queryBuilderState.explorerState
|
541
|
+
projectionState.queryBuilderState.explorerState
|
542
|
+
.nonNullableTreeData,
|
537
543
|
(item as QueryBuilderExplorerTreeDragSource).node,
|
538
544
|
projectionState.queryBuilderState.graphManagerState.graph,
|
539
|
-
queryBuilderState.explorerState
|
540
|
-
.allMappedPropertyNodes,
|
545
|
+
projectionState.queryBuilderState.explorerState
|
546
|
+
.propertySearchState.allMappedPropertyNodes,
|
541
547
|
),
|
542
|
-
queryBuilderState.explorerState.humanizePropertyName,
|
548
|
+
projectionState.queryBuilderState.explorerState.humanizePropertyName,
|
543
549
|
),
|
544
550
|
);
|
545
551
|
break;
|
@@ -547,7 +553,7 @@ export const QueryBuilderProjectionPanel = observer(
|
|
547
553
|
break;
|
548
554
|
}
|
549
555
|
},
|
550
|
-
[
|
556
|
+
[projectionState],
|
551
557
|
);
|
552
558
|
|
553
559
|
const [{ isDragOver }, dropTargetConnector] = useDrop<
|
@@ -582,41 +588,61 @@ export const QueryBuilderProjectionPanel = observer(
|
|
582
588
|
|
583
589
|
return (
|
584
590
|
<div className="panel__content">
|
585
|
-
<
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
591
|
+
<div className="query-builder__projection__toolbar">
|
592
|
+
<button
|
593
|
+
className="panel__header__action"
|
594
|
+
onClick={openResultSetModifierEditor}
|
595
|
+
tabIndex={-1}
|
596
|
+
title="Configure result set modifiers..."
|
597
|
+
>
|
598
|
+
<OptionsIcon className="query-builder__icon query-builder__icon__query-option" />
|
599
|
+
</button>
|
600
|
+
<button
|
601
|
+
className="panel__header__action"
|
602
|
+
onClick={addNewBlankDerivation}
|
603
|
+
tabIndex={-1}
|
604
|
+
title="Add a new derivation"
|
605
|
+
>
|
606
|
+
<PlusIcon />
|
607
|
+
</button>
|
608
|
+
</div>
|
609
|
+
<div className="query-builder__projection__content">
|
610
|
+
<PanelDropZone
|
611
|
+
isDragOver={isDragOver}
|
612
|
+
dropTargetConnector={dropTargetConnector}
|
613
|
+
>
|
614
|
+
{!projectionColumns.length && (
|
615
|
+
<BlankPanelPlaceholder
|
616
|
+
text="Add a projection column"
|
617
|
+
tooltipText="Drag and drop properties here"
|
609
618
|
/>
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
619
|
+
)}
|
620
|
+
{Boolean(projectionColumns.length) && (
|
621
|
+
<div
|
622
|
+
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_PROJECTION}
|
623
|
+
className="query-builder__projection__columns"
|
624
|
+
>
|
625
|
+
<DragPreviewLayer
|
626
|
+
labelGetter={(
|
627
|
+
item: QueryBuilderProjectionColumnDragSource,
|
628
|
+
): string =>
|
629
|
+
item.columnState.columnName === ''
|
630
|
+
? '(unknown)'
|
631
|
+
: item.columnState.columnName
|
632
|
+
}
|
633
|
+
types={[QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE]}
|
614
634
|
/>
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
635
|
+
{projectionColumns.map((projectionColumnState) => (
|
636
|
+
<QueryBuilderProjectionColumnEditor
|
637
|
+
key={projectionColumnState.uuid}
|
638
|
+
projectionColumnState={projectionColumnState}
|
639
|
+
/>
|
640
|
+
))}
|
641
|
+
</div>
|
642
|
+
)}
|
643
|
+
<QueryResultModifierModal projectionState={projectionState} />
|
644
|
+
</PanelDropZone>
|
645
|
+
</div>
|
620
646
|
</div>
|
621
647
|
);
|
622
648
|
},
|
@@ -29,27 +29,23 @@ import {
|
|
29
29
|
COLUMN_SORT_TYPE,
|
30
30
|
SortColumnState,
|
31
31
|
} from '../../stores/fetch-structure/projection/QueryResultSetModifierState.js';
|
32
|
-
import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
|
33
32
|
import type { QueryBuilderProjectionColumnState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js';
|
34
33
|
import { guaranteeNonNullable } from '@finos/legend-shared';
|
35
34
|
import { useApplicationStore } from '@finos/legend-application';
|
35
|
+
import type { QueryBuilderProjectionState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionState.js';
|
36
36
|
|
37
37
|
const ColumnSortEditor = observer(
|
38
38
|
(props: {
|
39
|
-
|
40
|
-
|
39
|
+
projectionState: QueryBuilderProjectionState;
|
40
|
+
sortState: SortColumnState;
|
41
41
|
}) => {
|
42
|
-
const {
|
42
|
+
const { projectionState, sortState } = props;
|
43
43
|
const applicationStore = useApplicationStore();
|
44
|
-
const
|
45
|
-
queryBuilderState.fetchStructureState.projectionState;
|
46
|
-
const sortColumns =
|
47
|
-
queryBuilderState.fetchStructureState.projectionState
|
48
|
-
.resultSetModifierState.sortColumns;
|
44
|
+
const sortColumns = projectionState.resultSetModifierState.sortColumns;
|
49
45
|
const projectionOptions = projectionState.columns
|
50
46
|
.filter(
|
51
47
|
(projectionCol) =>
|
52
|
-
projectionCol ===
|
48
|
+
projectionCol === sortState.columnState ||
|
53
49
|
!sortColumns.some((sortCol) => sortCol.columnState === projectionCol),
|
54
50
|
)
|
55
51
|
.map((projectionCol) => ({
|
@@ -57,28 +53,26 @@ const ColumnSortEditor = observer(
|
|
57
53
|
value: projectionCol,
|
58
54
|
}));
|
59
55
|
const value = {
|
60
|
-
label:
|
61
|
-
value:
|
56
|
+
label: sortState.columnState.columnName,
|
57
|
+
value: sortState,
|
62
58
|
};
|
63
59
|
const onChange = (
|
64
60
|
val: { label: string; value: QueryBuilderProjectionColumnState } | null,
|
65
61
|
): void => {
|
66
62
|
if (val !== null) {
|
67
|
-
|
63
|
+
sortState.setColumnState(val.value);
|
68
64
|
}
|
69
65
|
};
|
70
|
-
const sortType =
|
66
|
+
const sortType = sortState.sortType;
|
71
67
|
const toggleSortType = (): void => {
|
72
|
-
|
68
|
+
sortState.setSortType(
|
73
69
|
sortType === COLUMN_SORT_TYPE.ASC
|
74
70
|
? COLUMN_SORT_TYPE.DESC
|
75
71
|
: COLUMN_SORT_TYPE.ASC,
|
76
72
|
);
|
77
73
|
};
|
78
74
|
const deleteColumnSort = (): void =>
|
79
|
-
|
80
|
-
columnSort,
|
81
|
-
);
|
75
|
+
projectionState.resultSetModifierState.deleteSortColumn(sortState);
|
82
76
|
|
83
77
|
return (
|
84
78
|
<div className="panel__content__form__section__list__item query-builder__projection__options__sort">
|
@@ -115,14 +109,10 @@ const ColumnSortEditor = observer(
|
|
115
109
|
);
|
116
110
|
|
117
111
|
const ColumnsSortEditor = observer(
|
118
|
-
(props: {
|
119
|
-
const {
|
120
|
-
const
|
121
|
-
|
122
|
-
.resultSetModifierState;
|
123
|
-
const sortColumns = resultModifier.sortColumns;
|
124
|
-
const projectionState =
|
125
|
-
queryBuilderState.fetchStructureState.projectionState;
|
112
|
+
(props: { projectionState: QueryBuilderProjectionState }) => {
|
113
|
+
const { projectionState } = props;
|
114
|
+
const resultSetModifierState = projectionState.resultSetModifierState;
|
115
|
+
const sortColumns = resultSetModifierState.sortColumns;
|
126
116
|
const projectionOptions = projectionState.columns
|
127
117
|
.filter(
|
128
118
|
(projectionCol) =>
|
@@ -137,9 +127,10 @@ const ColumnsSortEditor = observer(
|
|
137
127
|
const sortColumn = new SortColumnState(
|
138
128
|
guaranteeNonNullable(projectionOptions[0]).value,
|
139
129
|
);
|
140
|
-
|
130
|
+
resultSetModifierState.addSortColumn(sortColumn);
|
141
131
|
}
|
142
132
|
};
|
133
|
+
|
143
134
|
return (
|
144
135
|
<div className="panel__content__form__section">
|
145
136
|
<div className="panel__content__form__section__header__label">
|
@@ -155,8 +146,8 @@ const ColumnsSortEditor = observer(
|
|
155
146
|
{sortColumns.map((value) => (
|
156
147
|
<ColumnSortEditor
|
157
148
|
key={value.columnState.uuid}
|
158
|
-
|
159
|
-
|
149
|
+
projectionState={projectionState}
|
150
|
+
sortState={value}
|
160
151
|
/>
|
161
152
|
))}
|
162
153
|
</div>
|
@@ -177,22 +168,23 @@ const ColumnsSortEditor = observer(
|
|
177
168
|
);
|
178
169
|
|
179
170
|
export const QueryResultModifierModal = observer(
|
180
|
-
(props: {
|
181
|
-
const {
|
182
|
-
const
|
183
|
-
|
184
|
-
|
185
|
-
const
|
186
|
-
const
|
187
|
-
const close = (): void => resultModifier.setShowModal(false);
|
188
|
-
const toggleDistinct = (): void => resultModifier.toggleDistinct();
|
171
|
+
(props: { projectionState: QueryBuilderProjectionState }) => {
|
172
|
+
const { projectionState: projectionState } = props;
|
173
|
+
const resultSetModifierState = projectionState.resultSetModifierState;
|
174
|
+
const limitResults = resultSetModifierState.limit;
|
175
|
+
const distinct = resultSetModifierState.distinct;
|
176
|
+
const close = (): void => resultSetModifierState.setShowModal(false);
|
177
|
+
const toggleDistinct = (): void => resultSetModifierState.toggleDistinct();
|
189
178
|
const changeValue: React.ChangeEventHandler<HTMLInputElement> = (event) => {
|
190
179
|
const val = event.target.value;
|
191
|
-
|
180
|
+
resultSetModifierState.setLimit(
|
181
|
+
val === '' ? undefined : parseInt(val, 10),
|
182
|
+
);
|
192
183
|
};
|
184
|
+
|
193
185
|
return (
|
194
186
|
<Dialog
|
195
|
-
open={Boolean(
|
187
|
+
open={Boolean(resultSetModifierState.showModal)}
|
196
188
|
onClose={close}
|
197
189
|
classes={{
|
198
190
|
root: 'editor-modal__root-container',
|
@@ -206,7 +198,7 @@ export const QueryResultModifierModal = observer(
|
|
206
198
|
</div>
|
207
199
|
<div className="modal__body query-builder__projection__modal__body">
|
208
200
|
<div className="query-builder__projection__options">
|
209
|
-
<ColumnsSortEditor
|
201
|
+
<ColumnsSortEditor projectionState={projectionState} />
|
210
202
|
<div className="panel__content__form__section">
|
211
203
|
<div className="panel__content__form__section__header__label">
|
212
204
|
Eliminate Duplicate Rows
|
@@ -153,7 +153,7 @@ const QueryBuilderFilterConditionEditor = observer(
|
|
153
153
|
propertyNode,
|
154
154
|
graph,
|
155
155
|
node.condition.filterState.queryBuilderState.explorerState
|
156
|
-
.
|
156
|
+
.propertySearchState.allMappedPropertyNodes,
|
157
157
|
),
|
158
158
|
);
|
159
159
|
// Drag and Drop on filter condition value
|
@@ -405,8 +405,8 @@ const QueryBuilderFilterTreeNodeContainer = observer(
|
|
405
405
|
filterState.queryBuilderState.explorerState.nonNullableTreeData,
|
406
406
|
dropNode,
|
407
407
|
filterState.queryBuilderState.graphManagerState.graph,
|
408
|
-
filterState.queryBuilderState.explorerState
|
409
|
-
.
|
408
|
+
filterState.queryBuilderState.explorerState.propertySearchState
|
409
|
+
.allMappedPropertyNodes,
|
410
410
|
),
|
411
411
|
);
|
412
412
|
} catch (error) {
|
@@ -732,8 +732,8 @@ export const QueryBuilderFilterPanel = observer(
|
|
732
732
|
filterState.queryBuilderState.explorerState.nonNullableTreeData,
|
733
733
|
(item as QueryBuilderExplorerTreeDragSource).node,
|
734
734
|
filterState.queryBuilderState.graphManagerState.graph,
|
735
|
-
filterState.queryBuilderState.explorerState
|
736
|
-
.
|
735
|
+
filterState.queryBuilderState.explorerState.propertySearchState
|
736
|
+
.allMappedPropertyNodes,
|
737
737
|
);
|
738
738
|
}
|
739
739
|
filterConditionState = new FilterConditionState(
|
@@ -788,7 +788,7 @@ export const QueryBuilderFilterPanel = observer(
|
|
788
788
|
return (
|
789
789
|
<div
|
790
790
|
data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_FILTER}
|
791
|
-
className="panel
|
791
|
+
className="panel"
|
792
792
|
>
|
793
793
|
<div className="panel__header">
|
794
794
|
<div className="panel__header__title">
|
@@ -860,7 +860,7 @@ export const QueryBuilderFilterPanel = observer(
|
|
860
860
|
</button>
|
861
861
|
</div>
|
862
862
|
</div>
|
863
|
-
<div className="panel__content
|
863
|
+
<div className="panel__content">
|
864
864
|
<PanelDropZone
|
865
865
|
isDragOver={isDragOver}
|
866
866
|
dropTargetConnector={dropTargetConnector}
|
@@ -32,7 +32,9 @@ export const QueryBuilderPanelIssueCountBadge: React.FC<{
|
|
32
32
|
.join('\n')}`}
|
33
33
|
>
|
34
34
|
<TimesCircleIcon className="query-builder-panel-issue-count-badge__icon" />
|
35
|
-
|
35
|
+
<div className="query-builder-panel-issue-count-badge__text">
|
36
|
+
{labelText}
|
37
|
+
</div>
|
36
38
|
</div>
|
37
39
|
);
|
38
40
|
};
|
@@ -70,14 +70,10 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
|
|
70
70
|
processingContext,
|
71
71
|
);
|
72
72
|
} else if (
|
73
|
-
matchFunctionName(
|
74
|
-
functionName,
|
73
|
+
matchFunctionName(functionName, [
|
75
74
|
QUERY_BUILDER_SUPPORTED_FUNCTIONS.FILTER,
|
76
|
-
) ||
|
77
|
-
matchFunctionName(
|
78
|
-
functionName,
|
79
75
|
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_FILTER,
|
80
|
-
)
|
76
|
+
])
|
81
77
|
) {
|
82
78
|
return V1_buildFilterFunctionExpression(
|
83
79
|
functionName,
|
@@ -126,8 +122,9 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
|
|
126
122
|
processingContext,
|
127
123
|
);
|
128
124
|
} else if (
|
129
|
-
|
130
|
-
|
125
|
+
matchFunctionName(
|
126
|
+
functionName,
|
127
|
+
Object.values(QUERY_BUILDER_SUPPORTED_FUNCTIONS),
|
131
128
|
)
|
132
129
|
) {
|
133
130
|
// NOTE: this is a catch-all builder that is only meant for basic function expression
|
@@ -18,7 +18,7 @@ import type {
|
|
18
18
|
RawLambda,
|
19
19
|
AbstractPropertyExpression,
|
20
20
|
} from '@finos/legend-graph';
|
21
|
-
import { guaranteeNonNullable } from '@finos/legend-shared';
|
21
|
+
import { guaranteeNonNullable, guaranteeType } from '@finos/legend-shared';
|
22
22
|
import { QueryBuilderAggregateOperator_Average } from './fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_Average.js';
|
23
23
|
import { QueryBuilderAggregateOperator_Count } from './fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_Count.js';
|
24
24
|
import { QueryBuilderAggregateOperator_DistinctCount } from './fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js';
|
@@ -34,6 +34,7 @@ import {
|
|
34
34
|
SortColumnState,
|
35
35
|
} from './fetch-structure/projection/QueryResultSetModifierState.js';
|
36
36
|
import type { QueryBuilderAggregateOperator } from './fetch-structure/projection/aggregation/QueryBuilderAggregateOperator.js';
|
37
|
+
import { QueryBuilderProjectionState } from './fetch-structure/projection/QueryBuilderProjectionState.js';
|
37
38
|
|
38
39
|
const PREVIEW_DATA_TAKE_LIMIT = 10;
|
39
40
|
const PREVIEW_DATA_NON_NUMERIC_VALUE_COLUMN_NAME = 'Value';
|
@@ -73,13 +74,13 @@ const NUMERIC_AGG_FUNC_TO_AGG_OP: [
|
|
73
74
|
],
|
74
75
|
];
|
75
76
|
|
76
|
-
const
|
77
|
-
|
77
|
+
const createSimpleProjectionColumn = (
|
78
|
+
projectionState: QueryBuilderProjectionState,
|
78
79
|
propertyExpression: AbstractPropertyExpression,
|
79
80
|
columnName: string,
|
80
81
|
): QueryBuilderSimpleProjectionColumnState => {
|
81
82
|
const col = new QueryBuilderSimpleProjectionColumnState(
|
82
|
-
|
83
|
+
projectionState,
|
83
84
|
propertyExpression,
|
84
85
|
false,
|
85
86
|
);
|
@@ -130,11 +131,14 @@ export const buildNumericPreviewDataQuery = (
|
|
130
131
|
// ]
|
131
132
|
// )
|
132
133
|
const builderState = createQueryBuilderState(queryBuilderState);
|
133
|
-
const projectionState =
|
134
|
+
const projectionState = guaranteeType(
|
135
|
+
builderState.fetchStructureState.implementation,
|
136
|
+
QueryBuilderProjectionState,
|
137
|
+
);
|
134
138
|
const aggregationState = projectionState.aggregationState;
|
135
139
|
NUMERIC_AGG_FUNC_TO_AGG_OP.forEach((val) => {
|
136
|
-
const colState =
|
137
|
-
|
140
|
+
const colState = createSimpleProjectionColumn(
|
141
|
+
projectionState,
|
138
142
|
propertyExpression,
|
139
143
|
val[0],
|
140
144
|
);
|
@@ -167,35 +171,40 @@ export const buildNonNumericPreviewDataQuery = (
|
|
167
171
|
// ]
|
168
172
|
// )->sort([desc('Count'), asc('Value')])->take(10)
|
169
173
|
const builderState = createQueryBuilderState(queryBuilderState);
|
170
|
-
const
|
171
|
-
builderState,
|
174
|
+
const projectionState = guaranteeType(
|
175
|
+
builderState.fetchStructureState.implementation,
|
176
|
+
QueryBuilderProjectionState,
|
177
|
+
);
|
178
|
+
const valueProjectionColState = createSimpleProjectionColumn(
|
179
|
+
projectionState,
|
172
180
|
propertyExpression,
|
173
181
|
PREVIEW_DATA_NON_NUMERIC_VALUE_COLUMN_NAME,
|
174
182
|
);
|
175
|
-
const valueCountProjectionState =
|
176
|
-
|
183
|
+
const valueCountProjectionState = createSimpleProjectionColumn(
|
184
|
+
projectionState,
|
177
185
|
propertyExpression,
|
178
186
|
PREVIEW_DATA_NON_NUMERIC_COUNT_COLUMN_NAME,
|
179
187
|
);
|
180
|
-
|
188
|
+
projectionState.columns = [
|
181
189
|
valueProjectionColState,
|
182
190
|
valueCountProjectionState,
|
183
191
|
];
|
184
192
|
const distinctCountOp = guaranteeNonNullable(
|
185
|
-
|
193
|
+
projectionState.aggregationState.operators.find(
|
186
194
|
(t) => t instanceof QueryBuilderAggregateOperator_Count,
|
187
195
|
),
|
188
196
|
);
|
189
|
-
|
197
|
+
projectionState.aggregationState.changeColumnAggregateOperator(
|
190
198
|
distinctCountOp,
|
191
199
|
valueCountProjectionState,
|
192
200
|
);
|
193
201
|
// result set
|
194
|
-
|
195
|
-
PREVIEW_DATA_TAKE_LIMIT;
|
202
|
+
projectionState.resultSetModifierState.limit = PREVIEW_DATA_TAKE_LIMIT;
|
196
203
|
const sortValueCount = new SortColumnState(valueCountProjectionState);
|
197
204
|
sortValueCount.sortType = COLUMN_SORT_TYPE.DESC;
|
198
|
-
|
199
|
-
|
205
|
+
projectionState.resultSetModifierState.sortColumns = [
|
206
|
+
sortValueCount,
|
207
|
+
new SortColumnState(valueProjectionColState),
|
208
|
+
];
|
200
209
|
return builderState.resultState.buildExecutionRawLambda();
|
201
210
|
};
|
@@ -312,21 +312,14 @@ export const getPropertyChainName = (
|
|
312
312
|
const propertyNameDecorator = humanizePropertyName
|
313
313
|
? prettyPropertyName
|
314
314
|
: (val: string): string => val;
|
315
|
-
const
|
316
|
-
propertyNameDecorator(propertyExpression.func.name),
|
317
|
-
];
|
315
|
+
const chunks = [propertyNameDecorator(propertyExpression.func.name)];
|
318
316
|
let currentExpression: ValueSpecification | undefined = propertyExpression;
|
319
317
|
while (currentExpression instanceof AbstractPropertyExpression) {
|
320
318
|
currentExpression = getNullableFirstElement(
|
321
319
|
currentExpression.parametersValues,
|
322
320
|
);
|
323
|
-
|
324
|
-
|
325
|
-
propertyNameDecorator(currentExpression.func.name),
|
326
|
-
);
|
327
|
-
}
|
328
|
-
// Take care of chains of subtype (a pattern that is not useful, but we want to support and rectify)
|
329
|
-
// $x.employees->subType(@Person)->subType(@Staff)
|
321
|
+
// Take care of chain of subtypes (a pattern that is not useful, but we want to support and potentially rectify)
|
322
|
+
// $x.employees->subType(@Person)->subType(@Staff).department
|
330
323
|
while (
|
331
324
|
currentExpression instanceof SimpleFunctionExpression &&
|
332
325
|
matchFunctionName(
|
@@ -334,23 +327,38 @@ export const getPropertyChainName = (
|
|
334
327
|
QUERY_BUILDER_SUPPORTED_FUNCTIONS.SUBTYPE,
|
335
328
|
)
|
336
329
|
) {
|
337
|
-
const
|
330
|
+
const subtypeChunk = `${TYPE_CAST_TOKEN}(${propertyNameDecorator(
|
338
331
|
currentExpression.parametersValues.filter(
|
339
332
|
(param) => param instanceof InstanceValue,
|
340
333
|
)[0]?.genericType?.value.rawType.name ?? '',
|
341
|
-
)})
|
342
|
-
|
343
|
-
AbstractPropertyExpression
|
344
|
-
? currentExpression.parametersValues[0]?.func.name
|
345
|
-
: '',
|
346
|
-
)}`;
|
347
|
-
propertyNameChain.unshift(propertyWithSubtype);
|
334
|
+
)})`;
|
335
|
+
chunks.unshift(subtypeChunk);
|
348
336
|
currentExpression = getNullableFirstElement(
|
349
337
|
currentExpression.parametersValues,
|
350
338
|
);
|
351
339
|
}
|
340
|
+
if (currentExpression instanceof AbstractPropertyExpression) {
|
341
|
+
chunks.unshift(propertyNameDecorator(currentExpression.func.name));
|
342
|
+
}
|
352
343
|
}
|
353
|
-
|
344
|
+
const processedChunks: string[] = [];
|
345
|
+
for (const chunk of chunks) {
|
346
|
+
if (!processedChunks.length) {
|
347
|
+
processedChunks.push(chunk);
|
348
|
+
} else {
|
349
|
+
const latestProcessedChunk = guaranteeNonNullable(
|
350
|
+
processedChunks[processedChunks.length - 1],
|
351
|
+
);
|
352
|
+
if (latestProcessedChunk.startsWith(TYPE_CAST_TOKEN)) {
|
353
|
+
processedChunks[
|
354
|
+
processedChunks.length - 1
|
355
|
+
] = `${latestProcessedChunk}${chunk}`;
|
356
|
+
} else {
|
357
|
+
processedChunks.push(chunk);
|
358
|
+
}
|
359
|
+
}
|
360
|
+
}
|
361
|
+
return processedChunks.join(humanizePropertyName ? '/' : '.');
|
354
362
|
};
|
355
363
|
|
356
364
|
export const getPropertyPath = (
|
@@ -373,16 +381,8 @@ export const generateValueSpecificationForParameter = (
|
|
373
381
|
parameter: VariableExpression,
|
374
382
|
graph: PureModel,
|
375
383
|
): ValueSpecification => {
|
376
|
-
|
377
|
-
|
378
|
-
const type = genericType.value.rawType;
|
379
|
-
// Clone the generic type reference and avoid directly using the
|
380
|
-
// reference of the parameter so when we edit the value specification
|
381
|
-
// we don't accidentally modify the type of the parameter which is constant
|
382
|
-
// See https://github.com/finos/legend-studio/issues/1099
|
383
|
-
const genericTypeExplicitReference = GenericTypeExplicitReference.create(
|
384
|
-
new GenericType(type),
|
385
|
-
);
|
384
|
+
if (parameter.genericType) {
|
385
|
+
const type = parameter.genericType.value.rawType;
|
386
386
|
if (
|
387
387
|
(
|
388
388
|
[
|
@@ -400,7 +400,16 @@ export const generateValueSpecificationForParameter = (
|
|
400
400
|
).includes(type.name)
|
401
401
|
) {
|
402
402
|
const primitiveInstanceValue = new PrimitiveInstanceValue(
|
403
|
-
|
403
|
+
GenericTypeExplicitReference.create(
|
404
|
+
new GenericType(
|
405
|
+
// NOTE: since the default generated value for type Date is a StrictDate
|
406
|
+
// we need to adjust the generic type accordingly
|
407
|
+
// See https://github.com/finos/legend-studio/issues/1391
|
408
|
+
type.name === PRIMITIVE_TYPE.DATE
|
409
|
+
? graph.getType(PRIMITIVE_TYPE.STRICTDATE)
|
410
|
+
: type,
|
411
|
+
),
|
412
|
+
),
|
404
413
|
parameter.multiplicity,
|
405
414
|
);
|
406
415
|
if (type.name !== PRIMITIVE_TYPE.LATESTDATE) {
|
@@ -411,7 +420,7 @@ export const generateValueSpecificationForParameter = (
|
|
411
420
|
return primitiveInstanceValue;
|
412
421
|
} else if (type instanceof Enumeration) {
|
413
422
|
const enumValueInstanceValue = new EnumValueInstanceValue(
|
414
|
-
|
423
|
+
GenericTypeExplicitReference.create(new GenericType(type)),
|
415
424
|
parameter.multiplicity,
|
416
425
|
);
|
417
426
|
if (type.values.length) {
|