@finos/legend-query-builder 4.17.99 → 4.18.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 +2 -1
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +9 -8
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +48 -5
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts +24 -0
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.d.ts.map +1 -0
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js +202 -0
- package/lib/components/explorer/QueryBuilderRelationExplorerPanel.js.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +3 -3
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +25 -6
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js +1 -1
- package/lib/components/result/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSAsyncCellSelectionStats.d.ts +42 -0
- package/lib/components/result/tds/QueryBuilderTDSAsyncCellSelectionStats.d.ts.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSAsyncCellSelectionStats.js +212 -0
- package/lib/components/result/tds/QueryBuilderTDSAsyncCellSelectionStats.js.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStats.d.ts +66 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStats.d.ts.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStats.js +265 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStats.js.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStatsBar.d.ts +28 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStatsBar.d.ts.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStatsBar.js +148 -0
- package/lib/components/result/tds/QueryBuilderTDSCellSelectionStatsBar.js.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSGridKeyboardShortcuts.d.ts +19 -0
- package/lib/components/result/tds/QueryBuilderTDSGridKeyboardShortcuts.d.ts.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSGridKeyboardShortcuts.js +196 -0
- package/lib/components/result/tds/QueryBuilderTDSGridKeyboardShortcuts.js.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts +5 -0
- package/lib/components/result/tds/QueryBuilderTDSGridResult.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js +64 -87
- package/lib/components/result/tds/QueryBuilderTDSGridResult.js.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSGridShared.d.ts +26 -0
- package/lib/components/result/tds/QueryBuilderTDSGridShared.d.ts.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSGridShared.js +51 -0
- package/lib/components/result/tds/QueryBuilderTDSGridShared.js.map +1 -0
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.d.ts +5 -0
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.d.ts.map +1 -1
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js +169 -60
- package/lib/components/result/tds/QueryBuilderTDSSimpleGridResult.js.map +1 -1
- package/lib/components/workflows/AccessorQueryBuilder.d.ts +18 -0
- package/lib/components/workflows/AccessorQueryBuilder.d.ts.map +1 -0
- package/lib/components/workflows/AccessorQueryBuilder.js +87 -0
- package/lib/components/workflows/AccessorQueryBuilder.js.map +1 -0
- package/lib/components/workflows/ClassQueryBuilder.js +5 -5
- package/lib/components/workflows/ClassQueryBuilder.js.map +1 -1
- package/lib/data-access-overview.css +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.d.ts +4 -0
- package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.js +4 -0
- package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +7 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +2 -0
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +93 -3
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/QueryBuilderConfig.d.ts +3 -0
- package/lib/stores/QueryBuilderConfig.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConfig.js +3 -0
- package/lib/stores/QueryBuilderConfig.js.map +1 -1
- package/lib/stores/QueryBuilderResultState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderResultState.js +13 -3
- package/lib/stores/QueryBuilderResultState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +14 -4
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +41 -13
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +2 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +51 -20
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderStateHashUtils.d.ts +1 -0
- package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateHashUtils.js +1 -0
- package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.js +2 -2
- package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js +54 -45
- package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js +1 -1
- package/lib/stores/__test-utils__/QueryBuilderStateTestUtils.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -2
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +12 -2
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +2 -2
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +2 -2
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +4 -3
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts +2 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js +19 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +7 -4
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +59 -12
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +16 -3
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +102 -24
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts +2 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +16 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +3 -3
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js +11 -2
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js +16 -12
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts +4 -3
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js +19 -9
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js +57 -5
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts +4 -3
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js +85 -6
- package/lib/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js +4 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.js.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts +1 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js +3 -0
- package/lib/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js +4 -4
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
- package/lib/stores/workflows/MappingQueryBuilderState.js +2 -2
- package/lib/stores/workflows/MappingQueryBuilderState.js.map +1 -1
- package/lib/stores/workflows/ServiceQueryBuilderState.js +2 -2
- package/lib/stores/workflows/ServiceQueryBuilderState.js.map +1 -1
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts +18 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.d.ts.map +1 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js +32 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderHelper.js.map +1 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts +57 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.d.ts.map +1 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js +125 -0
- package/lib/stores/workflows/accessor/AccessorQueryBuilderState.js.map +1 -0
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js +4 -4
- package/lib/stores/workflows/dataProduct/DataProductQueryBuilderState.js.map +1 -1
- package/package.json +7 -7
- package/src/components/QueryBuilder.tsx +2 -1
- package/src/components/QueryBuilderSideBar.tsx +12 -8
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +77 -14
- package/src/components/explorer/QueryBuilderRelationExplorerPanel.tsx +536 -0
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -0
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +3 -3
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +62 -4
- package/src/components/result/QueryBuilderResultPanel.tsx +6 -2
- package/src/components/result/tds/QueryBuilderTDSAsyncCellSelectionStats.ts +254 -0
- package/src/components/result/tds/QueryBuilderTDSCellSelectionStats.ts +397 -0
- package/src/components/result/tds/QueryBuilderTDSCellSelectionStatsBar.tsx +439 -0
- package/src/components/result/tds/QueryBuilderTDSGridKeyboardShortcuts.ts +270 -0
- package/src/components/result/tds/QueryBuilderTDSGridResult.tsx +107 -112
- package/src/components/result/tds/QueryBuilderTDSGridShared.ts +76 -0
- package/src/components/result/tds/QueryBuilderTDSSimpleGridResult.tsx +272 -99
- package/src/components/workflows/AccessorQueryBuilder.tsx +211 -0
- package/src/components/workflows/ClassQueryBuilder.tsx +5 -5
- package/src/graph/QueryBuilderMetaModelConst.ts +5 -0
- package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +28 -0
- package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +223 -4
- package/src/index.ts +2 -0
- package/src/stores/QueryBuilderConfig.ts +3 -0
- package/src/stores/QueryBuilderResultState.ts +22 -9
- package/src/stores/QueryBuilderState.ts +47 -12
- package/src/stores/QueryBuilderStateBuilder.ts +107 -43
- package/src/stores/QueryBuilderStateHashUtils.ts +1 -0
- package/src/stores/QueryBuilderTypeaheadHelper.ts +2 -2
- package/src/stores/QueryBuilderValueSpecificationBuilder.ts +72 -59
- package/src/stores/__test-utils__/QueryBuilderStateTestUtils.ts +1 -1
- package/src/stores/explorer/QueryBuilderExplorerState.ts +26 -2
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +1 -2
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +4 -3
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +1 -1
- package/src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts +42 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +135 -19
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +197 -38
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +30 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +3 -3
- package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts +21 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderTypedProjectionStateBuilder.ts +25 -16
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowState.ts +23 -9
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowStateBuilder.ts +146 -4
- package/src/stores/fetch-structure/tds/window/QueryBuilderWindowValueSpecificationBuilder.ts +145 -10
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator.ts +2 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Average.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Count.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Max.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Min.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowOperator_Sum.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_AverageRank.ts +5 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_DenseRank.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_Rank.ts +4 -0
- package/src/stores/fetch-structure/tds/window/operators/QueryBuilderTDS_WindowRankOperator_RowNumber.ts +4 -0
- package/src/stores/milestoning/QueryBuilderMilestoningState.ts +4 -4
- package/src/stores/workflows/MappingQueryBuilderState.ts +2 -2
- package/src/stores/workflows/ServiceQueryBuilderState.ts +2 -2
- package/src/stores/workflows/accessor/AccessorQueryBuilderHelper.ts +51 -0
- package/src/stores/workflows/accessor/AccessorQueryBuilderState.ts +195 -0
- package/src/stores/workflows/dataProduct/DataProductQueryBuilderState.ts +4 -4
- package/tsconfig.json +9 -0
|
@@ -37,13 +37,13 @@ import {
|
|
|
37
37
|
hashArray,
|
|
38
38
|
UnsupportedOperationError,
|
|
39
39
|
ContentType,
|
|
40
|
+
type PlainObject,
|
|
40
41
|
} from '@finos/legend-shared';
|
|
41
42
|
import type { QueryBuilderState } from '../../QueryBuilderState.js';
|
|
42
43
|
import {
|
|
43
44
|
type CompilationError,
|
|
44
45
|
type LambdaFunction,
|
|
45
46
|
type ValueSpecification,
|
|
46
|
-
type VariableExpression,
|
|
47
47
|
type EngineError,
|
|
48
48
|
GRAPH_MANAGER_EVENT,
|
|
49
49
|
extractSourceInformationCoordinates,
|
|
@@ -51,11 +51,16 @@ import {
|
|
|
51
51
|
RawLambda,
|
|
52
52
|
isStubbed_RawLambda,
|
|
53
53
|
Class,
|
|
54
|
+
Accessor,
|
|
54
55
|
AbstractPropertyExpression,
|
|
55
56
|
matchFunctionName,
|
|
56
57
|
SimpleFunctionExpression,
|
|
57
58
|
getAllSuperclasses,
|
|
58
59
|
EXECUTION_SERIALIZATION_FORMAT,
|
|
60
|
+
FunctionExpression,
|
|
61
|
+
VariableExpression,
|
|
62
|
+
Multiplicity,
|
|
63
|
+
type RelationTypeMetadata,
|
|
59
64
|
} from '@finos/legend-graph';
|
|
60
65
|
import {
|
|
61
66
|
DEFAULT_LAMBDA_VARIABLE_NAME,
|
|
@@ -78,8 +83,11 @@ import type { QueryBuilderAggregateOperator } from './aggregation/QueryBuilderAg
|
|
|
78
83
|
import { getQueryBuilderCoreAggregrationOperators } from './aggregation/QueryBuilderAggregateOperatorLoader.js';
|
|
79
84
|
import {
|
|
80
85
|
QueryBuilderDerivationProjectionColumnState,
|
|
86
|
+
QueryBuilderRelationColumnProjectionColumnState,
|
|
81
87
|
QueryBuilderSimpleProjectionColumnState,
|
|
82
88
|
type QueryBuilderProjectionColumnState,
|
|
89
|
+
_buildAccessorProjectRawLambda,
|
|
90
|
+
_decorateRawLambdaWithParametersAndLetExpressions,
|
|
83
91
|
} from './projection/QueryBuilderProjectionColumnState.js';
|
|
84
92
|
import type { QueryBuilderFetchStructureState } from '../QueryBuilderFetchStructureState.js';
|
|
85
93
|
import {
|
|
@@ -284,6 +292,10 @@ export class QueryBuilderTDSState
|
|
|
284
292
|
}
|
|
285
293
|
|
|
286
294
|
nodeIDs = nodeIDs.concat(ids);
|
|
295
|
+
} else if (
|
|
296
|
+
column instanceof QueryBuilderRelationColumnProjectionColumnState
|
|
297
|
+
) {
|
|
298
|
+
nodeIDs.push(column.column.name);
|
|
287
299
|
}
|
|
288
300
|
});
|
|
289
301
|
|
|
@@ -447,7 +459,7 @@ export class QueryBuilderTDSState
|
|
|
447
459
|
);
|
|
448
460
|
}
|
|
449
461
|
|
|
450
|
-
onClassChange(
|
|
462
|
+
onClassChange(): void {
|
|
451
463
|
return;
|
|
452
464
|
}
|
|
453
465
|
|
|
@@ -550,6 +562,55 @@ export class QueryBuilderTDSState
|
|
|
550
562
|
).catch(this.queryBuilderState.applicationStore.alertUnhandledError);
|
|
551
563
|
}
|
|
552
564
|
|
|
565
|
+
transformRelationColumnProjectionToDerivation(
|
|
566
|
+
relationColumnProjectionColumnState: QueryBuilderRelationColumnProjectionColumnState,
|
|
567
|
+
): void {
|
|
568
|
+
// setup new derivation column state
|
|
569
|
+
const column = relationColumnProjectionColumnState.column;
|
|
570
|
+
const funcExpression = new FunctionExpression(column.name);
|
|
571
|
+
funcExpression.func = column;
|
|
572
|
+
funcExpression.parametersValues = [
|
|
573
|
+
new VariableExpression(
|
|
574
|
+
relationColumnProjectionColumnState.lambdaParameterName,
|
|
575
|
+
Multiplicity.ONE,
|
|
576
|
+
undefined,
|
|
577
|
+
),
|
|
578
|
+
];
|
|
579
|
+
const columnColumnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
580
|
+
relationColumnProjectionColumnState.lambdaParameterName,
|
|
581
|
+
[funcExpression],
|
|
582
|
+
this.queryBuilderState.graphManagerState.graph,
|
|
583
|
+
);
|
|
584
|
+
const derivationColumnState =
|
|
585
|
+
new QueryBuilderDerivationProjectionColumnState(
|
|
586
|
+
this,
|
|
587
|
+
guaranteeType(
|
|
588
|
+
this.queryBuilderState.graphManagerState.graphManager.transformValueSpecToRawValueSpec(
|
|
589
|
+
columnColumnLambda,
|
|
590
|
+
this.queryBuilderState.graphManagerState.graph,
|
|
591
|
+
),
|
|
592
|
+
RawLambda,
|
|
593
|
+
),
|
|
594
|
+
);
|
|
595
|
+
derivationColumnState.setColumnName(
|
|
596
|
+
relationColumnProjectionColumnState.columnName,
|
|
597
|
+
);
|
|
598
|
+
|
|
599
|
+
this.replaceColumn(
|
|
600
|
+
relationColumnProjectionColumnState,
|
|
601
|
+
derivationColumnState,
|
|
602
|
+
);
|
|
603
|
+
|
|
604
|
+
// convert to grammar for display
|
|
605
|
+
flowResult(
|
|
606
|
+
derivationColumnState.derivationLambdaEditorState.convertLambdaObjectToGrammarString(
|
|
607
|
+
{
|
|
608
|
+
pretty: false,
|
|
609
|
+
},
|
|
610
|
+
),
|
|
611
|
+
).catch(this.queryBuilderState.applicationStore.alertUnhandledError);
|
|
612
|
+
}
|
|
613
|
+
|
|
553
614
|
replaceColumn(
|
|
554
615
|
oldVal: QueryBuilderProjectionColumnState,
|
|
555
616
|
newVal: QueryBuilderProjectionColumnState,
|
|
@@ -843,6 +904,25 @@ export class QueryBuilderTDSState
|
|
|
843
904
|
);
|
|
844
905
|
}
|
|
845
906
|
|
|
907
|
+
getParameters(): PlainObject[] {
|
|
908
|
+
return this.queryBuilderState.parametersState.parameterStates.map(
|
|
909
|
+
(_param) =>
|
|
910
|
+
this.queryBuilderState.graphManagerState.graphManager.serializeValueSpecification(
|
|
911
|
+
_param.parameter,
|
|
912
|
+
),
|
|
913
|
+
);
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
getLetExpressions(): PlainObject[] {
|
|
917
|
+
return this.queryBuilderState.constantState.constants
|
|
918
|
+
.map((_const) => _const.buildLetExpression())
|
|
919
|
+
.map((expres) =>
|
|
920
|
+
this.queryBuilderState.graphManagerState.graphManager.serializeValueSpecification(
|
|
921
|
+
expres,
|
|
922
|
+
),
|
|
923
|
+
);
|
|
924
|
+
}
|
|
925
|
+
|
|
846
926
|
get hashCode(): string {
|
|
847
927
|
return hashArray([
|
|
848
928
|
QUERY_BUILDER_STATE_HASH_STRUCTURE.PROJECTION_STATE,
|
|
@@ -855,28 +935,64 @@ export class QueryBuilderTDSState
|
|
|
855
935
|
|
|
856
936
|
*fetchDerivedReturnTypes(): GeneratorFn<void> {
|
|
857
937
|
try {
|
|
858
|
-
const input = new Map<string, RawLambda>();
|
|
859
938
|
const graph = this.queryBuilderState.graphManagerState.graph;
|
|
860
939
|
const derivedCols = this.projectionColumns.filter(
|
|
861
940
|
filterByType(QueryBuilderDerivationProjectionColumnState),
|
|
862
941
|
);
|
|
863
|
-
derivedCols.
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
const
|
|
867
|
-
|
|
868
|
-
|
|
942
|
+
if (derivedCols.length === 0) {
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
945
|
+
const sourceElement = this.queryBuilderState.sourceElement;
|
|
946
|
+
if (sourceElement instanceof Class) {
|
|
947
|
+
const input = new Map<string, RawLambda>();
|
|
948
|
+
derivedCols.forEach((col) =>
|
|
949
|
+
input.set(col.columnName, col.getIsolatedClassRawLambda()),
|
|
950
|
+
);
|
|
951
|
+
const result =
|
|
952
|
+
(yield this.queryBuilderState.graphManagerState.graphManager.getLambdasReturnType(
|
|
953
|
+
input,
|
|
954
|
+
graph,
|
|
955
|
+
)) as {
|
|
956
|
+
results: Map<string, string>;
|
|
957
|
+
errors: Map<string, EngineError>;
|
|
958
|
+
};
|
|
959
|
+
Array.from(result.results.entries()).forEach((res) => {
|
|
960
|
+
const col = derivedCols.find((d) => d.columnName === res[0]);
|
|
961
|
+
if (col) {
|
|
962
|
+
col.setLambdaReturnType(res[1]);
|
|
963
|
+
}
|
|
964
|
+
});
|
|
965
|
+
} else if (sourceElement instanceof Accessor) {
|
|
966
|
+
const columnsMap = new Map<string, RawLambda>();
|
|
967
|
+
derivedCols.forEach((col) =>
|
|
968
|
+
columnsMap.set(col.columnName, col.lambda),
|
|
969
|
+
);
|
|
970
|
+
const isolatedLambda = _buildAccessorProjectRawLambda(
|
|
869
971
|
graph,
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
972
|
+
this.queryBuilderState.graphManagerState,
|
|
973
|
+
sourceElement,
|
|
974
|
+
columnsMap,
|
|
975
|
+
);
|
|
976
|
+
const enrichedLambda =
|
|
977
|
+
_decorateRawLambdaWithParametersAndLetExpressions(
|
|
978
|
+
isolatedLambda,
|
|
979
|
+
this.getParameters(),
|
|
980
|
+
this.getLetExpressions(),
|
|
981
|
+
);
|
|
982
|
+
const relationTypeMetadata =
|
|
983
|
+
(yield this.queryBuilderState.graphManagerState.graphManager.getLambdaRelationType(
|
|
984
|
+
enrichedLambda,
|
|
985
|
+
graph,
|
|
986
|
+
)) as RelationTypeMetadata;
|
|
987
|
+
derivedCols.forEach((col) => {
|
|
988
|
+
const columnMeta = relationTypeMetadata.columns.find(
|
|
989
|
+
(c) => c.name === col.columnName,
|
|
990
|
+
);
|
|
991
|
+
if (columnMeta) {
|
|
992
|
+
col.setLambdaReturnType(columnMeta.type);
|
|
993
|
+
}
|
|
994
|
+
});
|
|
995
|
+
}
|
|
880
996
|
} catch (error) {
|
|
881
997
|
assertErrorThrown(error);
|
|
882
998
|
this.queryBuilderState.applicationStore.logService.info(
|
|
@@ -21,17 +21,21 @@ import {
|
|
|
21
21
|
flow,
|
|
22
22
|
computed,
|
|
23
23
|
flowResult,
|
|
24
|
+
override,
|
|
24
25
|
} from 'mobx';
|
|
25
26
|
import {
|
|
26
27
|
type GeneratorFn,
|
|
27
28
|
LogEvent,
|
|
28
29
|
assertErrorThrown,
|
|
29
30
|
guaranteeNonNullable,
|
|
31
|
+
guaranteeType,
|
|
30
32
|
assertTrue,
|
|
31
33
|
assertNonEmptyString,
|
|
32
34
|
type Hashable,
|
|
33
35
|
hashArray,
|
|
34
36
|
ActionState,
|
|
37
|
+
prettyCONSTName,
|
|
38
|
+
type PlainObject,
|
|
35
39
|
} from '@finos/legend-shared';
|
|
36
40
|
import {
|
|
37
41
|
type QueryBuilderExplorerTreePropertyNodeData,
|
|
@@ -45,7 +49,10 @@ import type { QueryBuilderState } from '../../../QueryBuilderState.js';
|
|
|
45
49
|
import {
|
|
46
50
|
type AbstractPropertyExpression,
|
|
47
51
|
type Type,
|
|
52
|
+
type RelationColumn,
|
|
48
53
|
type VariableExpression,
|
|
54
|
+
type RelationTypeMetadata,
|
|
55
|
+
type PureModel,
|
|
49
56
|
PackageableElementExplicitReference,
|
|
50
57
|
GRAPH_MANAGER_EVENT,
|
|
51
58
|
buildSourceInformationSourceId,
|
|
@@ -56,6 +63,23 @@ import {
|
|
|
56
63
|
stub_RawLambda,
|
|
57
64
|
Multiplicity,
|
|
58
65
|
PrimitiveType,
|
|
66
|
+
Accessor,
|
|
67
|
+
Class,
|
|
68
|
+
LambdaFunction,
|
|
69
|
+
FunctionType,
|
|
70
|
+
CORE_PURE_PATH,
|
|
71
|
+
AccessorInstanceValue,
|
|
72
|
+
SimpleFunctionExpression,
|
|
73
|
+
ColSpec,
|
|
74
|
+
extractElementNameFromPath,
|
|
75
|
+
ColSpecArrayInstance,
|
|
76
|
+
ColSpecArray,
|
|
77
|
+
INTERNAL__UnknownValueSpecification,
|
|
78
|
+
V1_serializeRawValueSpecification,
|
|
79
|
+
V1_transformRawLambda,
|
|
80
|
+
V1_GraphTransformerContextBuilder,
|
|
81
|
+
buildRawLambdaFromLambdaFunction,
|
|
82
|
+
type GraphManagerState,
|
|
59
83
|
} from '@finos/legend-graph';
|
|
60
84
|
import { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState.js';
|
|
61
85
|
import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
@@ -66,6 +90,74 @@ import {
|
|
|
66
90
|
import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from '../../../QueryBuilderStateHashUtils.js';
|
|
67
91
|
import { LambdaEditorState } from '../../../shared/LambdaEditorState.js';
|
|
68
92
|
import { isValueExpressionReferencedInValue } from '../../../QueryBuilderValueSpecificationHelper.js';
|
|
93
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
|
|
94
|
+
|
|
95
|
+
export const _buildAccessorProjectRawLambda = (
|
|
96
|
+
graph: PureModel,
|
|
97
|
+
graphManagerState: GraphManagerState,
|
|
98
|
+
accessor: Accessor,
|
|
99
|
+
columns: ReadonlyMap<string, RawLambda>,
|
|
100
|
+
): RawLambda => {
|
|
101
|
+
const lambdaFunction = new LambdaFunction(
|
|
102
|
+
new FunctionType(
|
|
103
|
+
PackageableElementExplicitReference.create(
|
|
104
|
+
graph.getType(CORE_PURE_PATH.ANY),
|
|
105
|
+
),
|
|
106
|
+
Multiplicity.ONE,
|
|
107
|
+
),
|
|
108
|
+
);
|
|
109
|
+
const accessorInstanceValue = new AccessorInstanceValue();
|
|
110
|
+
accessorInstanceValue.values = [accessor];
|
|
111
|
+
const projectFunction = new SimpleFunctionExpression(
|
|
112
|
+
extractElementNameFromPath(
|
|
113
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.RELATION_PROJECT,
|
|
114
|
+
),
|
|
115
|
+
);
|
|
116
|
+
const instanceVal = new ColSpecArrayInstance(Multiplicity.ONE, undefined);
|
|
117
|
+
const colSpecArray = new ColSpecArray();
|
|
118
|
+
instanceVal.values = [colSpecArray];
|
|
119
|
+
const transformerContext = new V1_GraphTransformerContextBuilder(
|
|
120
|
+
// TODO?: do we need to include the plugins here?
|
|
121
|
+
[],
|
|
122
|
+
).build();
|
|
123
|
+
columns.forEach((lambda, columnName) => {
|
|
124
|
+
const colSpec = new ColSpec();
|
|
125
|
+
colSpec.name = columnName;
|
|
126
|
+
colSpec.function1 = new INTERNAL__UnknownValueSpecification(
|
|
127
|
+
V1_serializeRawValueSpecification(
|
|
128
|
+
V1_transformRawLambda(lambda, transformerContext),
|
|
129
|
+
),
|
|
130
|
+
);
|
|
131
|
+
colSpecArray.colSpecs.push(colSpec);
|
|
132
|
+
});
|
|
133
|
+
projectFunction.parametersValues = [accessorInstanceValue, instanceVal];
|
|
134
|
+
lambdaFunction.expressionSequence = [projectFunction];
|
|
135
|
+
return buildRawLambdaFromLambdaFunction(lambdaFunction, graphManagerState);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export const _decorateRawLambdaWithParametersAndLetExpressions = (
|
|
139
|
+
rawLambda: RawLambda,
|
|
140
|
+
parameters: PlainObject[],
|
|
141
|
+
letExpressions: PlainObject[],
|
|
142
|
+
): RawLambda => {
|
|
143
|
+
let lambdaBody = rawLambda.body;
|
|
144
|
+
if (letExpressions.length) {
|
|
145
|
+
if (Array.isArray(rawLambda.body)) {
|
|
146
|
+
lambdaBody = [...letExpressions, ...(rawLambda.body as object[])];
|
|
147
|
+
} else {
|
|
148
|
+
lambdaBody = [...letExpressions, rawLambda.body];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return new RawLambda(
|
|
152
|
+
[
|
|
153
|
+
...(Array.isArray(rawLambda.parameters)
|
|
154
|
+
? (rawLambda.parameters as object[])
|
|
155
|
+
: []),
|
|
156
|
+
...parameters,
|
|
157
|
+
],
|
|
158
|
+
lambdaBody,
|
|
159
|
+
);
|
|
160
|
+
};
|
|
69
161
|
|
|
70
162
|
export const QUERY_BUILDER_PROJECTION_COLUMN_DND_TYPE = 'PROJECTION_COLUMN';
|
|
71
163
|
|
|
@@ -182,6 +274,54 @@ export class QueryBuilderSimpleProjectionColumnState
|
|
|
182
274
|
}
|
|
183
275
|
}
|
|
184
276
|
|
|
277
|
+
export class QueryBuilderRelationColumnProjectionColumnState
|
|
278
|
+
extends QueryBuilderProjectionColumnState
|
|
279
|
+
implements Hashable
|
|
280
|
+
{
|
|
281
|
+
lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
|
|
282
|
+
|
|
283
|
+
readonly column: RelationColumn;
|
|
284
|
+
|
|
285
|
+
constructor(
|
|
286
|
+
tdsState: QueryBuilderTDSState,
|
|
287
|
+
column: RelationColumn,
|
|
288
|
+
humanizePropertyName: boolean = true,
|
|
289
|
+
) {
|
|
290
|
+
super(tdsState, column.name);
|
|
291
|
+
|
|
292
|
+
makeObservable(this, {
|
|
293
|
+
hashCode: override,
|
|
294
|
+
lambdaParameterName: observable,
|
|
295
|
+
setLambdaParameterName: action,
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
this.column = column;
|
|
299
|
+
this.columnName = humanizePropertyName
|
|
300
|
+
? prettyCONSTName(column.name)
|
|
301
|
+
: column.name;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
override getColumnType(): Type | undefined {
|
|
305
|
+
return this.column.genericType.value.rawType;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
setLambdaParameterName(val: string): void {
|
|
309
|
+
this.lambdaParameterName = val;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
isVariableUsed(_variable: VariableExpression): boolean {
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
get hashCode(): string {
|
|
317
|
+
return hashArray([
|
|
318
|
+
QUERY_BUILDER_STATE_HASH_STRUCTURE.RELATION_COLUMN_PROJECTION_COLUMN_STATE,
|
|
319
|
+
this.column.name,
|
|
320
|
+
this.columnName,
|
|
321
|
+
]);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
185
325
|
class QueryBuilderDerivationProjectionLambdaState extends LambdaEditorState {
|
|
186
326
|
queryBuilderState: QueryBuilderState;
|
|
187
327
|
derivationProjectionColumnState: QueryBuilderDerivationProjectionColumnState;
|
|
@@ -300,6 +440,7 @@ export class QueryBuilderDerivationProjectionColumnState
|
|
|
300
440
|
returnType: observable,
|
|
301
441
|
fetchingLambdaReturnTypeState: observable,
|
|
302
442
|
setLambda: action,
|
|
443
|
+
setResolvedLambdaReturnType: action,
|
|
303
444
|
fetchDerivationLambdaReturnType: flow,
|
|
304
445
|
setLambdaReturnType: action,
|
|
305
446
|
});
|
|
@@ -351,13 +492,29 @@ export class QueryBuilderDerivationProjectionColumnState
|
|
|
351
492
|
}
|
|
352
493
|
assertTrue(Array.isArray(this.lambda.parameters));
|
|
353
494
|
const graph = this.tdsState.queryBuilderState.graphManagerState.graph;
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
495
|
+
const sourceElement = this.tdsState.queryBuilderState.sourceElement;
|
|
496
|
+
if (sourceElement instanceof Class) {
|
|
497
|
+
const isolatedLambda = this.getIsolatedClassRawLambda();
|
|
498
|
+
const type =
|
|
499
|
+
(yield this.tdsState.queryBuilderState.graphManagerState.graphManager.getLambdaReturnType(
|
|
500
|
+
isolatedLambda,
|
|
501
|
+
graph,
|
|
502
|
+
)) as string;
|
|
503
|
+
this.setLambdaReturnType(type);
|
|
504
|
+
} else if (sourceElement instanceof Accessor) {
|
|
505
|
+
const isolatedLambda = this.getIsolatedAccessorRawLambda(sourceElement);
|
|
506
|
+
const relationTypeMetadata =
|
|
507
|
+
(yield this.tdsState.queryBuilderState.graphManagerState.graphManager.getLambdaRelationType(
|
|
508
|
+
isolatedLambda,
|
|
509
|
+
graph,
|
|
510
|
+
)) as RelationTypeMetadata;
|
|
511
|
+
const columnMetadata = relationTypeMetadata.columns.find(
|
|
512
|
+
(col) => col.name === this.columnName,
|
|
513
|
+
);
|
|
514
|
+
if (columnMetadata) {
|
|
515
|
+
this.setLambdaReturnType(columnMetadata.type);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
361
518
|
} catch (error) {
|
|
362
519
|
assertErrorThrown(error);
|
|
363
520
|
this.tdsState.queryBuilderState.applicationStore.logService.info(
|
|
@@ -372,7 +529,28 @@ export class QueryBuilderDerivationProjectionColumnState
|
|
|
372
529
|
}
|
|
373
530
|
}
|
|
374
531
|
|
|
375
|
-
|
|
532
|
+
getIsolatedAccessorRawLambda(_accessor: Accessor): RawLambda {
|
|
533
|
+
const { graphManagerState } = this.tdsState.queryBuilderState;
|
|
534
|
+
const isolatedLambda = _buildAccessorProjectRawLambda(
|
|
535
|
+
graphManagerState.graph,
|
|
536
|
+
graphManagerState,
|
|
537
|
+
_accessor,
|
|
538
|
+
new Map([[this.columnName, this.lambda]]),
|
|
539
|
+
);
|
|
540
|
+
const enrichedLambda = _decorateRawLambdaWithParametersAndLetExpressions(
|
|
541
|
+
isolatedLambda,
|
|
542
|
+
this.tdsState.getParameters(),
|
|
543
|
+
this.tdsState.getLetExpressions(),
|
|
544
|
+
);
|
|
545
|
+
return enrichedLambda;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
getIsolatedClassRawLambda(): RawLambda {
|
|
549
|
+
const _class = guaranteeType(
|
|
550
|
+
this.tdsState.queryBuilderState.sourceElement,
|
|
551
|
+
Class,
|
|
552
|
+
'Expected source element to be a class',
|
|
553
|
+
);
|
|
376
554
|
assertTrue(Array.isArray(this.lambda.parameters));
|
|
377
555
|
const projectionParameter = this.lambda.parameters as object[];
|
|
378
556
|
assertTrue(projectionParameter.length === 1);
|
|
@@ -383,45 +561,26 @@ export class QueryBuilderDerivationProjectionColumnState
|
|
|
383
561
|
const rawVariableExpression = new RawVariableExpression(
|
|
384
562
|
variable.name,
|
|
385
563
|
Multiplicity.ONE,
|
|
386
|
-
PackageableElementExplicitReference.create(
|
|
387
|
-
guaranteeNonNullable(queryBuilderState.class),
|
|
388
|
-
),
|
|
564
|
+
PackageableElementExplicitReference.create(guaranteeNonNullable(_class)),
|
|
389
565
|
);
|
|
390
566
|
const _rawVariableExpression =
|
|
391
567
|
queryBuilderState.graphManagerState.graphManager.serializeRawValueSpecification(
|
|
392
568
|
rawVariableExpression,
|
|
393
569
|
);
|
|
394
|
-
|
|
395
|
-
(
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
),
|
|
570
|
+
return _decorateRawLambdaWithParametersAndLetExpressions(
|
|
571
|
+
new RawLambda([_rawVariableExpression], this.lambda.body),
|
|
572
|
+
this.tdsState.getParameters(),
|
|
573
|
+
this.tdsState.getLetExpressions(),
|
|
399
574
|
);
|
|
400
|
-
const letExpressions = queryBuilderState.constantState.constants
|
|
401
|
-
.map((_const) => _const.buildLetExpression())
|
|
402
|
-
.map((expres) =>
|
|
403
|
-
queryBuilderState.graphManagerState.graphManager.serializeValueSpecification(
|
|
404
|
-
expres,
|
|
405
|
-
),
|
|
406
|
-
);
|
|
407
|
-
let lambdaBody = this.lambda.body;
|
|
408
|
-
if (letExpressions.length) {
|
|
409
|
-
if (Array.isArray(this.lambda.body)) {
|
|
410
|
-
lambdaBody = [...letExpressions, ...(this.lambda.body as object[])];
|
|
411
|
-
} else {
|
|
412
|
-
lambdaBody = [...letExpressions, this.lambda.body];
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
const isolatedLambda = new RawLambda(
|
|
416
|
-
[_rawVariableExpression, ...parameters],
|
|
417
|
-
lambdaBody,
|
|
418
|
-
);
|
|
419
|
-
return isolatedLambda;
|
|
420
575
|
}
|
|
421
576
|
|
|
422
577
|
setLambdaReturnType(type: string): void {
|
|
423
|
-
|
|
424
|
-
this.tdsState.queryBuilderState.graphManagerState.graph.getType(type)
|
|
578
|
+
this.setResolvedLambdaReturnType(
|
|
579
|
+
this.tdsState.queryBuilderState.graphManagerState.graph.getType(type),
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
setResolvedLambdaReturnType(resolvedType: Type): void {
|
|
425
584
|
assertTrue(
|
|
426
585
|
resolvedType instanceof PrimitiveType ||
|
|
427
586
|
resolvedType instanceof Enumeration,
|
|
@@ -30,6 +30,8 @@ import {
|
|
|
30
30
|
PrimitiveInstanceValue,
|
|
31
31
|
LambdaFunctionInstanceValue,
|
|
32
32
|
ColSpecInstanceValue,
|
|
33
|
+
type RelationColumn,
|
|
34
|
+
type FunctionExpression,
|
|
33
35
|
} from '@finos/legend-graph';
|
|
34
36
|
import {
|
|
35
37
|
assertNonNullable,
|
|
@@ -56,6 +58,7 @@ import {
|
|
|
56
58
|
import { FETCH_STRUCTURE_IMPLEMENTATION } from '../../QueryBuilderFetchStructureImplementationState.js';
|
|
57
59
|
import {
|
|
58
60
|
QueryBuilderDerivationProjectionColumnState,
|
|
61
|
+
QueryBuilderRelationColumnProjectionColumnState,
|
|
59
62
|
QueryBuilderSimpleProjectionColumnState,
|
|
60
63
|
} from './QueryBuilderProjectionColumnState.js';
|
|
61
64
|
import { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
@@ -300,6 +303,33 @@ export const processTDSProjectionColumnPropertyExpression = (
|
|
|
300
303
|
}
|
|
301
304
|
};
|
|
302
305
|
|
|
306
|
+
export const processTDSRelationColumn = (
|
|
307
|
+
parentExpression: FunctionExpression,
|
|
308
|
+
columnName: string | undefined,
|
|
309
|
+
col: RelationColumn,
|
|
310
|
+
queryBuilderState: QueryBuilderState,
|
|
311
|
+
): void => {
|
|
312
|
+
if (
|
|
313
|
+
queryBuilderState.fetchStructureState.implementation instanceof
|
|
314
|
+
QueryBuilderTDSState
|
|
315
|
+
) {
|
|
316
|
+
const tdsState = queryBuilderState.fetchStructureState.implementation;
|
|
317
|
+
const columnState = new QueryBuilderRelationColumnProjectionColumnState(
|
|
318
|
+
tdsState,
|
|
319
|
+
col,
|
|
320
|
+
false,
|
|
321
|
+
);
|
|
322
|
+
tdsState.addColumn(columnState, { skipSorting: true });
|
|
323
|
+
if (columnName) {
|
|
324
|
+
columnState.setColumnName(columnName);
|
|
325
|
+
}
|
|
326
|
+
const parameter = parentExpression.parametersValues[0];
|
|
327
|
+
if (parameter instanceof VariableExpression) {
|
|
328
|
+
columnState.setLambdaParameterName(parameter.name);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
|
|
303
333
|
export const processTDSProjectionDerivationExpression = (
|
|
304
334
|
value: INTERNAL__UnknownValueSpecification,
|
|
305
335
|
columnName: string | undefined,
|
package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts
CHANGED
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
buildPropertyExpressionChain,
|
|
48
48
|
type LambdaFunctionBuilderOption,
|
|
49
49
|
} from '../../../QueryBuilderValueSpecificationBuilderHelper.js';
|
|
50
|
-
import {
|
|
50
|
+
import { appendWindowFunctionState } from '../window/QueryBuilderWindowValueSpecificationBuilder.js';
|
|
51
51
|
import { appendPostFilter } from '../post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js';
|
|
52
52
|
import { buildRelationProjection } from './QueryBuilderRelationProjectValueSpecBuilder.js';
|
|
53
53
|
import { QueryBuilderAggregateOperator_Wavg } from '../aggregation/operators/QueryBuilderAggregateOperator_Wavg.js';
|
|
@@ -295,7 +295,7 @@ export const appendProjection = (
|
|
|
295
295
|
];
|
|
296
296
|
lambdaFunction.expressionSequence[0] = groupByFunction;
|
|
297
297
|
} else if (tdsState.projectionColumns.length) {
|
|
298
|
-
if (!
|
|
298
|
+
if (!queryBuilderState.useRelation) {
|
|
299
299
|
// projection
|
|
300
300
|
const projectFunction = new SimpleFunctionExpression(
|
|
301
301
|
extractElementNameFromPath(
|
|
@@ -409,7 +409,7 @@ export const appendProjection = (
|
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
411
|
// build olapGroupBy
|
|
412
|
-
|
|
412
|
+
appendWindowFunctionState(tdsState.windowState, lambdaFunction);
|
|
413
413
|
|
|
414
414
|
// build post-filter
|
|
415
415
|
appendPostFilter(tdsState.postFilterState, lambdaFunction);
|
package/src/stores/fetch-structure/tds/projection/QueryBuilderRelationProjectValueSpecBuilder.ts
CHANGED
|
@@ -31,10 +31,13 @@ import {
|
|
|
31
31
|
Relation,
|
|
32
32
|
RelationColumn,
|
|
33
33
|
RelationType,
|
|
34
|
+
VariableExpression,
|
|
35
|
+
FunctionExpression,
|
|
34
36
|
} from '@finos/legend-graph';
|
|
35
37
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../../graph/QueryBuilderMetaModelConst.js';
|
|
36
38
|
import {
|
|
37
39
|
QueryBuilderDerivationProjectionColumnState,
|
|
40
|
+
QueryBuilderRelationColumnProjectionColumnState,
|
|
38
41
|
QueryBuilderSimpleProjectionColumnState,
|
|
39
42
|
} from './QueryBuilderProjectionColumnState.js';
|
|
40
43
|
import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
@@ -87,6 +90,24 @@ export const buildRelationProjection = (
|
|
|
87
90
|
],
|
|
88
91
|
queryBuilderState.graphManagerState.graph,
|
|
89
92
|
);
|
|
93
|
+
} else if (
|
|
94
|
+
projectionColumnState instanceof
|
|
95
|
+
QueryBuilderRelationColumnProjectionColumnState
|
|
96
|
+
) {
|
|
97
|
+
const real = projectionColumnState.column;
|
|
98
|
+
const simple = new FunctionExpression(real.name);
|
|
99
|
+
const variable = new VariableExpression(
|
|
100
|
+
projectionColumnState.lambdaParameterName,
|
|
101
|
+
Multiplicity.ONE,
|
|
102
|
+
undefined,
|
|
103
|
+
);
|
|
104
|
+
simple.func = real;
|
|
105
|
+
simple.parametersValues = [variable];
|
|
106
|
+
columnLambda = buildGenericLambdaFunctionInstanceValue(
|
|
107
|
+
projectionColumnState.lambdaParameterName,
|
|
108
|
+
[simple],
|
|
109
|
+
queryBuilderState.graphManagerState.graph,
|
|
110
|
+
);
|
|
90
111
|
} else if (
|
|
91
112
|
projectionColumnState instanceof
|
|
92
113
|
QueryBuilderDerivationProjectionColumnState
|