@finos/legend-query-builder 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/components/QueryBuilder.d.ts +0 -1
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +42 -9
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderComponentTestUtils.d.ts.map +1 -1
- package/lib/components/QueryBuilderComponentTestUtils.js +2 -5
- package/lib/components/QueryBuilderComponentTestUtils.js.map +1 -1
- package/lib/components/QueryBuilderDiffPanel.d.ts +0 -1
- package/lib/components/QueryBuilderDiffPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderDiffPanel.js +2 -2
- package/lib/components/QueryBuilderDiffPanel.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.d.ts +0 -1
- package/lib/components/QueryBuilderParametersPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts +0 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts +0 -1
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +3 -3
- package/lib/components/QueryBuilderSideBar.d.ts +0 -1
- package/lib/components/QueryBuilderSideBar.d.ts.map +1 -1
- package/lib/components/QueryBuilderSideBar.js +2 -1
- package/lib/components/QueryBuilderSideBar.js.map +1 -1
- package/lib/components/QueryBuilderTextEditor.d.ts +0 -1
- package/lib/components/QueryBuilderTextEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts +0 -1
- package/lib/components/QueryBuilderUnsupportedQueryEditor.d.ts.map +1 -1
- package/lib/components/QueryBuilder_TestID.d.ts +1 -0
- package/lib/components/QueryBuilder_TestID.d.ts.map +1 -1
- package/lib/components/QueryBuilder_TestID.js +1 -0
- package/lib/components/QueryBuilder_TestID.js.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts +0 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js +5 -5
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts +0 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js +2 -2
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts +0 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.d.ts +22 -0
- package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.d.ts.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.js +363 -0
- package/lib/components/fetch-structure/QueryBuilderOlapGroupByPanel.js.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +21 -53
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts +22 -0
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js +32 -0
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.js.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +2 -1
- package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.d.ts +27 -0
- package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.d.ts.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.js +61 -0
- package/lib/components/fetch-structure/QueryBuilderTDSComponentHelper.js.map +1 -0
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +4 -13
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts +0 -1
- package/lib/components/filter/QueryBuilderFilterPanel.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts +0 -1
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.js +23 -7
- package/lib/components/shared/LambdaEditor.js.map +1 -1
- package/lib/components/shared/LambdaParameterValuesEditor.d.ts +0 -1
- package/lib/components/shared/LambdaParameterValuesEditor.d.ts.map +1 -1
- package/lib/components/workflows/ServiceQueryBuilder.d.ts.map +1 -1
- package/lib/components/workflows/ServiceQueryBuilder.js +5 -1
- package/lib/components/workflows/ServiceQueryBuilder.js.map +1 -1
- package/lib/graphManager/QueryBuilderHashUtils.d.ts +14 -0
- package/lib/graphManager/QueryBuilderHashUtils.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderHashUtils.js +15 -0
- package/lib/graphManager/QueryBuilderHashUtils.js.map +1 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts +7 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.js +7 -0
- package/lib/graphManager/QueryBuilderSupportedFunctions.js.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +4 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +1 -0
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +50 -0
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +6 -6
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +7 -1
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateTestUtils.js +2 -4
- package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -1
- package/lib/stores/QueryBuilderTypeaheadHelper.js +2 -2
- package/lib/stores/explorer/QueryBuilderExplorerState.js +3 -3
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +1 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +3 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +2 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.d.ts +24 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.js +20 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.js.map +1 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts +23 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js +41 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSHelper.js.map +1 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +11 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +44 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.d.ts +2 -2
- package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.js +2 -2
- package/lib/stores/fetch-structure/tds/QueryResultSetModifierState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateOperator.js +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts +4 -4
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js +8 -7
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.d.ts +18 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.js +36 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.d.ts +91 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.js +272 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.d.ts +19 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.js +100 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.d.ts +19 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.js +83 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.d.ts +29 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.js +30 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.d.ts +25 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.js +50 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.d.ts +25 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.js +51 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.d.ts +25 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.js +50 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.d.ts +25 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.js +50 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.d.ts +25 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.js +51 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.d.ts +24 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.js +48 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.d.ts +24 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.js +48 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.d.ts +24 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.js +48 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.js.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.d.ts +24 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.js +48 -0
- package/lib/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.js.map +1 -0
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.d.ts +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.js +2 -2
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts +6 -4
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +14 -3
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js +8 -11
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.d.ts +2 -2
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js +5 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorValueSpecificationBuilder.js +4 -4
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +3 -3
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +3 -3
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.js +2 -2
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.d.ts +2 -2
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +3 -3
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +3 -3
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts +4 -6
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js +6 -5
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js +1 -0
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +6 -3
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.d.ts +2 -0
- package/lib/stores/filter/QueryBuilderFilterState.d.ts.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +6 -0
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/package.json +13 -13
- package/src/components/QueryBuilder.tsx +110 -35
- package/src/components/QueryBuilderComponentTestUtils.tsx +9 -11
- package/src/components/QueryBuilderDiffPanel.tsx +2 -2
- package/src/components/QueryBuilderResultPanel.tsx +4 -4
- package/src/components/QueryBuilderSideBar.tsx +4 -1
- package/src/components/QueryBuilder_TestID.ts +1 -0
- package/src/components/explorer/QueryBuilderFunctionsExplorerPanel.tsx +6 -6
- package/src/components/explorer/QueryBuilderMilestoningEditor.tsx +2 -3
- package/src/components/fetch-structure/QueryBuilderOlapGroupByPanel.tsx +1140 -0
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +31 -106
- package/src/components/fetch-structure/QueryBuilderPostTDSPanel.tsx +69 -0
- package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +4 -1
- package/src/components/fetch-structure/QueryBuilderTDSComponentHelper.tsx +118 -0
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +4 -23
- package/src/components/shared/LambdaEditor.tsx +25 -22
- package/src/components/workflows/ServiceQueryBuilder.tsx +10 -2
- package/src/graphManager/QueryBuilderHashUtils.ts +16 -0
- package/src/graphManager/QueryBuilderSupportedFunctions.ts +7 -0
- package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +14 -0
- package/src/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +129 -0
- package/src/stores/QueryBuilderStateBuilder.ts +14 -1
- package/src/stores/QueryBuilderStateTestUtils.ts +9 -13
- package/src/stores/QueryBuilderTypeaheadHelper.ts +2 -2
- package/src/stores/explorer/QueryBuilderExplorerState.ts +3 -3
- package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +4 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +2 -1
- package/src/stores/fetch-structure/tds/QueryBuilderTDSColumnState_.ts +28 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSHelper.ts +79 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +68 -1
- package/src/stores/fetch-structure/tds/QueryResultSetModifierState.ts +2 -2
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateOperator.ts +1 -1
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.ts +11 -9
- package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.ts +39 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByState.ts +377 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.ts +237 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByValueSpecificationBuilder.ts +148 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_.ts +43 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Average.ts +56 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Count.ts +57 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Max.ts +56 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Min.ts +56 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapOperator_Sum.ts +57 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_AverageRank_.ts +54 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_DenseRank_.ts +54 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_Rank_.ts +54 -0
- package/src/stores/fetch-structure/tds/olapGroupBy/operators/QueryBuilderTDSOlapRankOperator_RowNumber_.ts +54 -0
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterOperator.ts +2 -2
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +22 -10
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.ts +11 -19
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorHelper.ts +8 -7
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperatorValueSpecificationBuilder.ts +4 -4
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +3 -3
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +3 -3
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +2 -2
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +3 -3
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +3 -3
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionColumnState.ts +9 -11
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.ts +1 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +8 -4
- package/src/stores/filter/QueryBuilderFilterState.ts +7 -0
- package/tsconfig.json +19 -0
@@ -20,6 +20,7 @@ import {
|
|
20
20
|
V1_buildFilterFunctionExpression,
|
21
21
|
V1_buildGetAllFunctionExpression,
|
22
22
|
V1_buildGroupByFunctionExpression,
|
23
|
+
V1_buildOlapGroupByFunctionExpression,
|
23
24
|
V1_buildProjectFunctionExpression,
|
24
25
|
V1_buildSubTypePropertyExpressionTypeInference,
|
25
26
|
} from './v1/V1_QueryValueSpecificationBuilderHelper.js';
|
@@ -121,6 +122,19 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
|
|
121
122
|
compileContext,
|
122
123
|
processingContext,
|
123
124
|
);
|
125
|
+
} else if (
|
126
|
+
matchFunctionName(
|
127
|
+
functionName,
|
128
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.OLAP_GROUPBY,
|
129
|
+
)
|
130
|
+
) {
|
131
|
+
return V1_buildOlapGroupByFunctionExpression(
|
132
|
+
functionName,
|
133
|
+
parameters,
|
134
|
+
openVariables,
|
135
|
+
compileContext,
|
136
|
+
processingContext,
|
137
|
+
);
|
124
138
|
} else if (
|
125
139
|
matchFunctionName(
|
126
140
|
functionName,
|
@@ -570,6 +570,135 @@ export const V1_buildGroupByFunctionExpression = (
|
|
570
570
|
return [expression, processedParams];
|
571
571
|
};
|
572
572
|
|
573
|
+
export const V1_buildOlapGroupByFunctionExpression = (
|
574
|
+
functionName: string,
|
575
|
+
parameters: V1_ValueSpecification[],
|
576
|
+
openVariables: string[],
|
577
|
+
compileContext: V1_GraphBuilderContext,
|
578
|
+
processingContext: V1_ProcessingContext,
|
579
|
+
): [SimpleFunctionExpression, ValueSpecification[]] | undefined => {
|
580
|
+
const processedParams: ValueSpecification[] = [];
|
581
|
+
assertTrue(
|
582
|
+
parameters.length === 5 || parameters.length === 4,
|
583
|
+
`Can't build olapGroupBy() expression: olapGroupBy() expects 4 or 5 arguments`,
|
584
|
+
);
|
585
|
+
let paramIndex = 0;
|
586
|
+
const containsSortByExpression = parameters.length === 5;
|
587
|
+
|
588
|
+
// preceding expression
|
589
|
+
const precedingExperession = (
|
590
|
+
parameters[paramIndex] as V1_ValueSpecification
|
591
|
+
).accept_ValueSpecificationVisitor(
|
592
|
+
new V1_ValueSpecificationBuilder(
|
593
|
+
compileContext,
|
594
|
+
processingContext,
|
595
|
+
openVariables,
|
596
|
+
),
|
597
|
+
);
|
598
|
+
assertNonNullable(
|
599
|
+
precedingExperession.genericType,
|
600
|
+
`Can't build olapGroupBy() expression: preceding expression return type is missing`,
|
601
|
+
);
|
602
|
+
processedParams.push(precedingExperession);
|
603
|
+
paramIndex++;
|
604
|
+
|
605
|
+
// partition (window) columns
|
606
|
+
const columns = (
|
607
|
+
parameters[paramIndex] as V1_ValueSpecification
|
608
|
+
).accept_ValueSpecificationVisitor(
|
609
|
+
new V1_ValueSpecificationBuilder(
|
610
|
+
compileContext,
|
611
|
+
processingContext,
|
612
|
+
openVariables,
|
613
|
+
),
|
614
|
+
);
|
615
|
+
processedParams.push(columns);
|
616
|
+
paramIndex++;
|
617
|
+
|
618
|
+
// OLAP sortBy
|
619
|
+
if (containsSortByExpression) {
|
620
|
+
const sortBy = (
|
621
|
+
parameters[paramIndex] as V1_ValueSpecification
|
622
|
+
).accept_ValueSpecificationVisitor(
|
623
|
+
new V1_ValueSpecificationBuilder(
|
624
|
+
compileContext,
|
625
|
+
processingContext,
|
626
|
+
openVariables,
|
627
|
+
),
|
628
|
+
);
|
629
|
+
processedParams.push(sortBy);
|
630
|
+
paramIndex++;
|
631
|
+
}
|
632
|
+
|
633
|
+
// OLAP agg operation
|
634
|
+
const olapOperatorExp = parameters[paramIndex];
|
635
|
+
let olapOperationLambda: V1_Lambda;
|
636
|
+
if (olapOperatorExp instanceof V1_AppliedFunction) {
|
637
|
+
olapOperationLambda = guaranteeType(
|
638
|
+
olapOperatorExp.parameters[1],
|
639
|
+
V1_Lambda,
|
640
|
+
`Can't build olapGroupBy() expression: olap operation function expects argument ${
|
641
|
+
paramIndex + 1
|
642
|
+
} to be a lambda`,
|
643
|
+
);
|
644
|
+
} else {
|
645
|
+
olapOperationLambda = guaranteeType(
|
646
|
+
olapOperatorExp,
|
647
|
+
V1_Lambda,
|
648
|
+
`Can't build olapGroupBy() expression: olapGroupBy() expects argument ${
|
649
|
+
paramIndex + 1
|
650
|
+
} to be a lambda`,
|
651
|
+
);
|
652
|
+
}
|
653
|
+
const olapOperationParameters = olapOperationLambda.parameters;
|
654
|
+
const variables = new Set<string>();
|
655
|
+
olapOperationParameters.forEach((variable) => {
|
656
|
+
if (!variables.has(variable.name) && !variable.class) {
|
657
|
+
const variableExpression = new VariableExpression(
|
658
|
+
variable.name,
|
659
|
+
precedingExperession.multiplicity,
|
660
|
+
);
|
661
|
+
variableExpression.genericType = precedingExperession.genericType;
|
662
|
+
processingContext.addInferredVariables(variable.name, variableExpression);
|
663
|
+
}
|
664
|
+
});
|
665
|
+
const olapOperation = (
|
666
|
+
olapOperatorExp as V1_ValueSpecification
|
667
|
+
).accept_ValueSpecificationVisitor(
|
668
|
+
new V1_ValueSpecificationBuilder(
|
669
|
+
compileContext,
|
670
|
+
processingContext,
|
671
|
+
openVariables,
|
672
|
+
),
|
673
|
+
);
|
674
|
+
processedParams.push(olapOperation);
|
675
|
+
paramIndex++;
|
676
|
+
|
677
|
+
// OLAP column name
|
678
|
+
const olapColumnName = (
|
679
|
+
parameters[paramIndex] as V1_ValueSpecification
|
680
|
+
).accept_ValueSpecificationVisitor(
|
681
|
+
new V1_ValueSpecificationBuilder(
|
682
|
+
compileContext,
|
683
|
+
processingContext,
|
684
|
+
openVariables,
|
685
|
+
),
|
686
|
+
);
|
687
|
+
processedParams.push(olapColumnName);
|
688
|
+
paramIndex++;
|
689
|
+
|
690
|
+
// build final expression
|
691
|
+
const expression = V1_buildBaseSimpleFunctionExpression(
|
692
|
+
processedParams,
|
693
|
+
functionName,
|
694
|
+
compileContext,
|
695
|
+
);
|
696
|
+
expression.genericType = GenericTypeExplicitReference.create(
|
697
|
+
new GenericType(compileContext.resolveType(CORE_PURE_PATH.TDS_ROW).value),
|
698
|
+
);
|
699
|
+
return [expression, processedParams];
|
700
|
+
};
|
701
|
+
|
573
702
|
export const V1_buildSubTypePropertyExpressionTypeInference = (
|
574
703
|
inferredVariable: SimpleFunctionExpression,
|
575
704
|
): Type | undefined =>
|
@@ -70,6 +70,7 @@ import {
|
|
70
70
|
} from './fetch-structure/tds/projection/QueryBuilderProjectionStateBuilder.js';
|
71
71
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../graphManager/QueryBuilderSupportedFunctions.js';
|
72
72
|
import { LambdaParameterState } from './shared/LambdaParameterState.js';
|
73
|
+
import { processTDSOlapGroupByExpression } from './fetch-structure/tds/olapGroupBy/QueryBuilderOlapGroupByStateBuilder.js';
|
73
74
|
|
74
75
|
const processGetAllExpression = (
|
75
76
|
expression: SimpleFunctionExpression,
|
@@ -394,6 +395,7 @@ export class QueryBuilderValueSpecificationProcessor
|
|
394
395
|
matchFunctionName(precedingExpression.functionName, [
|
395
396
|
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_PROJECT,
|
396
397
|
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_GROUP_BY,
|
398
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.OLAP_GROUPBY,
|
397
399
|
])
|
398
400
|
) {
|
399
401
|
assertTrue(
|
@@ -410,7 +412,7 @@ export class QueryBuilderValueSpecificationProcessor
|
|
410
412
|
return;
|
411
413
|
} else {
|
412
414
|
throw new UnsupportedOperationError(
|
413
|
-
`Can't process filter() expression: only support filter() immediately following getAll() or project()/groupBy()`,
|
415
|
+
`Can't process filter() expression: only support filter() immediately following getAll() or project()/groupBy()/olapGroupBy()`,
|
414
416
|
);
|
415
417
|
}
|
416
418
|
} else if (
|
@@ -474,6 +476,17 @@ export class QueryBuilderValueSpecificationProcessor
|
|
474
476
|
this.queryBuilderState,
|
475
477
|
);
|
476
478
|
return;
|
479
|
+
} else if (
|
480
|
+
matchFunctionName(
|
481
|
+
functionName,
|
482
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.OLAP_GROUPBY,
|
483
|
+
)
|
484
|
+
) {
|
485
|
+
processTDSOlapGroupByExpression(
|
486
|
+
valueSpecification,
|
487
|
+
this.queryBuilderState,
|
488
|
+
);
|
489
|
+
return;
|
477
490
|
} else if (
|
478
491
|
matchFunctionName(
|
479
492
|
functionName,
|
@@ -25,8 +25,8 @@ import {
|
|
25
25
|
TEST__buildGraphWithEntities,
|
26
26
|
TEST__getTestGraphManagerState,
|
27
27
|
} from '@finos/legend-graph';
|
28
|
+
import { createSpy } from '@finos/legend-shared';
|
28
29
|
import type { Entity } from '@finos/legend-storage';
|
29
|
-
import { jest } from '@jest/globals';
|
30
30
|
import { flowResult } from 'mobx';
|
31
31
|
import { QueryBuilder_GraphManagerPreset } from '../graphManager/QueryBuilder_GraphManagerPreset.js';
|
32
32
|
import {
|
@@ -75,18 +75,14 @@ export const TEST__setUpQueryBuilderState = async (
|
|
75
75
|
}
|
76
76
|
|
77
77
|
if (rawMappingModelCoverageAnalysisResult) {
|
78
|
-
|
79
|
-
.
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
rawMappingModelCoverageAnalysisResult,
|
87
|
-
),
|
88
|
-
),
|
89
|
-
);
|
78
|
+
createSpy(
|
79
|
+
queryBuilderState.graphManagerState.graphManager,
|
80
|
+
'analyzeMappingModelCoverage',
|
81
|
+
).mockResolvedValue(
|
82
|
+
queryBuilderState.graphManagerState.graphManager.buildMappingModelCoverageAnalysisResult(
|
83
|
+
rawMappingModelCoverageAnalysisResult,
|
84
|
+
),
|
85
|
+
);
|
90
86
|
}
|
91
87
|
|
92
88
|
if (rawMappingModelCoverageAnalysisResult) {
|
@@ -20,7 +20,7 @@ import {
|
|
20
20
|
type ValueSpecification,
|
21
21
|
PrimitiveInstanceValue,
|
22
22
|
PRIMITIVE_TYPE,
|
23
|
-
|
23
|
+
TDSExecutionResult,
|
24
24
|
type RawLambda,
|
25
25
|
} from '@finos/legend-graph';
|
26
26
|
import { guaranteeType, isNonNullable, isString } from '@finos/legend-shared';
|
@@ -120,7 +120,7 @@ export const buildProjectionColumnTypeaheadQuery = (
|
|
120
120
|
export const buildTypeaheadOptions = (result: ExecutionResult): string[] => {
|
121
121
|
const tdsResult = guaranteeType(
|
122
122
|
result,
|
123
|
-
|
123
|
+
TDSExecutionResult,
|
124
124
|
'Typeahead search is only supported for TDS result sets',
|
125
125
|
);
|
126
126
|
const options: string[] = [];
|
@@ -54,7 +54,7 @@ import {
|
|
54
54
|
Property,
|
55
55
|
Association,
|
56
56
|
PRIMITIVE_TYPE,
|
57
|
-
|
57
|
+
TDSExecutionResult,
|
58
58
|
type ExecutionResult,
|
59
59
|
getAllSubclasses,
|
60
60
|
PropertyExplicitReference,
|
@@ -741,7 +741,7 @@ export class QueryBuilderExplorerState {
|
|
741
741
|
)) as ExecutionResult;
|
742
742
|
assertType(
|
743
743
|
previewResult,
|
744
|
-
|
744
|
+
TDSExecutionResult,
|
745
745
|
`Unexpected preview data format`,
|
746
746
|
);
|
747
747
|
const previewResultData =
|
@@ -778,7 +778,7 @@ export class QueryBuilderExplorerState {
|
|
778
778
|
)) as ExecutionResult;
|
779
779
|
assertType(
|
780
780
|
previewResult,
|
781
|
-
|
781
|
+
TDSExecutionResult,
|
782
782
|
`Unexpected preview data format`,
|
783
783
|
);
|
784
784
|
this.previewDataState.setPreviewData(
|
@@ -67,4 +67,8 @@ export abstract class QueryBuilderFetchStructureImplementationState
|
|
67
67
|
options?: LambdaFunctionBuilderOption,
|
68
68
|
): void;
|
69
69
|
abstract get hashCode(): string;
|
70
|
+
|
71
|
+
get TEMPORARY__showPostFetchStructurePanel(): boolean {
|
72
|
+
return this.queryBuilderState.filterState.showPanel;
|
73
|
+
}
|
70
74
|
}
|
@@ -15,7 +15,7 @@
|
|
15
15
|
*/
|
16
16
|
|
17
17
|
import type { QueryBuilderState } from '../../QueryBuilderState.js';
|
18
|
-
import { action, makeObservable, observable } from 'mobx';
|
18
|
+
import { action, computed, makeObservable, observable } from 'mobx';
|
19
19
|
import {
|
20
20
|
type CompilationError,
|
21
21
|
PackageableElementExplicitReference,
|
@@ -73,6 +73,7 @@ export class QueryBuilderGraphFetchTreeState
|
|
73
73
|
makeObservable(this, {
|
74
74
|
treeData: observable.ref,
|
75
75
|
isChecked: observable,
|
76
|
+
TEMPORARY__showPostFetchStructurePanel: computed,
|
76
77
|
setGraphFetchTree: action,
|
77
78
|
setChecked: action,
|
78
79
|
});
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import { type Hashable, uuid } from '@finos/legend-shared';
|
18
|
+
import type { Type } from '@finos/legend-graph';
|
19
|
+
|
20
|
+
export abstract class QueryBuilderTDSColumnState implements Hashable {
|
21
|
+
readonly uuid = uuid();
|
22
|
+
|
23
|
+
abstract get columnName(): string;
|
24
|
+
|
25
|
+
abstract getColumnType(): Type | undefined;
|
26
|
+
|
27
|
+
abstract get hashCode(): string;
|
28
|
+
}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import {
|
18
|
+
extractElementNameFromPath,
|
19
|
+
matchFunctionName,
|
20
|
+
} from '@finos/legend-graph';
|
21
|
+
import {
|
22
|
+
guaranteeNonNullable,
|
23
|
+
UnsupportedOperationError,
|
24
|
+
} from '@finos/legend-shared';
|
25
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../graphManager/QueryBuilderSupportedFunctions.js';
|
26
|
+
import type { QueryBuilderTDSState } from './QueryBuilderTDSState.js';
|
27
|
+
import type { QueryBuilderTDSColumnState } from './QueryBuilderTDSColumnState_.js';
|
28
|
+
import { COLUMN_SORT_TYPE } from './QueryResultSetModifierState.js';
|
29
|
+
|
30
|
+
export const findTDSColumnState = (
|
31
|
+
projectionState: QueryBuilderTDSState,
|
32
|
+
columnName: string,
|
33
|
+
): QueryBuilderTDSColumnState | undefined =>
|
34
|
+
projectionState.tdsColumns.find((c) => c.columnName === columnName);
|
35
|
+
|
36
|
+
export const getTDSColumnState = (
|
37
|
+
projectionState: QueryBuilderTDSState,
|
38
|
+
columnName: string,
|
39
|
+
): QueryBuilderTDSColumnState =>
|
40
|
+
guaranteeNonNullable(
|
41
|
+
findTDSColumnState(projectionState, columnName),
|
42
|
+
`Column ${columnName} not found in TDS`,
|
43
|
+
);
|
44
|
+
|
45
|
+
export const getTDSColSortTypeFromFunctionName = (
|
46
|
+
functionName: string,
|
47
|
+
): COLUMN_SORT_TYPE => {
|
48
|
+
if (
|
49
|
+
matchFunctionName(functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_ASC)
|
50
|
+
) {
|
51
|
+
return COLUMN_SORT_TYPE.ASC;
|
52
|
+
} else if (
|
53
|
+
matchFunctionName(functionName, QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DESC)
|
54
|
+
) {
|
55
|
+
return COLUMN_SORT_TYPE.DESC;
|
56
|
+
}
|
57
|
+
throw new UnsupportedOperationError(
|
58
|
+
`Unsupported TDS sort function: ${functionName}`,
|
59
|
+
);
|
60
|
+
};
|
61
|
+
|
62
|
+
export const getFunctionNameFromTDSSortColumn = (
|
63
|
+
columnSortType: COLUMN_SORT_TYPE,
|
64
|
+
): string => {
|
65
|
+
switch (columnSortType) {
|
66
|
+
case COLUMN_SORT_TYPE.ASC:
|
67
|
+
return extractElementNameFromPath(
|
68
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_ASC,
|
69
|
+
);
|
70
|
+
case COLUMN_SORT_TYPE.DESC:
|
71
|
+
return extractElementNameFromPath(
|
72
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.TDS_DESC,
|
73
|
+
);
|
74
|
+
default:
|
75
|
+
throw new UnsupportedOperationError(
|
76
|
+
`Unsupported column sort type ${columnSortType}`,
|
77
|
+
);
|
78
|
+
}
|
79
|
+
};
|
@@ -56,7 +56,10 @@ import {
|
|
56
56
|
DEFAULT_LAMBDA_VARIABLE_NAME,
|
57
57
|
QUERY_BUILDER_SOURCE_ID_LABEL,
|
58
58
|
} from '../../QueryBuilderConfig.js';
|
59
|
-
import {
|
59
|
+
import {
|
60
|
+
QueryBuilderAggregateColumnState,
|
61
|
+
QueryBuilderAggregationState,
|
62
|
+
} from './aggregation/QueryBuilderAggregationState.js';
|
60
63
|
import { buildGenericLambdaFunctionInstanceValue } from '../../QueryBuilderValueSpecificationHelper.js';
|
61
64
|
import {
|
62
65
|
FETCH_STRUCTURE_IMPLEMENTATION,
|
@@ -88,6 +91,10 @@ import type { LambdaFunctionBuilderOption } from '../../QueryBuilderValueSpecifi
|
|
88
91
|
import { appendProjection } from './projection/QueryBuilderProjectionValueSpecificationBuilder.js';
|
89
92
|
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../../graphManager/QueryBuilderSupportedFunctions.js';
|
90
93
|
import { QUERY_BUILDER_HASH_STRUCTURE } from '../../../graphManager/QueryBuilderHashUtils.js';
|
94
|
+
import { QueryBuilderOlapGroupByState } from './olapGroupBy/QueryBuilderOlapGroupByState.js';
|
95
|
+
import type { QueryBuilderTDSOlapOperator } from './olapGroupBy/operators/QueryBuilderTDSOlapOperator_.js';
|
96
|
+
import { getQueryBuilderCoreOlapGroupByOperators } from './olapGroupBy/QueryBuilderOlapGroupByOperatorLoader.js';
|
97
|
+
import type { QueryBuilderTDSColumnState } from './QueryBuilderTDSColumnState_.js';
|
91
98
|
|
92
99
|
export class QueryBuilderTDSState
|
93
100
|
extends QueryBuilderFetchStructureImplementationState
|
@@ -95,15 +102,19 @@ export class QueryBuilderTDSState
|
|
95
102
|
{
|
96
103
|
readonly aggregationState: QueryBuilderAggregationState;
|
97
104
|
readonly postFilterState: QueryBuilderPostFilterState;
|
105
|
+
readonly olapGroupByState: QueryBuilderOlapGroupByState;
|
98
106
|
readonly resultSetModifierState: QueryResultSetModifierState;
|
99
107
|
projectionColumns: QueryBuilderProjectionColumnState[] = [];
|
100
108
|
isConvertDerivationProjectionObjects = false;
|
101
109
|
showPostFilterPanel = false;
|
110
|
+
showOlapGroupByPanel = false;
|
102
111
|
|
103
112
|
postFilterOperators: QueryBuilderPostFilterOperator[] =
|
104
113
|
getQueryBuilderCorePostFilterOperators();
|
105
114
|
aggregationOperators: QueryBuilderAggregateOperator[] =
|
106
115
|
getQueryBuilderCoreAggregrationOperators();
|
116
|
+
olapGroupByOperators: QueryBuilderTDSOlapOperator[] =
|
117
|
+
getQueryBuilderCoreOlapGroupByOperators();
|
107
118
|
|
108
119
|
constructor(
|
109
120
|
queryBuilderState: QueryBuilderState,
|
@@ -115,12 +126,15 @@ export class QueryBuilderTDSState
|
|
115
126
|
projectionColumns: observable,
|
116
127
|
isConvertDerivationProjectionObjects: observable,
|
117
128
|
showPostFilterPanel: observable,
|
129
|
+
showOlapGroupByPanel: observable,
|
130
|
+
TEMPORARY__showPostFetchStructurePanel: computed,
|
118
131
|
derivations: computed,
|
119
132
|
hasParserError: computed,
|
120
133
|
addColumn: action,
|
121
134
|
moveColumn: action,
|
122
135
|
replaceColumn: action,
|
123
136
|
setShowPostFilterPanel: action,
|
137
|
+
setShowOlapGroupByPanel: action,
|
124
138
|
convertDerivationProjectionObjects: flow,
|
125
139
|
});
|
126
140
|
|
@@ -133,6 +147,10 @@ export class QueryBuilderTDSState
|
|
133
147
|
this,
|
134
148
|
this.aggregationOperators,
|
135
149
|
);
|
150
|
+
this.olapGroupByState = new QueryBuilderOlapGroupByState(
|
151
|
+
this,
|
152
|
+
this.olapGroupByOperators,
|
153
|
+
);
|
136
154
|
}
|
137
155
|
|
138
156
|
get type(): string {
|
@@ -151,6 +169,14 @@ export class QueryBuilderTDSState
|
|
151
169
|
);
|
152
170
|
}
|
153
171
|
|
172
|
+
override get TEMPORARY__showPostFetchStructurePanel(): boolean {
|
173
|
+
return (
|
174
|
+
this.queryBuilderState.filterState.showPanel ||
|
175
|
+
this.showOlapGroupByPanel ||
|
176
|
+
this.showPostFilterPanel
|
177
|
+
);
|
178
|
+
}
|
179
|
+
|
154
180
|
get usedExplorerTreePropertyNodeIDs(): string[] {
|
155
181
|
let nodeIDs: string[] = [];
|
156
182
|
this.projectionColumns.forEach((column) => {
|
@@ -241,6 +267,43 @@ export class QueryBuilderTDSState
|
|
241
267
|
return undefined;
|
242
268
|
}
|
243
269
|
|
270
|
+
get tdsColumns(): QueryBuilderTDSColumnState[] {
|
271
|
+
const aggregationStateCols = this.aggregationState.columns.map(
|
272
|
+
(c) => c.projectionColumnState,
|
273
|
+
);
|
274
|
+
// remove projection columns in aggregation
|
275
|
+
const projectionColumns = this.projectionColumns.filter(
|
276
|
+
(c) => !aggregationStateCols.includes(c),
|
277
|
+
);
|
278
|
+
return [
|
279
|
+
...this.aggregationState.columns,
|
280
|
+
...projectionColumns,
|
281
|
+
...this.olapGroupByState.olapColumns,
|
282
|
+
];
|
283
|
+
}
|
284
|
+
|
285
|
+
isDuplicateColumn(col: QueryBuilderTDSColumnState): boolean {
|
286
|
+
return (
|
287
|
+
this.tdsColumns.filter((c) => c.columnName === col.columnName).length > 1
|
288
|
+
);
|
289
|
+
}
|
290
|
+
|
291
|
+
isColumnInUse(tdsCol: QueryBuilderTDSColumnState): boolean {
|
292
|
+
return Boolean(
|
293
|
+
[
|
294
|
+
...this.postFilterState.referencedTDSColumns,
|
295
|
+
...this.olapGroupByState.referencedTDSColumns,
|
296
|
+
].find((col) => {
|
297
|
+
if (col instanceof QueryBuilderAggregateColumnState) {
|
298
|
+
return tdsCol instanceof QueryBuilderAggregateColumnState
|
299
|
+
? tdsCol === col
|
300
|
+
: col.projectionColumnState === tdsCol;
|
301
|
+
}
|
302
|
+
return col === tdsCol;
|
303
|
+
}),
|
304
|
+
);
|
305
|
+
}
|
306
|
+
|
244
307
|
onClassChange(_class: Class | undefined): void {
|
245
308
|
return;
|
246
309
|
}
|
@@ -256,6 +319,10 @@ export class QueryBuilderTDSState
|
|
256
319
|
this.showPostFilterPanel = val;
|
257
320
|
}
|
258
321
|
|
322
|
+
setShowOlapGroupByPanel(val: boolean): void {
|
323
|
+
this.showOlapGroupByPanel = val;
|
324
|
+
}
|
325
|
+
|
259
326
|
*convertDerivationProjectionObjects(): GeneratorFn<void> {
|
260
327
|
const lambdas = new Map<string, RawLambda>();
|
261
328
|
const derivationProjectionColumnStateMap = new Map<
|
@@ -26,8 +26,8 @@ import {
|
|
26
26
|
import { QUERY_BUILDER_HASH_STRUCTURE } from '../../../graphManager/QueryBuilderHashUtils.js';
|
27
27
|
|
28
28
|
export enum COLUMN_SORT_TYPE {
|
29
|
-
ASC,
|
30
|
-
DESC,
|
29
|
+
ASC = 'ASC',
|
30
|
+
DESC = 'DESC',
|
31
31
|
}
|
32
32
|
|
33
33
|
export class SortColumnState implements Hashable {
|
@@ -84,7 +84,7 @@ export abstract class QueryBuilderAggregateOperator implements Hashable {
|
|
84
84
|
*/
|
85
85
|
getReturnType(aggregateColumnState: QueryBuilderAggregateColumnState): Type {
|
86
86
|
return guaranteeNonNullable(
|
87
|
-
aggregateColumnState.projectionColumnState.
|
87
|
+
aggregateColumnState.projectionColumnState.getColumnType(),
|
88
88
|
);
|
89
89
|
}
|
90
90
|
|
@@ -16,7 +16,6 @@
|
|
16
16
|
|
17
17
|
import { action, computed, makeObservable, observable } from 'mobx';
|
18
18
|
import {
|
19
|
-
uuid,
|
20
19
|
deleteEntry,
|
21
20
|
addUniqueEntry,
|
22
21
|
type Hashable,
|
@@ -28,9 +27,12 @@ import type { QueryBuilderTDSState } from '../QueryBuilderTDSState.js';
|
|
28
27
|
import type { QueryBuilderAggregateOperator } from './QueryBuilderAggregateOperator.js';
|
29
28
|
import type { QueryBuilderProjectionColumnState } from '../projection/QueryBuilderProjectionColumnState.js';
|
30
29
|
import { QUERY_BUILDER_HASH_STRUCTURE } from '../../../../graphManager/QueryBuilderHashUtils.js';
|
30
|
+
import { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState_.js';
|
31
31
|
|
32
|
-
export class QueryBuilderAggregateColumnState
|
33
|
-
|
32
|
+
export class QueryBuilderAggregateColumnState
|
33
|
+
extends QueryBuilderTDSColumnState
|
34
|
+
implements Hashable
|
35
|
+
{
|
34
36
|
readonly aggregationState: QueryBuilderAggregationState;
|
35
37
|
projectionColumnState: QueryBuilderProjectionColumnState;
|
36
38
|
lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
|
@@ -41,6 +43,7 @@ export class QueryBuilderAggregateColumnState implements Hashable {
|
|
41
43
|
projectionColumnState: QueryBuilderProjectionColumnState,
|
42
44
|
operator: QueryBuilderAggregateOperator,
|
43
45
|
) {
|
46
|
+
super();
|
44
47
|
makeObservable(this, {
|
45
48
|
projectionColumnState: observable,
|
46
49
|
lambdaParameterName: observable,
|
@@ -55,11 +58,6 @@ export class QueryBuilderAggregateColumnState implements Hashable {
|
|
55
58
|
this.projectionColumnState = projectionColumnState;
|
56
59
|
this.operator = operator;
|
57
60
|
}
|
58
|
-
|
59
|
-
get columnName(): string {
|
60
|
-
return this.projectionColumnState.columnName;
|
61
|
-
}
|
62
|
-
|
63
61
|
setColumnState(val: QueryBuilderProjectionColumnState): void {
|
64
62
|
this.projectionColumnState = val;
|
65
63
|
}
|
@@ -72,7 +70,7 @@ export class QueryBuilderAggregateColumnState implements Hashable {
|
|
72
70
|
this.operator = val;
|
73
71
|
}
|
74
72
|
|
75
|
-
|
73
|
+
getColumnType(): Type {
|
76
74
|
return this.operator.getReturnType(this);
|
77
75
|
}
|
78
76
|
|
@@ -82,6 +80,10 @@ export class QueryBuilderAggregateColumnState implements Hashable {
|
|
82
80
|
this.operator,
|
83
81
|
]);
|
84
82
|
}
|
83
|
+
|
84
|
+
get columnName(): string {
|
85
|
+
return this.projectionColumnState.columnName;
|
86
|
+
}
|
85
87
|
}
|
86
88
|
|
87
89
|
export class QueryBuilderAggregationState implements Hashable {
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import type { QueryBuilderTDSOlapOperator } from './operators/QueryBuilderTDSOlapOperator_.js';
|
18
|
+
import { QueryBuilderTDSOlapRankOperator_AverageRank } from './operators/QueryBuilderTDSOlapRankOperator_AverageRank_.js';
|
19
|
+
import { QueryBuilderTDSOlapRankOperator_DenseRank } from './operators/QueryBuilderTDSOlapRankOperator_DenseRank_.js';
|
20
|
+
import { QueryBuilderTDSOlapRankOperator_Rank } from './operators/QueryBuilderTDSOlapRankOperator_Rank_.js';
|
21
|
+
import { QueryBuilderTDSOlapRankOperator_RowNumber } from './operators/QueryBuilderTDSOlapRankOperator_RowNumber_.js';
|
22
|
+
import { QueryBuilderTDSOlapOperator_Sum } from './operators/QueryBuilderTDSOlapOperator_Sum.js';
|
23
|
+
import { QueryBuilderTDSOlapOperator_Count } from './operators/QueryBuilderTDSOlapOperator_Count.js';
|
24
|
+
import { QueryBuilderTDSOlapOperator_Max } from './operators/QueryBuilderTDSOlapOperator_Max.js';
|
25
|
+
import { QueryBuilderTDSOlapOperator_Min } from './operators/QueryBuilderTDSOlapOperator_Min.js';
|
26
|
+
import { QueryBuilderTDSOlapOperator_Average } from './operators/QueryBuilderTDSOlapOperator_Average.js';
|
27
|
+
|
28
|
+
export const getQueryBuilderCoreOlapGroupByOperators =
|
29
|
+
(): QueryBuilderTDSOlapOperator[] => [
|
30
|
+
new QueryBuilderTDSOlapOperator_Sum(),
|
31
|
+
new QueryBuilderTDSOlapOperator_Count(),
|
32
|
+
new QueryBuilderTDSOlapOperator_Max(),
|
33
|
+
new QueryBuilderTDSOlapOperator_Min(),
|
34
|
+
new QueryBuilderTDSOlapOperator_Average(),
|
35
|
+
new QueryBuilderTDSOlapRankOperator_AverageRank(),
|
36
|
+
new QueryBuilderTDSOlapRankOperator_DenseRank(),
|
37
|
+
new QueryBuilderTDSOlapRankOperator_Rank(),
|
38
|
+
new QueryBuilderTDSOlapRankOperator_RowNumber(),
|
39
|
+
];
|