@finos/legend-application-repl 0.0.52 → 0.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/dataCube/DataCube.d.ts.map +1 -1
- package/lib/components/dataCube/DataCube.js +3 -2
- package/lib/components/dataCube/DataCube.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditor.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditor.js +10 -4
- package/lib/components/dataCube/editor/DataCubeEditor.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js +22 -3
- package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.js +13 -9
- package/lib/components/dataCube/editor/DataCubeEditorColumnsPanel.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.d.ts +6 -2
- package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.js +13 -17
- package/lib/components/dataCube/editor/DataCubeEditorColumnsSelector.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorSortsPanel.js +1 -1
- package/lib/components/dataCube/{editor/DataCubeEditorExtendedColumnsPanel.d.ts → extend/DataCubeColumnEditor.d.ts} +4 -4
- package/lib/components/dataCube/extend/DataCubeColumnEditor.d.ts.map +1 -0
- package/lib/components/dataCube/extend/DataCubeColumnEditor.js +165 -0
- package/lib/components/dataCube/extend/DataCubeColumnEditor.js.map +1 -0
- package/lib/components/dataCube/filter/{DataCubeEditorFilter.d.ts → DataCubeFilterEditor.d.ts} +1 -1
- package/lib/components/dataCube/filter/DataCubeFilterEditor.d.ts.map +1 -0
- package/lib/components/dataCube/filter/{DataCubeEditorFilter.js → DataCubeFilterEditor.js} +1 -1
- package/lib/components/dataCube/filter/{DataCubeEditorFilter.js.map → DataCubeFilterEditor.js.map} +1 -1
- package/lib/components/repl/PureCodeEditor.d.ts +22 -0
- package/lib/components/repl/PureCodeEditor.d.ts.map +1 -0
- package/lib/components/repl/PureCodeEditor.js +64 -0
- package/lib/components/repl/PureCodeEditor.js.map +1 -0
- package/lib/index.css +1 -1
- package/lib/package.json +4 -4
- package/lib/server/REPLEngine.d.ts +27 -17
- package/lib/server/REPLEngine.d.ts.map +1 -1
- package/lib/server/REPLEngine.js +3 -31
- package/lib/server/REPLEngine.js.map +1 -1
- package/lib/server/REPLServerClient.d.ts +3 -2
- package/lib/server/REPLServerClient.d.ts.map +1 -1
- package/lib/server/REPLServerClient.js +4 -1
- package/lib/server/REPLServerClient.js.map +1 -1
- package/lib/stores/LayoutManagerState.d.ts +1 -1
- package/lib/stores/LayoutManagerState.d.ts.map +1 -1
- package/lib/stores/LayoutManagerState.js +2 -2
- package/lib/stores/LayoutManagerState.js.map +1 -1
- package/lib/stores/REPLStore.d.ts +3 -3
- package/lib/stores/REPLStore.d.ts.map +1 -1
- package/lib/stores/REPLStore.js +4 -4
- package/lib/stores/REPLStore.js.map +1 -1
- package/lib/stores/dataCube/DataCubeEngine.d.ts +4 -2
- package/lib/stores/dataCube/DataCubeEngine.d.ts.map +1 -1
- package/lib/stores/dataCube/DataCubeEngine.js +13 -2
- package/lib/stores/dataCube/DataCubeEngine.js.map +1 -1
- package/lib/stores/dataCube/DataCubeState.d.ts +7 -4
- package/lib/stores/dataCube/DataCubeState.d.ts.map +1 -1
- package/lib/stores/dataCube/DataCubeState.js +12 -9
- package/lib/stores/dataCube/DataCubeState.js.map +1 -1
- package/lib/stores/dataCube/core/{DataCubeStaticContentDisplayState.d.ts → DataCubeInfoState.d.ts} +9 -4
- package/lib/stores/dataCube/core/DataCubeInfoState.d.ts.map +1 -0
- package/lib/stores/dataCube/core/{DataCubeStaticContentDisplayState.js → DataCubeInfoState.js} +11 -6
- package/lib/stores/dataCube/core/DataCubeInfoState.js.map +1 -0
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.js +18 -6
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts +8 -3
- package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryEngine.js +15 -4
- package/lib/stores/dataCube/core/DataCubeQueryEngine.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts +3 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js +2 -3
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js.map +1 -1
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.js +20 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.js.map +1 -0
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.d.ts +0 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.js +0 -19
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.js +14 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js +3 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.js +8 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.js +12 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js +7 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js +12 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js +7 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.js +14 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.js +14 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.js +12 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js +7 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js +12 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js +7 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.js +14 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js +3 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js +8 -3
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js +4 -4
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts +0 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js +10 -40
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.d.ts +18 -2
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.js +80 -21
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.d.ts +0 -8
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.js +2 -23
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.js +4 -1
- package/lib/stores/dataCube/editor/DataCubeEditorSortsPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts +14 -3
- package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorState.js +37 -4
- package/lib/stores/dataCube/editor/DataCubeEditorState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.js +9 -5
- package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts +3 -1
- package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js +28 -1
- package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js.map +1 -1
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.d.ts +61 -0
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.d.ts.map +1 -0
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.js +262 -0
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.js.map +1 -0
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.d.ts +45 -0
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.d.ts.map +1 -0
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.js +112 -0
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.js.map +1 -0
- package/lib/stores/dataCube/filter/DataCubeFilterEditorState.d.ts +6 -2
- package/lib/stores/dataCube/filter/DataCubeFilterEditorState.d.ts.map +1 -1
- package/lib/stores/dataCube/filter/DataCubeFilterEditorState.js +18 -5
- package/lib/stores/dataCube/filter/DataCubeFilterEditorState.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js +1 -2
- package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientExportEngine.js +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientExportEngine.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.js +10 -5
- package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.d.ts +16 -10
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.js +28 -14
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridMenuBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridMenuBuilder.js +34 -20
- package/lib/stores/dataCube/grid/DataCubeGridMenuBuilder.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js +1 -0
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts +2 -2
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js +3 -2
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridState.d.ts +15 -0
- package/lib/stores/dataCube/grid/DataCubeGridState.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridState.js +15 -0
- package/lib/stores/dataCube/grid/DataCubeGridState.js.map +1 -1
- package/package.json +10 -10
- package/src/components/dataCube/DataCube.tsx +4 -1
- package/src/components/dataCube/editor/DataCubeEditor.tsx +11 -3
- package/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx +88 -25
- package/src/components/dataCube/editor/DataCubeEditorColumnsPanel.tsx +58 -12
- package/src/components/dataCube/editor/DataCubeEditorColumnsSelector.tsx +38 -34
- package/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx +1 -1
- package/src/components/dataCube/extend/DataCubeColumnEditor.tsx +362 -0
- package/src/components/repl/PureCodeEditor.tsx +91 -0
- package/src/server/REPLEngine.ts +33 -43
- package/src/server/REPLServerClient.ts +11 -1
- package/src/stores/LayoutManagerState.ts +2 -2
- package/src/stores/REPLStore.tsx +8 -10
- package/src/stores/dataCube/DataCubeEngine.ts +21 -2
- package/src/stores/dataCube/DataCubeState.ts +13 -9
- package/src/stores/dataCube/core/{DataCubeStaticContentDisplayState.ts → DataCubeInfoState.ts} +12 -7
- package/src/stores/dataCube/core/DataCubeQueryBuilder.ts +29 -10
- package/src/stores/dataCube/core/DataCubeQueryEngine.ts +19 -4
- package/src/stores/dataCube/core/DataCubeQuerySnapshot.ts +5 -1
- package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts +2 -3
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.ts +40 -0
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation.ts +0 -23
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.tsx +14 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.tsx +4 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.tsx +9 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.tsx +12 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.tsx +8 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.tsx +12 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.tsx +8 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.tsx +15 -6
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.tsx +15 -6
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.tsx +12 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.tsx +8 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.tsx +12 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.tsx +8 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.tsx +14 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.tsx +4 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.tsx +9 -5
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.tsx +4 -3
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.tsx +4 -3
- package/src/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.ts +18 -51
- package/src/stores/dataCube/editor/DataCubeEditorColumnsPanelState.ts +137 -31
- package/src/stores/dataCube/editor/DataCubeEditorColumnsSelectorState.ts +2 -40
- package/src/stores/dataCube/editor/DataCubeEditorSortsPanelState.ts +9 -1
- package/src/stores/dataCube/editor/DataCubeEditorState.tsx +50 -5
- package/src/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.ts +14 -7
- package/src/stores/dataCube/editor/DataCubeMutableConfiguration.ts +32 -1
- package/src/stores/dataCube/extend/DataCubeColumnEditorState.tsx +364 -0
- package/src/stores/dataCube/extend/DataCubeExtendManagerState.tsx +169 -0
- package/src/stores/dataCube/filter/DataCubeFilterEditorState.tsx +21 -10
- package/src/stores/dataCube/grid/DataCubeGridClientEngine.ts +1 -2
- package/src/stores/dataCube/grid/DataCubeGridClientExportEngine.ts +1 -1
- package/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx +18 -7
- package/src/stores/dataCube/grid/DataCubeGridControllerState.ts +37 -17
- package/src/stores/dataCube/grid/DataCubeGridMenuBuilder.tsx +36 -20
- package/src/stores/dataCube/grid/DataCubeGridQueryBuilder.ts +1 -0
- package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts +8 -1
- package/src/stores/dataCube/grid/DataCubeGridState.ts +15 -0
- package/tsconfig.json +8 -3
- package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.d.ts.map +0 -1
- package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.js +0 -27
- package/lib/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.js.map +0 -1
- package/lib/components/dataCube/filter/DataCubeEditorFilter.d.ts.map +0 -1
- package/lib/stores/dataCube/core/DataCubeStaticContentDisplayState.d.ts.map +0 -1
- package/lib/stores/dataCube/core/DataCubeStaticContentDisplayState.js.map +0 -1
- package/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx +0 -45
- /package/src/components/dataCube/filter/{DataCubeEditorFilter.tsx → DataCubeFilterEditor.tsx} +0 -0
|
@@ -14,16 +14,16 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { action, makeObservable, observable } from 'mobx';
|
|
17
|
+
import { action, makeObservable, observable, override } from 'mobx';
|
|
18
18
|
import type { DataCubeState } from '../DataCubeState.js';
|
|
19
19
|
import {
|
|
20
20
|
type DataCubeQuerySnapshot,
|
|
21
21
|
type DataCubeQuerySnapshotColumn,
|
|
22
|
+
type DataCubeQuerySnapshotExtendedColumn,
|
|
22
23
|
} from '../core/DataCubeQuerySnapshot.js';
|
|
23
24
|
import type { DataCubeQueryEditorPanelState } from './DataCubeEditorPanelState.js';
|
|
24
25
|
import {
|
|
25
26
|
DataCubeEditorColumnsSelectorColumnState,
|
|
26
|
-
DataCubeEditorColumnsSelectorHiddenColumnsVisibility,
|
|
27
27
|
DataCubeEditorColumnsSelectorState,
|
|
28
28
|
} from './DataCubeEditorColumnsSelectorState.js';
|
|
29
29
|
import type { DataCubeEditorState } from './DataCubeEditorState.js';
|
|
@@ -31,6 +31,29 @@ import { type DataCubeConfiguration } from '../core/DataCubeConfiguration.js';
|
|
|
31
31
|
import { DataCubeMutableColumnConfiguration } from './DataCubeMutableConfiguration.js';
|
|
32
32
|
|
|
33
33
|
export class DataCubeEditorBasicColumnsSelectorState extends DataCubeEditorColumnsSelectorState<DataCubeEditorColumnsSelectorColumnState> {
|
|
34
|
+
showHiddenColumns = false;
|
|
35
|
+
|
|
36
|
+
constructor(
|
|
37
|
+
editor: DataCubeEditorState,
|
|
38
|
+
options?: {
|
|
39
|
+
onChange?:
|
|
40
|
+
| ((
|
|
41
|
+
select: DataCubeEditorColumnsSelectorState<DataCubeEditorColumnsSelectorColumnState>,
|
|
42
|
+
) => void)
|
|
43
|
+
| undefined;
|
|
44
|
+
},
|
|
45
|
+
) {
|
|
46
|
+
super(editor, options);
|
|
47
|
+
|
|
48
|
+
makeObservable(this, {
|
|
49
|
+
availableColumnsForDisplay: override,
|
|
50
|
+
selectedColumnsForDisplay: override,
|
|
51
|
+
|
|
52
|
+
showHiddenColumns: observable,
|
|
53
|
+
setShowHiddenColumns: action,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
34
57
|
override cloneColumn(column: DataCubeEditorColumnsSelectorColumnState) {
|
|
35
58
|
return new DataCubeEditorColumnsSelectorColumnState(
|
|
36
59
|
column.name,
|
|
@@ -41,13 +64,68 @@ export class DataCubeEditorBasicColumnsSelectorState extends DataCubeEditorColum
|
|
|
41
64
|
override get availableColumns() {
|
|
42
65
|
return [
|
|
43
66
|
...this.editor.columns.sourceColumns,
|
|
44
|
-
|
|
67
|
+
...this.editor.columns.leafExtendColumns,
|
|
68
|
+
...this.editor.columns.groupExtendColumns,
|
|
45
69
|
].map(
|
|
46
70
|
(col) => new DataCubeEditorColumnsSelectorColumnState(col.name, col.type),
|
|
47
71
|
);
|
|
48
72
|
}
|
|
73
|
+
|
|
74
|
+
override get availableColumnsForDisplay(): DataCubeEditorColumnsSelectorColumnState[] {
|
|
75
|
+
return this.availableColumns
|
|
76
|
+
.filter(
|
|
77
|
+
(column) =>
|
|
78
|
+
!this.selectedColumns.find((col) => column.name === col.name),
|
|
79
|
+
)
|
|
80
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
81
|
+
.filter((column) => {
|
|
82
|
+
// group-level extended columns are always shown regardless if they are hidden or not
|
|
83
|
+
if (
|
|
84
|
+
this.editor.columns.groupExtendColumns.find(
|
|
85
|
+
(col) => col.name === column.name,
|
|
86
|
+
)
|
|
87
|
+
) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return this.showHiddenColumns
|
|
92
|
+
? true
|
|
93
|
+
: !this.editor.columnProperties.getColumnConfiguration(column.name)
|
|
94
|
+
?.hideFromView;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
override get selectedColumnsForDisplay(): DataCubeEditorColumnsSelectorColumnState[] {
|
|
99
|
+
return this.selectedColumns.filter((column) => {
|
|
100
|
+
// group-level extended columns are always shown regardless if they are hidden or not
|
|
101
|
+
if (
|
|
102
|
+
this.editor.columns.groupExtendColumns.find(
|
|
103
|
+
(col) => col.name === column.name,
|
|
104
|
+
)
|
|
105
|
+
) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return this.showHiddenColumns
|
|
110
|
+
? true
|
|
111
|
+
: !this.editor.columnProperties.getColumnConfiguration(column.name)
|
|
112
|
+
?.hideFromView;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
setShowHiddenColumns(val: boolean): void {
|
|
117
|
+
this.showHiddenColumns = val;
|
|
118
|
+
}
|
|
49
119
|
}
|
|
50
120
|
|
|
121
|
+
/**
|
|
122
|
+
* This panel allows selection of columns (including extended columns) for the query.
|
|
123
|
+
*
|
|
124
|
+
* NOTE: though it technically represents the `select()` function in the query, since for
|
|
125
|
+
* convenience, we also show group-level extended columns, there are a fair amount of
|
|
126
|
+
* edge cases we need to handle, such as we need to translate `unselecting` a group-level
|
|
127
|
+
* extended column to hiding it since this extend() operation occurs after select().
|
|
128
|
+
*/
|
|
51
129
|
export class DataCubeEditorColumnsPanelState
|
|
52
130
|
implements DataCubeQueryEditorPanelState
|
|
53
131
|
{
|
|
@@ -56,26 +134,27 @@ export class DataCubeEditorColumnsPanelState
|
|
|
56
134
|
readonly selector!: DataCubeEditorBasicColumnsSelectorState;
|
|
57
135
|
|
|
58
136
|
sourceColumns: DataCubeQuerySnapshotColumn[] = [];
|
|
137
|
+
leafExtendColumns: DataCubeQuerySnapshotExtendedColumn[] = [];
|
|
138
|
+
groupExtendColumns: DataCubeQuerySnapshotExtendedColumn[] = [];
|
|
59
139
|
|
|
60
140
|
constructor(editor: DataCubeEditorState) {
|
|
61
141
|
makeObservable(this, {
|
|
62
|
-
sourceColumns: observable,
|
|
63
|
-
|
|
142
|
+
sourceColumns: observable.ref,
|
|
143
|
+
leafExtendColumns: observable.ref,
|
|
144
|
+
groupExtendColumns: observable.ref,
|
|
145
|
+
|
|
146
|
+
applySnaphot: action,
|
|
64
147
|
});
|
|
65
148
|
|
|
66
149
|
this.editor = editor;
|
|
67
150
|
this.dataCube = editor.dataCube;
|
|
68
151
|
this.selector = new DataCubeEditorBasicColumnsSelectorState(editor, {
|
|
69
|
-
initialHiddenColumnsVisibility:
|
|
70
|
-
DataCubeEditorColumnsSelectorHiddenColumnsVisibility.HIDDEN,
|
|
71
152
|
onChange: (selector) => {
|
|
72
153
|
// populate a default configuration for the newly selected columns
|
|
73
154
|
selector.selectedColumns
|
|
74
155
|
.filter(
|
|
75
156
|
(col) =>
|
|
76
|
-
!this.editor.columnProperties.
|
|
77
|
-
(column) => column.name === col.name,
|
|
78
|
-
),
|
|
157
|
+
!this.editor.columnProperties.getColumnConfiguration(col.name),
|
|
79
158
|
)
|
|
80
159
|
.forEach((col) => {
|
|
81
160
|
this.editor.columnProperties.setColumns([
|
|
@@ -86,6 +165,18 @@ export class DataCubeEditorColumnsPanelState
|
|
|
86
165
|
}),
|
|
87
166
|
]);
|
|
88
167
|
});
|
|
168
|
+
|
|
169
|
+
// update hidden flag for group-level extended columns
|
|
170
|
+
// based on the new selection state
|
|
171
|
+
this.groupExtendColumns.forEach((col) => {
|
|
172
|
+
const columnConfiguration =
|
|
173
|
+
this.editor.columnProperties.getColumnConfiguration(col.name);
|
|
174
|
+
columnConfiguration?.setHideFromView(
|
|
175
|
+
!selector.selectedColumns.find(
|
|
176
|
+
(column) => column.name === col.name,
|
|
177
|
+
),
|
|
178
|
+
);
|
|
179
|
+
});
|
|
89
180
|
},
|
|
90
181
|
});
|
|
91
182
|
}
|
|
@@ -102,49 +193,61 @@ export class DataCubeEditorColumnsPanelState
|
|
|
102
193
|
// prune column properties
|
|
103
194
|
this.editor.columnProperties.setColumns(
|
|
104
195
|
this.editor.columnProperties.columns.filter((column) =>
|
|
105
|
-
this.
|
|
196
|
+
this.editor.columnProperties.configurableColumns.find(
|
|
197
|
+
(col) => col.name === column.name,
|
|
198
|
+
),
|
|
106
199
|
),
|
|
107
200
|
);
|
|
108
201
|
|
|
109
202
|
// prune sorts
|
|
110
203
|
this.editor.sorts.selector.setSelectedColumns(
|
|
111
204
|
this.editor.sorts.selector.selectedColumns.filter((column) =>
|
|
112
|
-
this.selector.
|
|
205
|
+
this.editor.sorts.selector.availableColumns.find(
|
|
206
|
+
(col) => col.name === column.name,
|
|
207
|
+
),
|
|
113
208
|
),
|
|
114
209
|
);
|
|
115
210
|
|
|
116
211
|
// prune vertical pivots columns
|
|
117
212
|
this.editor.verticalPivots.selector.setSelectedColumns(
|
|
118
213
|
this.editor.verticalPivots.selector.selectedColumns.filter((column) =>
|
|
119
|
-
this.selector.
|
|
214
|
+
this.editor.verticalPivots.selector.availableColumns.find(
|
|
215
|
+
(col) => col.name === column.name,
|
|
216
|
+
),
|
|
120
217
|
),
|
|
121
218
|
);
|
|
122
219
|
|
|
123
220
|
// TODO: prune horizontal pivots columns
|
|
124
221
|
}
|
|
125
222
|
|
|
126
|
-
setSourceColumns(columns: DataCubeQuerySnapshotColumn[]) {
|
|
127
|
-
this.sourceColumns = columns;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
223
|
applySnaphot(
|
|
131
224
|
snapshot: DataCubeQuerySnapshot,
|
|
132
225
|
configuration: DataCubeConfiguration,
|
|
133
226
|
) {
|
|
134
|
-
this.
|
|
227
|
+
this.sourceColumns = snapshot.data.sourceColumns;
|
|
228
|
+
this.leafExtendColumns = snapshot.data.leafExtendedColumns;
|
|
229
|
+
this.groupExtendColumns = snapshot.data.groupExtendedColumns;
|
|
230
|
+
|
|
135
231
|
this.selector.setSelectedColumns(
|
|
136
232
|
// extract selected columns from the configuration since the configuration specifies the order
|
|
137
|
-
// taking into account the group extended columns
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
233
|
+
// taking into account the group-level extended columns
|
|
234
|
+
configuration.columns
|
|
235
|
+
// NOTE: since select() is applied before grouping/aggregation, it's technicaly not possible to
|
|
236
|
+
// unselect the group-level extended columns, so we will take advantage of the `hidden` property to show
|
|
237
|
+
// group-level extended columns that are not hidden as selected
|
|
238
|
+
.filter(
|
|
239
|
+
(col) =>
|
|
240
|
+
!this.groupExtendColumns.find(
|
|
241
|
+
(column) => column.name === col.name,
|
|
242
|
+
) || !col.hideFromView,
|
|
243
|
+
)
|
|
244
|
+
.map((col) => {
|
|
245
|
+
const column = this.selector.getColumn(col.name);
|
|
246
|
+
return new DataCubeEditorColumnsSelectorColumnState(
|
|
247
|
+
column.name,
|
|
248
|
+
column.type,
|
|
249
|
+
);
|
|
250
|
+
}),
|
|
148
251
|
);
|
|
149
252
|
}
|
|
150
253
|
|
|
@@ -154,8 +257,11 @@ export class DataCubeEditorColumnsPanelState
|
|
|
154
257
|
) {
|
|
155
258
|
this.propagateColumnSelectionChanges();
|
|
156
259
|
newSnapshot.data.selectColumns = this.selector.selectedColumns
|
|
157
|
-
//
|
|
158
|
-
|
|
260
|
+
// filter out group-level extended columns since these columns are technically not selectable
|
|
261
|
+
.filter(
|
|
262
|
+
(col) =>
|
|
263
|
+
!this.groupExtendColumns.find((column) => column.name === col.name),
|
|
264
|
+
)
|
|
159
265
|
.map((col) => ({
|
|
160
266
|
name: col.name,
|
|
161
267
|
type: col.type,
|
|
@@ -29,12 +29,6 @@ export class DataCubeEditorColumnsSelectorColumnState {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export enum DataCubeEditorColumnsSelectorHiddenColumnsVisibility {
|
|
33
|
-
VISIBLE = 'visible',
|
|
34
|
-
VISIBLE_WITH_WARNING = 'visible-with-warning',
|
|
35
|
-
HIDDEN = 'hidden',
|
|
36
|
-
}
|
|
37
|
-
|
|
38
32
|
export abstract class DataCubeEditorColumnsSelectorState<
|
|
39
33
|
T extends DataCubeEditorColumnsSelectorColumnState,
|
|
40
34
|
> {
|
|
@@ -49,14 +43,10 @@ export abstract class DataCubeEditorColumnsSelectorState<
|
|
|
49
43
|
readonly onChange?:
|
|
50
44
|
| ((selector: DataCubeEditorColumnsSelectorState<T>) => void)
|
|
51
45
|
| undefined;
|
|
52
|
-
hiddenColumnsVisibility!: DataCubeEditorColumnsSelectorHiddenColumnsVisibility;
|
|
53
46
|
|
|
54
47
|
constructor(
|
|
55
48
|
editor: DataCubeEditorState,
|
|
56
49
|
options?: {
|
|
57
|
-
initialHiddenColumnsVisibility?:
|
|
58
|
-
| DataCubeEditorColumnsSelectorHiddenColumnsVisibility
|
|
59
|
-
| undefined;
|
|
60
50
|
onChange?:
|
|
61
51
|
| ((select: DataCubeEditorColumnsSelectorState<T>) => void)
|
|
62
52
|
| undefined;
|
|
@@ -75,24 +65,11 @@ export abstract class DataCubeEditorColumnsSelectorState<
|
|
|
75
65
|
|
|
76
66
|
selectedColumnsSearchText: observable,
|
|
77
67
|
setSelectedColumnsSearchText: action,
|
|
78
|
-
|
|
79
|
-
hiddenColumnsVisibility: observable,
|
|
80
|
-
setHiddenColumnsVisibility: action,
|
|
81
68
|
});
|
|
82
69
|
|
|
83
70
|
this.editor = editor;
|
|
84
71
|
this.dataCube = editor.dataCube;
|
|
85
72
|
this.onChange = options?.onChange;
|
|
86
|
-
this.hiddenColumnsVisibility =
|
|
87
|
-
options?.initialHiddenColumnsVisibility ??
|
|
88
|
-
// default to show hidden columns
|
|
89
|
-
DataCubeEditorColumnsSelectorHiddenColumnsVisibility.VISIBLE;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
setHiddenColumnsVisibility(
|
|
93
|
-
val: DataCubeEditorColumnsSelectorHiddenColumnsVisibility,
|
|
94
|
-
) {
|
|
95
|
-
this.hiddenColumnsVisibility = val;
|
|
96
73
|
}
|
|
97
74
|
|
|
98
75
|
abstract get availableColumns(): T[];
|
|
@@ -103,26 +80,11 @@ export abstract class DataCubeEditorColumnsSelectorState<
|
|
|
103
80
|
(column) =>
|
|
104
81
|
!this.selectedColumns.find((col) => column.name === col.name),
|
|
105
82
|
)
|
|
106
|
-
.sort((a, b) => a.name.localeCompare(b.name))
|
|
107
|
-
.filter(
|
|
108
|
-
(column) =>
|
|
109
|
-
this.hiddenColumnsVisibility !==
|
|
110
|
-
DataCubeEditorColumnsSelectorHiddenColumnsVisibility.HIDDEN ||
|
|
111
|
-
!this.editor.columnProperties.columns.find(
|
|
112
|
-
(col) => col.name === column.name,
|
|
113
|
-
)?.hideFromView,
|
|
114
|
-
);
|
|
83
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
115
84
|
}
|
|
116
85
|
|
|
117
86
|
get selectedColumnsForDisplay(): T[] {
|
|
118
|
-
return this.selectedColumns
|
|
119
|
-
(column) =>
|
|
120
|
-
this.hiddenColumnsVisibility !==
|
|
121
|
-
DataCubeEditorColumnsSelectorHiddenColumnsVisibility.HIDDEN ||
|
|
122
|
-
!this.editor.columnProperties.columns.find(
|
|
123
|
-
(col) => col.name === column.name,
|
|
124
|
-
)?.hideFromView,
|
|
125
|
-
);
|
|
87
|
+
return this.selectedColumns;
|
|
126
88
|
}
|
|
127
89
|
|
|
128
90
|
setSelectedColumns(val: T[]) {
|
|
@@ -55,7 +55,15 @@ export class DataCubeEditorSortColumnsSelectorState extends DataCubeEditorColumn
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
override get availableColumns() {
|
|
58
|
-
return
|
|
58
|
+
return [
|
|
59
|
+
...this.editor.columns.selector.selectedColumns,
|
|
60
|
+
...this.editor.columns.groupExtendColumns.filter(
|
|
61
|
+
(col) =>
|
|
62
|
+
!this.editor.columns.selector.selectedColumns.find(
|
|
63
|
+
(column) => column.name === col.name,
|
|
64
|
+
),
|
|
65
|
+
),
|
|
66
|
+
].map(
|
|
59
67
|
(col) =>
|
|
60
68
|
new DataCubeEditorSortColumnState(
|
|
61
69
|
col.name,
|
|
@@ -20,14 +20,20 @@ import { DataCubeEditorSortsPanelState } from './DataCubeEditorSortsPanelState.j
|
|
|
20
20
|
import { DataCubeEditorCodePanelState } from './DataCubeEditorCodePanelState.js';
|
|
21
21
|
import { DataCubeQuerySnapshotController } from '../core/DataCubeQuerySnapshotManager.js';
|
|
22
22
|
import { type DataCubeQuerySnapshot } from '../core/DataCubeQuerySnapshot.js';
|
|
23
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
ActionState,
|
|
25
|
+
assertErrorThrown,
|
|
26
|
+
guaranteeNonNullable,
|
|
27
|
+
} from '@finos/legend-shared';
|
|
24
28
|
import { DataCubeEditorGeneralPropertiesPanelState } from './DataCubeEditorGeneralPropertiesPanelState.js';
|
|
25
29
|
import { DataCubeEditorColumnPropertiesPanelState } from './DataCubeEditorColumnPropertiesPanelState.js';
|
|
26
30
|
import { DataCubeEditorColumnsPanelState } from './DataCubeEditorColumnsPanelState.js';
|
|
27
31
|
import { DataCubeConfiguration } from '../core/DataCubeConfiguration.js';
|
|
28
32
|
import { DataCubeEditorVerticalPivotsPanelState } from './DataCubeEditorVerticalPivotsPanelState.js';
|
|
29
|
-
import {
|
|
33
|
+
import { DisplayState } from '../../LayoutManagerState.js';
|
|
30
34
|
import { DataCubeEditor } from '../../../components/dataCube/editor/DataCubeEditor.js';
|
|
35
|
+
import { buildExecutableQuery } from '../core/DataCubeQueryBuilder.js';
|
|
36
|
+
import { _lambda } from '../core/DataCubeQueryBuilderUtils.js';
|
|
31
37
|
|
|
32
38
|
export enum DataCubeEditorTab {
|
|
33
39
|
GENERAL_PROPERTIES = 'General Properties',
|
|
@@ -39,8 +45,18 @@ export enum DataCubeEditorTab {
|
|
|
39
45
|
CODE = 'Code',
|
|
40
46
|
}
|
|
41
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This query editor state backs the main form editor of data cube. It supports
|
|
50
|
+
* batching changes before application, i.e. allowing user to make multiple edits before
|
|
51
|
+
* applying and propgating them.
|
|
52
|
+
*
|
|
53
|
+
* NOTE: It allows almost FULL 1-1 control over the data cube query state.
|
|
54
|
+
* It could also host other form editor states like filter editors, but due to ergonomic
|
|
55
|
+
* reasons, those have been separated out into their own respective query editor states.
|
|
56
|
+
*/
|
|
42
57
|
export class DataCubeEditorState extends DataCubeQuerySnapshotController {
|
|
43
|
-
readonly display:
|
|
58
|
+
readonly display: DisplayState;
|
|
59
|
+
readonly finalizationState = ActionState.create();
|
|
44
60
|
|
|
45
61
|
readonly code: DataCubeEditorCodePanelState;
|
|
46
62
|
|
|
@@ -49,6 +65,7 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotController {
|
|
|
49
65
|
|
|
50
66
|
readonly columns: DataCubeEditorColumnsPanelState;
|
|
51
67
|
readonly verticalPivots: DataCubeEditorVerticalPivotsPanelState;
|
|
68
|
+
// TODO: horizontal pivot
|
|
52
69
|
readonly sorts: DataCubeEditorSortsPanelState;
|
|
53
70
|
|
|
54
71
|
currentTab = DataCubeEditorTab.GENERAL_PROPERTIES;
|
|
@@ -63,7 +80,7 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotController {
|
|
|
63
80
|
applyChanges: action,
|
|
64
81
|
});
|
|
65
82
|
|
|
66
|
-
this.display = new
|
|
83
|
+
this.display = new DisplayState(
|
|
67
84
|
this.dataCube.repl.layout,
|
|
68
85
|
'Properties',
|
|
69
86
|
() => <DataCubeEditor dataCube={this.dataCube} />,
|
|
@@ -82,7 +99,9 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotController {
|
|
|
82
99
|
this.currentTab = val;
|
|
83
100
|
}
|
|
84
101
|
|
|
85
|
-
applyChanges() {
|
|
102
|
+
async applyChanges() {
|
|
103
|
+
this.finalizationState.inProgress();
|
|
104
|
+
|
|
86
105
|
const baseSnapshot = guaranteeNonNullable(this.getLatestSnapshot());
|
|
87
106
|
const snapshot = baseSnapshot.clone();
|
|
88
107
|
|
|
@@ -98,6 +117,32 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotController {
|
|
|
98
117
|
this.generalProperties.buildSnapshot(snapshot, baseSnapshot);
|
|
99
118
|
this.columnProperties.buildSnapshot(snapshot, baseSnapshot);
|
|
100
119
|
|
|
120
|
+
// compile the query to validate it
|
|
121
|
+
// NOTE: This is a helpful check for a lot of different scenarios where the
|
|
122
|
+
// consistency of the query might be thrown off by changes
|
|
123
|
+
// e.g. when a column that group-level extended columns' expressions depend on has been unselected.
|
|
124
|
+
try {
|
|
125
|
+
await this.dataCube.engine.getQueryRelationType(
|
|
126
|
+
_lambda(
|
|
127
|
+
[],
|
|
128
|
+
[
|
|
129
|
+
buildExecutableQuery(
|
|
130
|
+
snapshot,
|
|
131
|
+
this.dataCube.engine.filterOperations,
|
|
132
|
+
),
|
|
133
|
+
],
|
|
134
|
+
),
|
|
135
|
+
);
|
|
136
|
+
} catch (error) {
|
|
137
|
+
assertErrorThrown(error);
|
|
138
|
+
this.dataCube.repl.alertError(error, {
|
|
139
|
+
message: `Query Validation Failure: ${error.message}`,
|
|
140
|
+
});
|
|
141
|
+
return;
|
|
142
|
+
} finally {
|
|
143
|
+
this.finalizationState.complete();
|
|
144
|
+
}
|
|
145
|
+
|
|
101
146
|
snapshot.finalize();
|
|
102
147
|
if (snapshot.hashCode !== baseSnapshot.hashCode) {
|
|
103
148
|
this.publishSnapshot(snapshot);
|
|
@@ -38,16 +38,18 @@ export class DataCubeEditorVerticalPivotColumnsSelectorState extends DataCubeEdi
|
|
|
38
38
|
|
|
39
39
|
override get availableColumns(): DataCubeEditorColumnsSelectorColumnState[] {
|
|
40
40
|
return this.editor.columns.selector.selectedColumns
|
|
41
|
-
.map(
|
|
42
|
-
// TODO: filter group extended columns
|
|
43
|
-
(col) =>
|
|
44
|
-
new DataCubeEditorColumnsSelectorColumnState(col.name, col.type),
|
|
45
|
-
)
|
|
46
41
|
.filter(
|
|
47
42
|
(column) =>
|
|
48
|
-
this.editor.columnProperties.
|
|
43
|
+
this.editor.columnProperties.getColumnConfiguration(column.name)
|
|
44
|
+
?.kind === DataCubeColumnKind.DIMENSION &&
|
|
45
|
+
// exclude group-level extended columns
|
|
46
|
+
!this.editor.columns.groupExtendColumns.find(
|
|
49
47
|
(col) => col.name === column.name,
|
|
50
|
-
)
|
|
48
|
+
),
|
|
49
|
+
)
|
|
50
|
+
.map(
|
|
51
|
+
(col) =>
|
|
52
|
+
new DataCubeEditorColumnsSelectorColumnState(col.name, col.type),
|
|
51
53
|
);
|
|
52
54
|
}
|
|
53
55
|
}
|
|
@@ -92,8 +94,13 @@ export class DataCubeEditorVerticalPivotsPanelState
|
|
|
92
94
|
(column) =>
|
|
93
95
|
column.kind === DataCubeColumnKind.MEASURE &&
|
|
94
96
|
column.aggregateFunction !== undefined &&
|
|
97
|
+
// exclude group-by columns
|
|
95
98
|
this.selector.selectedColumns.find(
|
|
96
99
|
(col) => col.name !== column.name,
|
|
100
|
+
) &&
|
|
101
|
+
// exclude group-level extended columns
|
|
102
|
+
!this.editor.columns.groupExtendColumns.find(
|
|
103
|
+
(col) => col.name === column.name,
|
|
97
104
|
),
|
|
98
105
|
)
|
|
99
106
|
.map((column) => ({
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
|
+
DataCubeColumnKind,
|
|
18
19
|
getDataType,
|
|
19
|
-
type DataCubeColumnKind,
|
|
20
20
|
type DataCubeFont,
|
|
21
21
|
type DataCubeOperationValue,
|
|
22
22
|
type DataCubeNumberScale,
|
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
DEFAULT_ZERO_FOREGROUND_COLOR,
|
|
39
39
|
DEFAULT_ERROR_FOREGROUND_COLOR,
|
|
40
40
|
DEFAULT_BACKGROUND_COLOR,
|
|
41
|
+
DataCubeAggregateOperator,
|
|
41
42
|
} from '../core/DataCubeQueryEngine.js';
|
|
42
43
|
import { type PlainObject, type Writable } from '@finos/legend-shared';
|
|
43
44
|
import { makeObservable, observable, action, computed } from 'mobx';
|
|
@@ -46,6 +47,11 @@ import {
|
|
|
46
47
|
DataCubeConfiguration,
|
|
47
48
|
} from '../core/DataCubeConfiguration.js';
|
|
48
49
|
import { buildDefaultColumnConfiguration } from '../core/DataCubeConfigurationBuilder.js';
|
|
50
|
+
import {
|
|
51
|
+
_findCol,
|
|
52
|
+
type DataCubeQuerySnapshot,
|
|
53
|
+
} from '../core/DataCubeQuerySnapshot.js';
|
|
54
|
+
import { PRIMITIVE_TYPE } from '@finos/legend-graph';
|
|
49
55
|
|
|
50
56
|
export class DataCubeMutableColumnConfiguration extends DataCubeColumnConfiguration {
|
|
51
57
|
readonly dataType!: DataCubeColumnDataType;
|
|
@@ -189,6 +195,31 @@ export class DataCubeMutableColumnConfiguration extends DataCubeColumnConfigurat
|
|
|
189
195
|
);
|
|
190
196
|
}
|
|
191
197
|
|
|
198
|
+
populateSyntheticMetadata(snapshot: DataCubeQuerySnapshot) {
|
|
199
|
+
if (this.kind === DataCubeColumnKind.MEASURE) {
|
|
200
|
+
const aggCol = _findCol(snapshot.data.groupBy?.aggColumns, this.name);
|
|
201
|
+
if (aggCol) {
|
|
202
|
+
this.setAggregateFunction(aggCol.operation);
|
|
203
|
+
this.setAggregateFunctionParameters(aggCol.parameters);
|
|
204
|
+
} else {
|
|
205
|
+
switch (this.type) {
|
|
206
|
+
case PRIMITIVE_TYPE.NUMBER:
|
|
207
|
+
case PRIMITIVE_TYPE.INTEGER:
|
|
208
|
+
case PRIMITIVE_TYPE.DECIMAL:
|
|
209
|
+
case PRIMITIVE_TYPE.FLOAT: {
|
|
210
|
+
this.setAggregateFunction(DataCubeAggregateOperator.SUM);
|
|
211
|
+
this.setAggregateFunctionParameters([]);
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
default: {
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return this;
|
|
221
|
+
}
|
|
222
|
+
|
|
192
223
|
serialize() {
|
|
193
224
|
return DataCubeColumnConfiguration.serialization.toJson(this);
|
|
194
225
|
}
|