@finos/legend-query-builder 3.0.7 → 3.1.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/__lib__/QueryBuilderDocumentation.d.ts +0 -1
- package/lib/__lib__/QueryBuilderDocumentation.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderDocumentation.js +0 -1
- package/lib/__lib__/QueryBuilderDocumentation.js.map +1 -1
- package/lib/__lib__/QueryBuilderEvent.d.ts +18 -0
- package/lib/__lib__/QueryBuilderEvent.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderEvent.js +20 -0
- package/lib/__lib__/QueryBuilderEvent.js.map +1 -1
- package/lib/__lib__/QueryBuilderTelemetryHelper.d.ts +14 -0
- package/lib/__lib__/QueryBuilderTelemetryHelper.d.ts.map +1 -1
- package/lib/__lib__/QueryBuilderTelemetryHelper.js +43 -1
- package/lib/__lib__/QueryBuilderTelemetryHelper.js.map +1 -1
- package/lib/components/QueryBuilder.d.ts +0 -1
- package/lib/components/QueryBuilder.d.ts.map +1 -1
- package/lib/components/QueryBuilder.js +74 -36
- package/lib/components/QueryBuilder.js.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts +0 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderDiffPanel.d.ts +0 -1
- package/lib/components/QueryBuilderDiffPanel.d.ts.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/QueryBuilderSideBar.d.ts +0 -1
- package/lib/components/QueryBuilderSideBar.d.ts.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/explorer/QueryBuilderFunctionsExplorerPanel.d.ts +0 -1
- package/lib/components/explorer/QueryBuilderFunctionsExplorerPanel.d.ts.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/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/QueryBuilderPostFilterPanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +13 -3
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderPostTDSPanel.d.ts.map +1 -1
- 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/QueryBuilderTDSPanel.d.ts +17 -0
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js +152 -15
- package/lib/components/fetch-structure/QueryBuilderTDSPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts +0 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.d.ts.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.js +2 -2
- package/lib/components/fetch-structure/QueryBuilderTDSWindowPanel.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/filter/QueryBuilderFilterPanel.js +14 -3
- package/lib/components/filter/QueryBuilderFilterPanel.js.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/LambdaParameterValuesEditor.d.ts +0 -1
- package/lib/components/shared/LambdaParameterValuesEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaParameterValuesEditor.js +2 -1
- package/lib/components/shared/LambdaParameterValuesEditor.js.map +1 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts +0 -1
- package/lib/components/shared/QueryBuilderVariableSelector.d.ts.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.d.ts +0 -1
- package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.d.ts +33 -0
- package/lib/graph/QueryBuilderMetaModelConst.d.ts.map +1 -1
- package/lib/graph/QueryBuilderMetaModelConst.js +34 -0
- package/lib/graph/QueryBuilderMetaModelConst.js.map +1 -1
- package/lib/graph-manager/QueryBuilderConst.d.ts +20 -0
- package/lib/graph-manager/QueryBuilderConst.d.ts.map +1 -0
- package/lib/graph-manager/QueryBuilderConst.js +21 -0
- package/lib/graph-manager/QueryBuilderConst.js.map +1 -0
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +3 -2
- package/lib/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +27 -14
- 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/package.json +4 -4
- package/lib/stores/QueryBuilderState.d.ts +3 -2
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +12 -6
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +11 -2
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderStateHashUtils.d.ts +32 -1
- package/lib/stores/QueryBuilderStateHashUtils.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateHashUtils.js +32 -0
- package/lib/stores/QueryBuilderStateHashUtils.js.map +1 -1
- package/lib/stores/QueryBuilderTextEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderTextEditorState.js +12 -6
- package/lib/stores/QueryBuilderTextEditorState.js.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
- package/lib/stores/explorer/QueryBuilderExplorerState.js +2 -2
- package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +1 -0
- package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts +2 -0
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js +14 -4
- package/lib/stores/fetch-structure/tds/QueryBuilderTDSState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.d.ts +38 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.js +54 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.d.ts +18 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.js +80 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts +8 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js +24 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js +23 -0
- package/lib/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.d.ts +22 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.js +61 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.d.ts +28 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.d.ts.map +1 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.js +55 -0
- package/lib/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.js.map +1 -0
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js +9 -1
- package/lib/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
- package/package.json +10 -10
- package/src/__lib__/QueryBuilderDocumentation.ts +0 -2
- package/src/__lib__/QueryBuilderEvent.ts +20 -0
- package/src/__lib__/QueryBuilderTelemetryHelper.ts +131 -1
- package/src/components/QueryBuilder.tsx +226 -188
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +96 -60
- package/src/components/fetch-structure/QueryBuilderTDSPanel.tsx +456 -94
- package/src/components/fetch-structure/QueryBuilderTDSWindowPanel.tsx +2 -4
- package/src/components/filter/QueryBuilderFilterPanel.tsx +102 -60
- package/src/components/shared/LambdaParameterValuesEditor.tsx +2 -1
- package/src/graph/QueryBuilderMetaModelConst.ts +34 -0
- package/src/graph-manager/QueryBuilderConst.ts +20 -0
- package/src/graph-manager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +10 -1
- package/src/graph-manager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +73 -28
- package/src/stores/QueryBuilderState.ts +12 -9
- package/src/stores/QueryBuilderStateBuilder.ts +33 -2
- package/src/stores/QueryBuilderStateHashUtils.ts +33 -0
- package/src/stores/QueryBuilderTextEditorState.ts +21 -14
- package/src/stores/explorer/QueryBuilderExplorerState.ts +2 -1
- package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +1 -0
- package/src/stores/fetch-structure/tds/QueryBuilderTDSState.ts +22 -3
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunction.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.ts +83 -0
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationState.ts +31 -0
- package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregationStateBuilder.ts +41 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunctionValueSpecificationBuilder.ts +175 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.ts +99 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.ts +98 -0
- package/src/stores/fetch-structure/tds/aggregation/calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.ts +98 -0
- package/src/stores/fetch-structure/tds/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +18 -1
- package/tsconfig.json +35 -0
|
@@ -169,24 +169,31 @@ export class QueryBuilderTextEditorState extends LambdaEditorState {
|
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
openModal(mode: QueryBuilderTextEditorMode): void {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
172
|
+
try {
|
|
173
|
+
const rawLambda = this.queryBuilderState.buildQuery();
|
|
174
|
+
if (mode === QueryBuilderTextEditorMode.TEXT) {
|
|
175
|
+
this.setQueryRawLambdaState(new QueryBuilderRawLambdaState(rawLambda));
|
|
176
|
+
}
|
|
177
|
+
if (mode === QueryBuilderTextEditorMode.JSON) {
|
|
178
|
+
this.setLambdaJson(
|
|
179
|
+
JSON.stringify(
|
|
180
|
+
pruneSourceInformation(
|
|
181
|
+
this.queryBuilderState.graphManagerState.graphManager.serializeRawValueSpecification(
|
|
182
|
+
rawLambda,
|
|
183
|
+
),
|
|
182
184
|
),
|
|
185
|
+
null,
|
|
186
|
+
DEFAULT_TAB_SIZE,
|
|
183
187
|
),
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
this.setMode(mode);
|
|
191
|
+
} catch (error) {
|
|
192
|
+
assertErrorThrown(error);
|
|
193
|
+
this.queryBuilderState.applicationStore.notificationService.notifyError(
|
|
194
|
+
error,
|
|
187
195
|
);
|
|
188
196
|
}
|
|
189
|
-
this.setMode(mode);
|
|
190
197
|
}
|
|
191
198
|
|
|
192
199
|
*closeModal(): GeneratorFn<void> {
|
|
@@ -193,12 +193,13 @@ export class QueryBuilderExplorerTreeSubTypeNodeData extends QueryBuilderExplore
|
|
|
193
193
|
export const buildPropertyExpressionFromExplorerTreeNodeData = (
|
|
194
194
|
node: QueryBuilderExplorerTreePropertyNodeData,
|
|
195
195
|
explorerState: QueryBuilderExplorerState,
|
|
196
|
+
lambdaParameterName?: string,
|
|
196
197
|
): AbstractPropertyExpression => {
|
|
197
198
|
const treeData = explorerState.nonNullableTreeData;
|
|
198
199
|
const propertySearchIndexedTreeNodes =
|
|
199
200
|
explorerState.propertySearchState.indexedExplorerTreeNodes;
|
|
200
201
|
const projectionColumnLambdaVariable = new VariableExpression(
|
|
201
|
-
DEFAULT_LAMBDA_VARIABLE_NAME,
|
|
202
|
+
lambdaParameterName ?? DEFAULT_LAMBDA_VARIABLE_NAME,
|
|
202
203
|
Multiplicity.ONE,
|
|
203
204
|
);
|
|
204
205
|
const propertyExpression = new AbstractPropertyExpression('');
|
|
@@ -62,6 +62,7 @@ export class QueryBuilderFetchStructureState {
|
|
|
62
62
|
break;
|
|
63
63
|
}
|
|
64
64
|
case FETCH_STRUCTURE_IMPLEMENTATION.GRAPH_FETCH: {
|
|
65
|
+
this.queryBuilderState.setIsCalendarEnabled(false);
|
|
65
66
|
this.implementation = new QueryBuilderGraphFetchTreeState(
|
|
66
67
|
this.queryBuilderState,
|
|
67
68
|
this,
|
|
@@ -101,6 +101,8 @@ import { getQueryBuilderCoreWindowOperators } from './window/QueryBuilderWindowG
|
|
|
101
101
|
import type { QueryBuilderTDSColumnState } from './QueryBuilderTDSColumnState.js';
|
|
102
102
|
import { QUERY_BUILDER_SETTING_KEY } from '../../../__lib__/QueryBuilderSetting.js';
|
|
103
103
|
import type { ExportDataInfo } from '../../QueryBuilderResultState.js';
|
|
104
|
+
import type { QueryBuilderAggregateCalendarFunction } from './aggregation/QueryBuilderAggregateCalendarFunction.js';
|
|
105
|
+
import { getQueryBuilderCoreAggregrationCalendarFunctions } from './aggregation/QueryBuilderAggregateCalendarFunctionLoader.js';
|
|
104
106
|
|
|
105
107
|
// TODO: should we support raw once externalize() is supported on TDS ?
|
|
106
108
|
export enum TDS_EXECUTION_SERIALIZATION_FORMAT {
|
|
@@ -124,6 +126,8 @@ export class QueryBuilderTDSState
|
|
|
124
126
|
getQueryBuilderCorePostFilterOperators();
|
|
125
127
|
aggregationOperators: QueryBuilderAggregateOperator[] =
|
|
126
128
|
getQueryBuilderCoreAggregrationOperators();
|
|
129
|
+
aggregationCalendarFunctions: QueryBuilderAggregateCalendarFunction[] =
|
|
130
|
+
getQueryBuilderCoreAggregrationCalendarFunctions();
|
|
127
131
|
windowFuncOperators: QueryBuilderTDS_WindowOperator[] =
|
|
128
132
|
getQueryBuilderCoreWindowOperators();
|
|
129
133
|
|
|
@@ -158,6 +162,7 @@ export class QueryBuilderTDSState
|
|
|
158
162
|
this.aggregationState = new QueryBuilderAggregationState(
|
|
159
163
|
this,
|
|
160
164
|
this.aggregationOperators,
|
|
165
|
+
this.aggregationCalendarFunctions,
|
|
161
166
|
);
|
|
162
167
|
this.windowState = new QueryBuilderWindowState(
|
|
163
168
|
this,
|
|
@@ -268,19 +273,33 @@ export class QueryBuilderTDSState
|
|
|
268
273
|
}
|
|
269
274
|
|
|
270
275
|
get fetchStructureValidationIssues(): string[] {
|
|
276
|
+
const validationIssues: string[] = [];
|
|
277
|
+
const hasInValidCalendarAggregateColumns =
|
|
278
|
+
this.aggregationState.columns.some(
|
|
279
|
+
(column) =>
|
|
280
|
+
column.calendarFunction &&
|
|
281
|
+
column.calendarFunction.dateColumn === undefined,
|
|
282
|
+
);
|
|
283
|
+
if (hasInValidCalendarAggregateColumns) {
|
|
284
|
+
validationIssues.push(
|
|
285
|
+
'Query has calendar function with no date column specified',
|
|
286
|
+
);
|
|
287
|
+
}
|
|
271
288
|
const hasDuplicatedProjectionColumns = this.projectionColumns.some(
|
|
272
289
|
(column) =>
|
|
273
290
|
this.projectionColumns.filter((c) => c.columnName === column.columnName)
|
|
274
291
|
.length > 1,
|
|
275
292
|
);
|
|
276
293
|
if (hasDuplicatedProjectionColumns) {
|
|
277
|
-
|
|
294
|
+
validationIssues.push('Query has duplicated projection columns');
|
|
295
|
+
return validationIssues;
|
|
278
296
|
}
|
|
279
297
|
const hasNoProjectionColumns = this.projectionColumns.length === 0;
|
|
280
298
|
if (hasNoProjectionColumns) {
|
|
281
|
-
|
|
299
|
+
validationIssues.push('Query has no projection columns');
|
|
300
|
+
return validationIssues;
|
|
282
301
|
}
|
|
283
|
-
return
|
|
302
|
+
return validationIssues;
|
|
284
303
|
}
|
|
285
304
|
|
|
286
305
|
get allValidationIssues(): string[] {
|
|
@@ -0,0 +1,98 @@
|
|
|
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, guaranteeType } from '@finos/legend-shared';
|
|
18
|
+
import type {
|
|
19
|
+
AbstractPropertyExpression,
|
|
20
|
+
PrimitiveInstanceValue,
|
|
21
|
+
SimpleFunctionExpression,
|
|
22
|
+
ValueSpecification,
|
|
23
|
+
} from '@finos/legend-graph';
|
|
24
|
+
import {
|
|
25
|
+
type QueryBuilderProjectionColumnState,
|
|
26
|
+
QueryBuilderSimpleProjectionColumnState,
|
|
27
|
+
} from '../projection/QueryBuilderProjectionColumnState.js';
|
|
28
|
+
import type { QueryBuilderAggregateColumnState } from './QueryBuilderAggregationState.js';
|
|
29
|
+
import { computed, makeObservable, observable, action } from 'mobx';
|
|
30
|
+
import type { QUERY_BUILDER_CALENDAR_TYPE } from '../../../../graph-manager/QueryBuilderConst.js';
|
|
31
|
+
import { DEFAULT_LAMBDA_VARIABLE_NAME } from '../../../QueryBuilderConfig.js';
|
|
32
|
+
|
|
33
|
+
export abstract class QueryBuilderAggregateCalendarFunction
|
|
34
|
+
implements Hashable
|
|
35
|
+
{
|
|
36
|
+
dateColumn?: AbstractPropertyExpression | undefined;
|
|
37
|
+
calendarType!: QUERY_BUILDER_CALENDAR_TYPE;
|
|
38
|
+
endDate!: PrimitiveInstanceValue;
|
|
39
|
+
lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
|
|
40
|
+
|
|
41
|
+
constructor() {
|
|
42
|
+
makeObservable(this, {
|
|
43
|
+
dateColumn: observable,
|
|
44
|
+
lambdaParameterName: observable,
|
|
45
|
+
calendarType: observable,
|
|
46
|
+
endDate: observable,
|
|
47
|
+
setDateColumn: action,
|
|
48
|
+
setCalendarType: action,
|
|
49
|
+
setLambdaParameterName: action,
|
|
50
|
+
setEndDate: action,
|
|
51
|
+
hashCode: computed,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
abstract getLabel(): string;
|
|
56
|
+
|
|
57
|
+
abstract isCompatibleWithColumn(
|
|
58
|
+
projectionColumnState: QueryBuilderProjectionColumnState,
|
|
59
|
+
): boolean;
|
|
60
|
+
|
|
61
|
+
abstract buildCalendarFunctionExpression(
|
|
62
|
+
propertyExpression: AbstractPropertyExpression,
|
|
63
|
+
): ValueSpecification;
|
|
64
|
+
|
|
65
|
+
buildCalendarFunctionExpressionFromState(
|
|
66
|
+
aggregateColumnState: QueryBuilderAggregateColumnState,
|
|
67
|
+
): ValueSpecification {
|
|
68
|
+
return this.buildCalendarFunctionExpression(
|
|
69
|
+
guaranteeType(
|
|
70
|
+
aggregateColumnState.projectionColumnState,
|
|
71
|
+
QueryBuilderSimpleProjectionColumnState,
|
|
72
|
+
).propertyExpressionState.propertyExpression,
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
abstract updateAggregateColumnState(
|
|
77
|
+
expression: SimpleFunctionExpression,
|
|
78
|
+
aggregationColumnState: QueryBuilderAggregateColumnState,
|
|
79
|
+
): void;
|
|
80
|
+
|
|
81
|
+
setDateColumn(val: AbstractPropertyExpression): void {
|
|
82
|
+
this.dateColumn = val;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
setLambdaParameterName(val: string): void {
|
|
86
|
+
this.lambdaParameterName = val;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
setCalendarType(val: QUERY_BUILDER_CALENDAR_TYPE): void {
|
|
90
|
+
this.calendarType = val;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
setEndDate(val: PrimitiveInstanceValue): void {
|
|
94
|
+
this.endDate = val;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
abstract get hashCode(): string;
|
|
98
|
+
}
|
package/src/stores/fetch-structure/tds/aggregation/QueryBuilderAggregateCalendarFunctionLoader.ts
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
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 { QueryBuilderAggregateCalendarFunction_Ytd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Ytd.js';
|
|
18
|
+
import { QueryBuilderAggregateCalendarFunction_Annualized } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Annualized.js';
|
|
19
|
+
import type { QueryBuilderAggregateCalendarFunction } from './QueryBuilderAggregateCalendarFunction.js';
|
|
20
|
+
import { QueryBuilderAggregateCalendarFunction_Cme } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cme.js';
|
|
21
|
+
import { QueryBuilderAggregateCalendarFunction_Cw } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw.js';
|
|
22
|
+
import { QueryBuilderAggregateCalendarFunction_Cw_Fm } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cw_Fm.js';
|
|
23
|
+
import { QueryBuilderAggregateCalendarFunction_Cy_Minus2 } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus2.js';
|
|
24
|
+
import { QueryBuilderAggregateCalendarFunction_Cy_Minus3 } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Cy_Minus3.js';
|
|
25
|
+
import { QueryBuilderAggregateCalendarFunction_Mtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Mtd.js';
|
|
26
|
+
import { QueryBuilderAggregateCalendarFunction_P12Wa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wa.js';
|
|
27
|
+
import { QueryBuilderAggregateCalendarFunction_P12Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P12Wtd.js';
|
|
28
|
+
import { QueryBuilderAggregateCalendarFunction_P4Wa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wa.js';
|
|
29
|
+
import { QueryBuilderAggregateCalendarFunction_P4Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P4Wtd.js';
|
|
30
|
+
import { QueryBuilderAggregateCalendarFunction_P52Wa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wa.js';
|
|
31
|
+
import { QueryBuilderAggregateCalendarFunction_P52Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_P52Wtd.js';
|
|
32
|
+
import { QueryBuilderAggregateCalendarFunction_Pma } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pma.js';
|
|
33
|
+
import { QueryBuilderAggregateCalendarFunction_Pmtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pmtd.js';
|
|
34
|
+
import { QueryBuilderAggregateCalendarFunction_Pqtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pqtd.js';
|
|
35
|
+
import { QueryBuilderAggregateCalendarFunction_PriorDay } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorDay.js';
|
|
36
|
+
import { QueryBuilderAggregateCalendarFunction_PriorYear } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_PriorYear.js';
|
|
37
|
+
import { QueryBuilderAggregateCalendarFunction_Pw } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw.js';
|
|
38
|
+
import { QueryBuilderAggregateCalendarFunction_Pw_Fm } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pw_Fm.js';
|
|
39
|
+
import { QueryBuilderAggregateCalendarFunction_Pwa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwa.js';
|
|
40
|
+
import { QueryBuilderAggregateCalendarFunction_Pwtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pwtd.js';
|
|
41
|
+
import { QueryBuilderAggregateCalendarFunction_Pymtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pymtd.js';
|
|
42
|
+
import { QueryBuilderAggregateCalendarFunction_Pyqtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pyqtd.js';
|
|
43
|
+
import { QueryBuilderAggregateCalendarFunction_Pytd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pytd.js';
|
|
44
|
+
import { QueryBuilderAggregateCalendarFunction_Pywa } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywa.js';
|
|
45
|
+
import { QueryBuilderAggregateCalendarFunction_Pywtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Pywtd.js';
|
|
46
|
+
import { QueryBuilderAggregateCalendarFunction_Qtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Qtd.js';
|
|
47
|
+
import { QueryBuilderAggregateCalendarFunction_ReportEndDay } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_ReportEndDay.js';
|
|
48
|
+
import { QueryBuilderAggregateCalendarFunction_Wtd } from './calendarFunctions/QueryBuilderAggregateCalendarFunction_Wtd.js';
|
|
49
|
+
|
|
50
|
+
export const getQueryBuilderCoreAggregrationCalendarFunctions =
|
|
51
|
+
(): QueryBuilderAggregateCalendarFunction[] => [
|
|
52
|
+
new QueryBuilderAggregateCalendarFunction_Annualized(),
|
|
53
|
+
new QueryBuilderAggregateCalendarFunction_Ytd(),
|
|
54
|
+
new QueryBuilderAggregateCalendarFunction_Cme(),
|
|
55
|
+
new QueryBuilderAggregateCalendarFunction_Cw(),
|
|
56
|
+
new QueryBuilderAggregateCalendarFunction_Cw_Fm(),
|
|
57
|
+
new QueryBuilderAggregateCalendarFunction_Cy_Minus2(),
|
|
58
|
+
new QueryBuilderAggregateCalendarFunction_Cy_Minus3(),
|
|
59
|
+
new QueryBuilderAggregateCalendarFunction_Mtd(),
|
|
60
|
+
new QueryBuilderAggregateCalendarFunction_P12Wa(),
|
|
61
|
+
new QueryBuilderAggregateCalendarFunction_P12Wtd(),
|
|
62
|
+
new QueryBuilderAggregateCalendarFunction_P4Wa(),
|
|
63
|
+
new QueryBuilderAggregateCalendarFunction_P4Wtd(),
|
|
64
|
+
new QueryBuilderAggregateCalendarFunction_P52Wa(),
|
|
65
|
+
new QueryBuilderAggregateCalendarFunction_P52Wtd(),
|
|
66
|
+
new QueryBuilderAggregateCalendarFunction_Pma(),
|
|
67
|
+
new QueryBuilderAggregateCalendarFunction_Pmtd(),
|
|
68
|
+
new QueryBuilderAggregateCalendarFunction_Pqtd(),
|
|
69
|
+
new QueryBuilderAggregateCalendarFunction_PriorDay(),
|
|
70
|
+
new QueryBuilderAggregateCalendarFunction_PriorYear(),
|
|
71
|
+
new QueryBuilderAggregateCalendarFunction_Pw(),
|
|
72
|
+
new QueryBuilderAggregateCalendarFunction_Pw_Fm(),
|
|
73
|
+
new QueryBuilderAggregateCalendarFunction_Pwa(),
|
|
74
|
+
new QueryBuilderAggregateCalendarFunction_Pwtd(),
|
|
75
|
+
new QueryBuilderAggregateCalendarFunction_Pymtd(),
|
|
76
|
+
new QueryBuilderAggregateCalendarFunction_Pyqtd(),
|
|
77
|
+
new QueryBuilderAggregateCalendarFunction_Pytd(),
|
|
78
|
+
new QueryBuilderAggregateCalendarFunction_Pywa(),
|
|
79
|
+
new QueryBuilderAggregateCalendarFunction_Pywtd(),
|
|
80
|
+
new QueryBuilderAggregateCalendarFunction_Qtd(),
|
|
81
|
+
new QueryBuilderAggregateCalendarFunction_ReportEndDay(),
|
|
82
|
+
new QueryBuilderAggregateCalendarFunction_Wtd(),
|
|
83
|
+
];
|
|
@@ -28,6 +28,7 @@ import type { QueryBuilderAggregateOperator } from './QueryBuilderAggregateOpera
|
|
|
28
28
|
import type { QueryBuilderProjectionColumnState } from '../projection/QueryBuilderProjectionColumnState.js';
|
|
29
29
|
import { QUERY_BUILDER_STATE_HASH_STRUCTURE } from '../../../QueryBuilderStateHashUtils.js';
|
|
30
30
|
import { QueryBuilderTDSColumnState } from '../QueryBuilderTDSColumnState.js';
|
|
31
|
+
import type { QueryBuilderAggregateCalendarFunction } from './QueryBuilderAggregateCalendarFunction.js';
|
|
31
32
|
|
|
32
33
|
export class QueryBuilderAggregateColumnState
|
|
33
34
|
extends QueryBuilderTDSColumnState
|
|
@@ -37,6 +38,8 @@ export class QueryBuilderAggregateColumnState
|
|
|
37
38
|
projectionColumnState: QueryBuilderProjectionColumnState;
|
|
38
39
|
lambdaParameterName: string = DEFAULT_LAMBDA_VARIABLE_NAME;
|
|
39
40
|
operator: QueryBuilderAggregateOperator;
|
|
41
|
+
calendarFunction?: QueryBuilderAggregateCalendarFunction | undefined;
|
|
42
|
+
hideCalendarColumnState = true;
|
|
40
43
|
|
|
41
44
|
constructor(
|
|
42
45
|
aggregationState: QueryBuilderAggregationState,
|
|
@@ -47,10 +50,14 @@ export class QueryBuilderAggregateColumnState
|
|
|
47
50
|
makeObservable(this, {
|
|
48
51
|
projectionColumnState: observable,
|
|
49
52
|
lambdaParameterName: observable,
|
|
53
|
+
calendarFunction: observable,
|
|
54
|
+
hideCalendarColumnState: observable,
|
|
50
55
|
operator: observable,
|
|
56
|
+
setHideCalendarColumnState: action,
|
|
51
57
|
setColumnState: action,
|
|
52
58
|
setLambdaParameterName: action,
|
|
53
59
|
setOperator: action,
|
|
60
|
+
setCalendarFunction: action,
|
|
54
61
|
hashCode: computed,
|
|
55
62
|
});
|
|
56
63
|
|
|
@@ -58,6 +65,7 @@ export class QueryBuilderAggregateColumnState
|
|
|
58
65
|
this.projectionColumnState = projectionColumnState;
|
|
59
66
|
this.operator = operator;
|
|
60
67
|
}
|
|
68
|
+
|
|
61
69
|
setColumnState(val: QueryBuilderProjectionColumnState): void {
|
|
62
70
|
this.projectionColumnState = val;
|
|
63
71
|
}
|
|
@@ -66,6 +74,16 @@ export class QueryBuilderAggregateColumnState
|
|
|
66
74
|
this.lambdaParameterName = val;
|
|
67
75
|
}
|
|
68
76
|
|
|
77
|
+
setHideCalendarColumnState(val: boolean): void {
|
|
78
|
+
this.hideCalendarColumnState = val;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
setCalendarFunction(
|
|
82
|
+
val: QueryBuilderAggregateCalendarFunction | undefined,
|
|
83
|
+
): void {
|
|
84
|
+
this.calendarFunction = val;
|
|
85
|
+
}
|
|
86
|
+
|
|
69
87
|
setOperator(val: QueryBuilderAggregateOperator): void {
|
|
70
88
|
this.operator = val;
|
|
71
89
|
}
|
|
@@ -78,6 +96,7 @@ export class QueryBuilderAggregateColumnState
|
|
|
78
96
|
return hashArray([
|
|
79
97
|
QUERY_BUILDER_STATE_HASH_STRUCTURE.AGGREGATE_COLUMN_STATE,
|
|
80
98
|
this.operator,
|
|
99
|
+
this.calendarFunction ?? '',
|
|
81
100
|
]);
|
|
82
101
|
}
|
|
83
102
|
|
|
@@ -89,22 +108,26 @@ export class QueryBuilderAggregateColumnState
|
|
|
89
108
|
export class QueryBuilderAggregationState implements Hashable {
|
|
90
109
|
readonly tdsState: QueryBuilderTDSState;
|
|
91
110
|
readonly operators: QueryBuilderAggregateOperator[] = [];
|
|
111
|
+
readonly calendarFunctions: QueryBuilderAggregateCalendarFunction[];
|
|
92
112
|
columns: QueryBuilderAggregateColumnState[] = [];
|
|
93
113
|
|
|
94
114
|
constructor(
|
|
95
115
|
tdsState: QueryBuilderTDSState,
|
|
96
116
|
operators: QueryBuilderAggregateOperator[],
|
|
117
|
+
calendarFunctions: QueryBuilderAggregateCalendarFunction[],
|
|
97
118
|
) {
|
|
98
119
|
makeObservable(this, {
|
|
99
120
|
columns: observable,
|
|
100
121
|
removeColumn: action,
|
|
101
122
|
addColumn: action,
|
|
102
123
|
changeColumnAggregateOperator: action,
|
|
124
|
+
disableCalendar: action,
|
|
103
125
|
hashCode: computed,
|
|
104
126
|
});
|
|
105
127
|
|
|
106
128
|
this.tdsState = tdsState;
|
|
107
129
|
this.operators = operators;
|
|
130
|
+
this.calendarFunctions = calendarFunctions;
|
|
108
131
|
}
|
|
109
132
|
|
|
110
133
|
removeColumn(val: QueryBuilderAggregateColumnState): void {
|
|
@@ -163,6 +186,14 @@ export class QueryBuilderAggregationState implements Hashable {
|
|
|
163
186
|
}
|
|
164
187
|
}
|
|
165
188
|
|
|
189
|
+
disableCalendar(): void {
|
|
190
|
+
this.tdsState.queryBuilderState.setIsCalendarEnabled(false);
|
|
191
|
+
this.columns.forEach((column) => {
|
|
192
|
+
column.setCalendarFunction(undefined);
|
|
193
|
+
column.setHideCalendarColumnState(true);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
|
|
166
197
|
get hashCode(): string {
|
|
167
198
|
return hashArray([
|
|
168
199
|
QUERY_BUILDER_STATE_HASH_STRUCTURE.AGGREGATION_STATE,
|
|
@@ -104,6 +104,28 @@ export const processTDSAggregateExpression = (
|
|
|
104
104
|
`Can't process agg() lambda: only support agg() lambda body with 1 expression`,
|
|
105
105
|
);
|
|
106
106
|
|
|
107
|
+
let calendarExpression: SimpleFunctionExpression | undefined;
|
|
108
|
+
if (queryBuilderState.isCalendarEnabled) {
|
|
109
|
+
const childExpression = expression.parametersValues[0];
|
|
110
|
+
assertType(
|
|
111
|
+
childExpression,
|
|
112
|
+
LambdaFunctionInstanceValue,
|
|
113
|
+
`Can't process agg() expression: agg() expects argument #0 to be a lambda function`,
|
|
114
|
+
);
|
|
115
|
+
const lambdaFunc1 = guaranteeNonNullable(
|
|
116
|
+
childExpression.values[0],
|
|
117
|
+
`Can't process agg() lambda: agg() lambda function is missing`,
|
|
118
|
+
);
|
|
119
|
+
assertTrue(
|
|
120
|
+
lambdaFunc1.expressionSequence.length === 1,
|
|
121
|
+
`Can't process agg() lambda: only support agg() lambda body with 1 expression`,
|
|
122
|
+
);
|
|
123
|
+
calendarExpression =
|
|
124
|
+
lambdaFunc1.expressionSequence[0] instanceof SimpleFunctionExpression
|
|
125
|
+
? lambdaFunc1.expressionSequence[0]
|
|
126
|
+
: undefined;
|
|
127
|
+
}
|
|
128
|
+
|
|
107
129
|
assertTrue(
|
|
108
130
|
lambdaFunc.functionType.parameters.length === 1,
|
|
109
131
|
`Can't process agg() lambda: only support agg() lambda with 1 parameter`,
|
|
@@ -128,6 +150,25 @@ export const processTDSAggregateExpression = (
|
|
|
128
150
|
);
|
|
129
151
|
if (aggregateColumnState) {
|
|
130
152
|
aggregationState.addColumn(aggregateColumnState);
|
|
153
|
+
if (
|
|
154
|
+
queryBuilderState.isCalendarEnabled &&
|
|
155
|
+
calendarExpression !== undefined
|
|
156
|
+
) {
|
|
157
|
+
for (const calendarFunction of aggregationState.calendarFunctions) {
|
|
158
|
+
// NOTE: this allow plugin author to either return `undefined` or throw error
|
|
159
|
+
// if there is a problem with building the lambda. Either case, the plugin is
|
|
160
|
+
// considered as not supporting the lambda.
|
|
161
|
+
returnUndefOnError(() =>
|
|
162
|
+
calendarFunction.updateAggregateColumnState(
|
|
163
|
+
guaranteeNonNullable(calendarExpression),
|
|
164
|
+
aggregateColumnState,
|
|
165
|
+
),
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (!aggregateColumnState.calendarFunction) {
|
|
170
|
+
aggregateColumnState.setHideCalendarColumnState(true);
|
|
171
|
+
}
|
|
131
172
|
return;
|
|
132
173
|
}
|
|
133
174
|
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2020-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
type ValueSpecification,
|
|
19
|
+
SimpleFunctionExpression,
|
|
20
|
+
extractElementNameFromPath,
|
|
21
|
+
matchFunctionName,
|
|
22
|
+
AbstractPropertyExpression,
|
|
23
|
+
PrimitiveInstanceValue,
|
|
24
|
+
GenericType,
|
|
25
|
+
GenericTypeExplicitReference,
|
|
26
|
+
PrimitiveType,
|
|
27
|
+
PRIMITIVE_TYPE,
|
|
28
|
+
VariableExpression,
|
|
29
|
+
} from '@finos/legend-graph';
|
|
30
|
+
import {
|
|
31
|
+
guaranteeType,
|
|
32
|
+
assertTrue,
|
|
33
|
+
UnsupportedOperationError,
|
|
34
|
+
} from '@finos/legend-shared';
|
|
35
|
+
import type { QueryBuilderAggregateColumnState } from '../QueryBuilderAggregationState.js';
|
|
36
|
+
import { type QueryBuilderAggregateCalendarFunction } from '../QueryBuilderAggregateCalendarFunction.js';
|
|
37
|
+
import { QUERY_BUILDER_CALENDAR_TYPE } from '../../../../../graph-manager/QueryBuilderConst.js';
|
|
38
|
+
|
|
39
|
+
export const buildCalendarFunctionExpression = (
|
|
40
|
+
calendarFunctionFullPath: string,
|
|
41
|
+
dateColumn: AbstractPropertyExpression | undefined,
|
|
42
|
+
calendarType: QUERY_BUILDER_CALENDAR_TYPE,
|
|
43
|
+
endDate: PrimitiveInstanceValue,
|
|
44
|
+
targetColumn: AbstractPropertyExpression,
|
|
45
|
+
): ValueSpecification => {
|
|
46
|
+
const expression = new SimpleFunctionExpression(
|
|
47
|
+
extractElementNameFromPath(calendarFunctionFullPath),
|
|
48
|
+
);
|
|
49
|
+
if (dateColumn) {
|
|
50
|
+
expression.parametersValues.push(dateColumn);
|
|
51
|
+
} else {
|
|
52
|
+
throw new UnsupportedOperationError(
|
|
53
|
+
`Please specify date column for calendar Function for column ${targetColumn.func.value.name}`,
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const calendarTypeParameter = new PrimitiveInstanceValue(
|
|
57
|
+
GenericTypeExplicitReference.create(new GenericType(PrimitiveType.STRING)),
|
|
58
|
+
);
|
|
59
|
+
calendarTypeParameter.values = [calendarType];
|
|
60
|
+
expression.parametersValues.push(calendarTypeParameter);
|
|
61
|
+
expression.parametersValues.push(endDate);
|
|
62
|
+
expression.parametersValues.push(targetColumn);
|
|
63
|
+
return expression;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const updateAggregateColumnState = (
|
|
67
|
+
expression: SimpleFunctionExpression,
|
|
68
|
+
calendarFunctionFullPath: string,
|
|
69
|
+
calendarFunction: QueryBuilderAggregateCalendarFunction,
|
|
70
|
+
aggregateColumnState: QueryBuilderAggregateColumnState,
|
|
71
|
+
): void => {
|
|
72
|
+
if (matchFunctionName(expression.functionName, calendarFunctionFullPath)) {
|
|
73
|
+
assertTrue(
|
|
74
|
+
expression.parametersValues.length === 4,
|
|
75
|
+
`Can't process ${extractElementNameFromPath(
|
|
76
|
+
calendarFunctionFullPath,
|
|
77
|
+
)}() expression: ${extractElementNameFromPath(
|
|
78
|
+
calendarFunctionFullPath,
|
|
79
|
+
)}() expects four arguments`,
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const dateColumn = guaranteeType(
|
|
83
|
+
expression.parametersValues[0],
|
|
84
|
+
AbstractPropertyExpression,
|
|
85
|
+
`Can't process ${extractElementNameFromPath(
|
|
86
|
+
calendarFunctionFullPath,
|
|
87
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
88
|
+
calendarFunctionFullPath,
|
|
89
|
+
)}() with first parameter as property expression`,
|
|
90
|
+
);
|
|
91
|
+
assertTrue(
|
|
92
|
+
dateColumn.func.value.genericType.value.rawType.name ===
|
|
93
|
+
PRIMITIVE_TYPE.STRICTDATE ||
|
|
94
|
+
dateColumn.func.value.genericType.value.rawType.name ===
|
|
95
|
+
PRIMITIVE_TYPE.DATE,
|
|
96
|
+
|
|
97
|
+
`Can't process ${extractElementNameFromPath(
|
|
98
|
+
calendarFunctionFullPath,
|
|
99
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
100
|
+
calendarFunctionFullPath,
|
|
101
|
+
)}() with first parameter as property expression of type StrictDate`,
|
|
102
|
+
);
|
|
103
|
+
const lambdaParameterName = guaranteeType(
|
|
104
|
+
dateColumn.parametersValues[0],
|
|
105
|
+
VariableExpression,
|
|
106
|
+
).name;
|
|
107
|
+
calendarFunction.setLambdaParameterName(lambdaParameterName);
|
|
108
|
+
|
|
109
|
+
const calendarTypeParameter = guaranteeType(
|
|
110
|
+
expression.parametersValues[1],
|
|
111
|
+
PrimitiveInstanceValue,
|
|
112
|
+
`Can't process ${extractElementNameFromPath(
|
|
113
|
+
calendarFunctionFullPath,
|
|
114
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
115
|
+
calendarFunctionFullPath,
|
|
116
|
+
)}() with second parameter as PrimitiveInstancevalue`,
|
|
117
|
+
);
|
|
118
|
+
assertTrue(
|
|
119
|
+
Object.values(QUERY_BUILDER_CALENDAR_TYPE).find(
|
|
120
|
+
(val) => val === calendarTypeParameter.values[0],
|
|
121
|
+
) !== undefined,
|
|
122
|
+
`Can't process ${extractElementNameFromPath(
|
|
123
|
+
calendarFunctionFullPath,
|
|
124
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
125
|
+
calendarFunctionFullPath,
|
|
126
|
+
)}() calendar types NY and LDN`,
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
const endDate = guaranteeType(
|
|
130
|
+
expression.parametersValues[2],
|
|
131
|
+
PrimitiveInstanceValue,
|
|
132
|
+
`Can't process ${extractElementNameFromPath(
|
|
133
|
+
calendarFunctionFullPath,
|
|
134
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
135
|
+
calendarFunctionFullPath,
|
|
136
|
+
)}() with third parameter as PrimitiveInstancevalue`,
|
|
137
|
+
);
|
|
138
|
+
assertTrue(
|
|
139
|
+
endDate.genericType.value.rawType.name === PRIMITIVE_TYPE.STRICTDATE ||
|
|
140
|
+
dateColumn.func.value.genericType.value.rawType.name ===
|
|
141
|
+
PRIMITIVE_TYPE.DATE,
|
|
142
|
+
|
|
143
|
+
`Can't process ${extractElementNameFromPath(
|
|
144
|
+
calendarFunctionFullPath,
|
|
145
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
146
|
+
calendarFunctionFullPath,
|
|
147
|
+
)}() with third parameter of type StrictDate`,
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
guaranteeType(
|
|
151
|
+
expression.parametersValues[3],
|
|
152
|
+
AbstractPropertyExpression,
|
|
153
|
+
`Can't process ${extractElementNameFromPath(
|
|
154
|
+
calendarFunctionFullPath,
|
|
155
|
+
)}() expression: only support ${extractElementNameFromPath(
|
|
156
|
+
calendarFunctionFullPath,
|
|
157
|
+
)}() fourth parameter as property expression`,
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
calendarFunction.calendarType = calendarTypeParameter
|
|
161
|
+
.values[0] as QUERY_BUILDER_CALENDAR_TYPE;
|
|
162
|
+
calendarFunction.endDate = endDate;
|
|
163
|
+
calendarFunction.dateColumn = dateColumn;
|
|
164
|
+
assertTrue(
|
|
165
|
+
calendarFunction.isCompatibleWithColumn(
|
|
166
|
+
aggregateColumnState.projectionColumnState,
|
|
167
|
+
),
|
|
168
|
+
`Can't process ${extractElementNameFromPath(
|
|
169
|
+
calendarFunctionFullPath,
|
|
170
|
+
)}() expression: property is not compatible with calendar function`,
|
|
171
|
+
);
|
|
172
|
+
aggregateColumnState.setHideCalendarColumnState(false);
|
|
173
|
+
aggregateColumnState.setCalendarFunction(calendarFunction);
|
|
174
|
+
}
|
|
175
|
+
};
|