@finos/legend-cube-builder 0.0.4 → 0.0.6
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/README.md +9 -3
- package/docs/adding-an-operation.md +24 -12
- package/docs/demo/DEMO-FAST-NOTES.md +67 -0
- package/docs/demo/README.md +102 -0
- package/docs/demo/specs/duckdb-sales-pivot.cube.json +110 -0
- package/docs/demo/specs/trades-desks-1-joined.cube.json +123 -0
- package/docs/demo/specs/trades-desks-2-grouped.cube.json +140 -0
- package/docs/demo/specs/trades-desks-3-ranked.cube.json +158 -0
- package/docs/demo/specs/trades-desks-4-extended.cube.json +208 -0
- package/docs/demo/specs/trades-desks-5-final.cube.json +248 -0
- package/docs/hosting.md +83 -5
- package/docs/testing.md +32 -0
- package/lib/__lib__/LegendCubeCommand.d.ts +2 -0
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeCommand.js +7 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -1
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeHelpText.js +16 -2
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
- package/lib/__lib__/LegendCubeLabels.d.ts +130 -9
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +169 -17
- package/lib/__lib__/LegendCubeLabels.js.map +1 -1
- package/lib/__lib__/LegendCubeNavigation.d.ts +23 -0
- package/lib/__lib__/LegendCubeNavigation.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeNavigation.js +33 -0
- package/lib/__lib__/LegendCubeNavigation.js.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
- package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +10 -1
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeTesting.js +9 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -1
- package/lib/__lib__/LegendCubeTour.d.ts +62 -0
- package/lib/__lib__/LegendCubeTour.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeTour.js +149 -0
- package/lib/__lib__/LegendCubeTour.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +2 -2
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
- package/lib/__test-utils__/CubeExampleTestUtils.d.ts +34 -0
- package/lib/__test-utils__/CubeExampleTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeExampleTestUtils.js +72 -0
- package/lib/__test-utils__/CubeExampleTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +8 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.js +20 -3
- package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts +6 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.js +21 -0
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts +9 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.js +16 -0
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
- package/lib/__test-utils__/CubeVariantTestUtils.d.ts +16 -0
- package/lib/__test-utils__/CubeVariantTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeVariantTestUtils.js +66 -0
- package/lib/__test-utils__/CubeVariantTestUtils.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +5 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.js +17 -0
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +7 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.js +16 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -1
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
- package/lib/components/CubeAddItems.d.ts.map +1 -1
- package/lib/components/CubeAddItems.js +11 -7
- package/lib/components/CubeAddItems.js.map +1 -1
- package/lib/components/CubeDialogTheme.d.ts +25 -0
- package/lib/components/CubeDialogTheme.d.ts.map +1 -0
- package/lib/components/CubeDialogTheme.js +25 -0
- package/lib/components/CubeDialogTheme.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +12 -1
- package/lib/components/CubeEditor.d.ts.map +1 -1
- package/lib/components/CubeEditor.js +22 -14
- package/lib/components/CubeEditor.js.map +1 -1
- package/lib/components/CubeFileMenu.d.ts +28 -0
- package/lib/components/CubeFileMenu.d.ts.map +1 -0
- package/lib/components/CubeFileMenu.js +78 -0
- package/lib/components/CubeFileMenu.js.map +1 -0
- package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
- package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
- package/lib/components/CubeLambdaImportBanner.js +47 -0
- package/lib/components/CubeLambdaImportBanner.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -1
- package/lib/components/CubeNodeIcon.js +6 -1
- package/lib/components/CubeNodeIcon.js.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.js +2 -2
- package/lib/components/CubeSchemaColumnsTable.js.map +1 -1
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvas.js +40 -6
- package/lib/components/canvas/CubeCanvas.js.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js +2 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +58 -3
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
- package/lib/components/canvas/CubeCanvasLayout.js +1 -1
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.js +11 -4
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
- package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
- package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
- package/lib/components/dev-settings/CubeDevSettings.js +54 -0
- package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnChecklist.js +2 -2
- package/lib/components/editors/CubeColumnChecklist.js.map +1 -1
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnPicker.js +6 -4
- package/lib/components/editors/CubeColumnPicker.js.map +1 -1
- package/lib/components/editors/CubeConcatEditor.js +2 -2
- package/lib/components/editors/CubeConcatEditor.js.map +1 -1
- package/lib/components/editors/CubeExplodeEditor.d.ts +26 -0
- package/lib/components/editors/CubeExplodeEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExplodeEditor.js +61 -0
- package/lib/components/editors/CubeExplodeEditor.js.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js +86 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
- package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeExtendEditor.js +13 -12
- package/lib/components/editors/CubeExtendEditor.js.map +1 -1
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeFilterEditor.js +13 -2
- package/lib/components/editors/CubeFilterEditor.js.map +1 -1
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +16 -4
- package/lib/components/editors/CubeJoinEditor.js.map +1 -1
- package/lib/components/editors/CubeJsonFieldsTree.d.ts +46 -0
- package/lib/components/editors/CubeJsonFieldsTree.d.ts.map +1 -0
- package/lib/components/editors/CubeJsonFieldsTree.js +93 -0
- package/lib/components/editors/CubeJsonFieldsTree.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.js +18 -8
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts +5 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.js +10 -2
- package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js +11 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
- package/lib/components/editors/CubePivotEditor.d.ts +26 -0
- package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePivotEditor.js +93 -0
- package/lib/components/editors/CubePivotEditor.js.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.js +2 -2
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
- package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
- package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
- package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.js +77 -0
- package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
- package/lib/components/grid/CubeGridRegion.js +43 -28
- package/lib/components/grid/CubeGridRegion.js.map +1 -1
- package/lib/components/grid/CubeGridValues.d.ts +36 -4
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
- package/lib/components/grid/CubeGridValues.js +116 -4
- package/lib/components/grid/CubeGridValues.js.map +1 -1
- package/lib/components/grid/CubeJsonExplorerDialog.d.ts +27 -0
- package/lib/components/grid/CubeJsonExplorerDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeJsonExplorerDialog.js +102 -0
- package/lib/components/grid/CubeJsonExplorerDialog.js.map +1 -0
- package/lib/components/grid/CubeJsonViewerDialog.d.ts +27 -0
- package/lib/components/grid/CubeJsonViewerDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeJsonViewerDialog.js +68 -0
- package/lib/components/grid/CubeJsonViewerDialog.js.map +1 -0
- package/lib/components/grid/CubeResultGrid.d.ts +81 -6
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +400 -35
- package/lib/components/grid/CubeResultGrid.js.map +1 -1
- package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
- package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
- package/lib/components/grid/CubeRunStatsPanel.js +61 -0
- package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.js +116 -0
- package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
- package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
- package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlDialog.js +39 -0
- package/lib/components/grid/CubeSqlDialog.js.map +1 -0
- package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
- package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlFormat.js +32 -0
- package/lib/components/grid/CubeSqlFormat.js.map +1 -0
- package/lib/components/palette/CubePalette.d.ts.map +1 -1
- package/lib/components/palette/CubePalette.js +36 -14
- package/lib/components/palette/CubePalette.js.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
- package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.js +37 -16
- package/lib/components/source-picker/CubeDataProductTab.js.map +1 -1
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeDirectConnectionTab.js +6 -4
- package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -1
- package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
- package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
- package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
- package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts +2 -2
- package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeIngestTab.js +49 -20
- package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
- package/lib/components/source-picker/CubeInlineModelTab.d.ts +3 -2
- package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeInlineModelTab.js +23 -13
- package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -1
- package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
- package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerListItem.js +62 -0
- package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts +4 -3
- package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -1
- package/lib/components/source-picker/CubeProjectTab.js +7 -4
- package/lib/components/source-picker/CubeProjectTab.js.map +1 -1
- package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
- package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeServiceTab.js +36 -0
- package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
- package/lib/components/source-picker/CubeSourcePicker.js +16 -3
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
- package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
- package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
- package/lib/components/source-picker/CubeTablePreview.js +10 -0
- package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
- package/lib/components/tour/CubeTour.d.ts +36 -0
- package/lib/components/tour/CubeTour.d.ts.map +1 -0
- package/lib/components/tour/CubeTour.js +183 -0
- package/lib/components/tour/CubeTour.js.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts +10 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -1
- package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -1
- package/lib/graph-manager/CubeEngine.d.ts +46 -1
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/CubeEngine.js.map +1 -1
- package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
- package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
- package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
- package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
- package/lib/graph-manager/CubeIngest.d.ts +5 -0
- package/lib/graph-manager/CubeIngest.d.ts.map +1 -1
- package/lib/graph-manager/CubeIngest.js +10 -0
- package/lib/graph-manager/CubeIngest.js.map +1 -1
- package/lib/graph-manager/CubeIngestCatalog.d.ts +26 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -1
- package/lib/graph-manager/CubeIngestCatalog.js +6 -0
- package/lib/graph-manager/CubeIngestCatalog.js.map +1 -1
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts +3 -3
- package/lib/graph-manager/CubeService.d.ts +20 -0
- package/lib/graph-manager/CubeService.d.ts.map +1 -0
- package/lib/graph-manager/CubeService.js +22 -0
- package/lib/graph-manager/CubeService.js.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.js +17 -0
- package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +52 -5
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +63 -5
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +9 -6
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +12 -8
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +18 -9
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +4 -9
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +49 -10
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +2 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +18 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +74 -6
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +7 -4
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +6 -2
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +13 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -1
- package/lib/index.js.map +1 -1
- package/lib/stores/CubeAddPlacement.d.ts +10 -3
- package/lib/stores/CubeAddPlacement.d.ts.map +1 -1
- package/lib/stores/CubeAddPlacement.js +16 -5
- package/lib/stores/CubeAddPlacement.js.map +1 -1
- package/lib/stores/CubeDevSettingsState.d.ts +47 -0
- package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
- package/lib/stores/CubeDevSettingsState.js +99 -0
- package/lib/stores/CubeDevSettingsState.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +189 -43
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +532 -117
- package/lib/stores/CubeEditorState.js.map +1 -1
- package/lib/stores/CubeEngineChecks.d.ts +59 -0
- package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
- package/lib/stores/CubeEngineChecks.js +100 -0
- package/lib/stores/CubeEngineChecks.js.map +1 -0
- package/lib/stores/CubeExamples.d.ts.map +1 -1
- package/lib/stores/CubeExamples.js +136 -2
- package/lib/stores/CubeExamples.js.map +1 -1
- package/lib/stores/CubeExamplesState.d.ts +1 -1
- package/lib/stores/CubeExamplesState.d.ts.map +1 -1
- package/lib/stores/CubeExamplesState.js +6 -3
- package/lib/stores/CubeExamplesState.js.map +1 -1
- package/lib/stores/CubeExecutionState.d.ts.map +1 -1
- package/lib/stores/CubeExecutionState.js +24 -33
- package/lib/stores/CubeExecutionState.js.map +1 -1
- package/lib/stores/CubeExportState.d.ts +41 -0
- package/lib/stores/CubeExportState.d.ts.map +1 -0
- package/lib/stores/CubeExportState.js +134 -0
- package/lib/stores/CubeExportState.js.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.js +134 -0
- package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
- package/lib/stores/CubeExtendTyping.d.ts +6 -14
- package/lib/stores/CubeExtendTyping.d.ts.map +1 -1
- package/lib/stores/CubeExtendTyping.js +6 -33
- package/lib/stores/CubeExtendTyping.js.map +1 -1
- package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
- package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
- package/lib/stores/CubeFunctionRecheck.js +67 -0
- package/lib/stores/CubeFunctionRecheck.js.map +1 -0
- package/lib/stores/CubeGridFetcher.d.ts +75 -0
- package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
- package/lib/stores/CubeGridFetcher.js +197 -0
- package/lib/stores/CubeGridFetcher.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +25 -6
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
- package/lib/stores/CubeGridQuickActions.js +52 -23
- package/lib/stores/CubeGridQuickActions.js.map +1 -1
- package/lib/stores/CubeGridState.d.ts +136 -0
- package/lib/stores/CubeGridState.d.ts.map +1 -0
- package/lib/stores/CubeGridState.js +317 -0
- package/lib/stores/CubeGridState.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +42 -0
- package/lib/stores/CubeHost.d.ts.map +1 -1
- package/lib/stores/CubeHost.js +4 -0
- package/lib/stores/CubeHost.js.map +1 -1
- package/lib/stores/CubeLambdaImportState.d.ts +118 -0
- package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
- package/lib/stores/CubeLambdaImportState.js +302 -0
- package/lib/stores/CubeLambdaImportState.js.map +1 -0
- package/lib/stores/CubeLambdaSources.d.ts +45 -0
- package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
- package/lib/stores/CubeLambdaSources.js +261 -0
- package/lib/stores/CubeLambdaSources.js.map +1 -0
- package/lib/stores/CubePureText.d.ts +20 -0
- package/lib/stores/CubePureText.d.ts.map +1 -0
- package/lib/stores/CubePureText.js +24 -0
- package/lib/stores/CubePureText.js.map +1 -0
- package/lib/stores/CubeQueryRun.d.ts +59 -0
- package/lib/stores/CubeQueryRun.d.ts.map +1 -0
- package/lib/stores/CubeQueryRun.js +101 -0
- package/lib/stores/CubeQueryRun.js.map +1 -0
- package/lib/stores/CubeRunStatsState.d.ts +61 -0
- package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
- package/lib/stores/CubeRunStatsState.js +54 -0
- package/lib/stores/CubeRunStatsState.js.map +1 -0
- package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
- package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
- package/lib/stores/CubeRunningStepLambda.js +45 -0
- package/lib/stores/CubeRunningStepLambda.js.map +1 -0
- package/lib/stores/CubeServiceRecheck.d.ts +29 -0
- package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
- package/lib/stores/CubeServiceRecheck.js +33 -0
- package/lib/stores/CubeServiceRecheck.js.map +1 -0
- package/lib/stores/CubeShowPureState.d.ts +14 -1
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +41 -11
- package/lib/stores/CubeShowPureState.js.map +1 -1
- package/lib/stores/CubeSourcePickerState.d.ts +20 -4
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
- package/lib/stores/CubeSourcePickerState.js +75 -14
- package/lib/stores/CubeSourcePickerState.js.map +1 -1
- package/lib/stores/CubeTourState.d.ts +49 -0
- package/lib/stores/CubeTourState.d.ts.map +1 -0
- package/lib/stores/CubeTourState.js +92 -0
- package/lib/stores/CubeTourState.js.map +1 -0
- package/lib/stores/LegendCubeHost.d.ts +88 -0
- package/lib/stores/LegendCubeHost.d.ts.map +1 -0
- package/lib/stores/LegendCubeHost.js +149 -0
- package/lib/stores/LegendCubeHost.js.map +1 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
- package/lib/stores/LocalModelCatalog.js +3 -1
- package/lib/stores/LocalModelCatalog.js.map +1 -1
- package/lib/stores/editors/CubeExplodeDraft.d.ts +87 -0
- package/lib/stores/editors/CubeExplodeDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExplodeDraft.js +221 -0
- package/lib/stores/editors/CubeExplodeDraft.js.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +94 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js +258 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts +9 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeExtendDraft.js +26 -0
- package/lib/stores/editors/CubeExtendDraft.js.map +1 -1
- package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
- package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeFunctionDraft.js +69 -0
- package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +25 -3
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
- package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
- package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePivotDraft.js +267 -0
- package/lib/stores/editors/CubePivotDraft.js.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +27 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js +52 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts +4 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -1
- package/lib/stores/fixtures/CubeTradesModel.js +31 -1
- package/lib/stores/fixtures/CubeTradesModel.js.map +1 -1
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts +34 -5
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeDataProductTabState.js +111 -26
- package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +25 -2
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js +183 -31
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeIngestTabState.d.ts +62 -15
- package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeIngestTabState.js +212 -60
- package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +100 -4
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeInlineModelTabState.js +415 -28
- package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeProjectTabState.d.ts +18 -3
- package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeProjectTabState.js +26 -1
- package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -1
- package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
- package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
- package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +15 -3
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -1
- package/lib/stores/source-picker/CubeSourcePickerTab.js +21 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -1
- package/lib/stores/variant/CubeJson.d.ts +48 -0
- package/lib/stores/variant/CubeJson.d.ts.map +1 -0
- package/lib/stores/variant/CubeJson.js +207 -0
- package/lib/stores/variant/CubeJson.js.map +1 -0
- package/lib/stores/variant/CubeJsonExplorerState.d.ts +88 -0
- package/lib/stores/variant/CubeJsonExplorerState.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonExplorerState.js +297 -0
- package/lib/stores/variant/CubeJsonExplorerState.js.map +1 -0
- package/lib/stores/variant/CubeJsonFieldsState.d.ts +83 -0
- package/lib/stores/variant/CubeJsonFieldsState.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonFieldsState.js +207 -0
- package/lib/stores/variant/CubeJsonFieldsState.js.map +1 -0
- package/lib/stores/variant/CubeJsonOffers.d.ts +76 -0
- package/lib/stores/variant/CubeJsonOffers.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonOffers.js +250 -0
- package/lib/stores/variant/CubeJsonOffers.js.map +1 -0
- package/lib/stores/variant/CubeJsonParse.d.ts +28 -0
- package/lib/stores/variant/CubeJsonParse.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonParse.js +53 -0
- package/lib/stores/variant/CubeJsonParse.js.map +1 -0
- package/lib/stores/variant/CubeJsonSampling.d.ts +41 -0
- package/lib/stores/variant/CubeJsonSampling.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonSampling.js +59 -0
- package/lib/stores/variant/CubeJsonSampling.js.map +1 -0
- package/lib/stores/variant/CubeJsonShape.d.ts +87 -0
- package/lib/stores/variant/CubeJsonShape.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonShape.js +209 -0
- package/lib/stores/variant/CubeJsonShape.js.map +1 -0
- package/lib/stores/variant/CubeJsonViewerState.d.ts +33 -0
- package/lib/stores/variant/CubeJsonViewerState.d.ts.map +1 -0
- package/lib/stores/variant/CubeJsonViewerState.js +53 -0
- package/lib/stores/variant/CubeJsonViewerState.js.map +1 -0
- package/package.json +10 -9
- package/src/__lib__/LegendCubeCommand.ts +7 -0
- package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
- package/src/__lib__/LegendCubeHelpText.ts +27 -1
- package/src/__lib__/LegendCubeLabels.ts +225 -16
- package/src/__lib__/LegendCubeNavigation.ts +48 -0
- package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
- package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
- package/src/__lib__/LegendCubeTesting.ts +9 -0
- package/src/__lib__/LegendCubeTour.ts +173 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +2 -1
- package/src/__test-utils__/CubeExampleTestUtils.ts +119 -0
- package/src/__test-utils__/CubeExpressionTestUtils.ts +29 -2
- package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
- package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
- package/src/__test-utils__/CubePageTestUtils.tsx +34 -0
- package/src/__test-utils__/CubeTestApplication.ts +25 -0
- package/src/__test-utils__/CubeVariantTestUtils.ts +103 -0
- package/src/__test-utils__/FakeCubeEngine.ts +27 -0
- package/src/__test-utils__/FakeCubeIngestCatalog.ts +18 -0
- package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
- package/src/components/CubeAddItems.tsx +15 -6
- package/src/components/CubeDialogTheme.ts +25 -0
- package/src/components/CubeEditor.tsx +170 -129
- package/src/components/CubeFileMenu.tsx +129 -0
- package/src/components/CubeLambdaImportBanner.tsx +97 -0
- package/src/components/CubeNodeIcon.tsx +9 -0
- package/src/components/CubeSchemaColumnsTable.tsx +7 -2
- package/src/components/canvas/CubeCanvas.tsx +65 -10
- package/src/components/canvas/CubeCanvasContextMenu.tsx +33 -2
- package/src/components/canvas/CubeCanvasElements.ts +76 -3
- package/src/components/canvas/CubeCanvasLayout.ts +1 -1
- package/src/components/canvas/CubeCanvasNode.tsx +37 -3
- package/src/components/dev-settings/CubeDevSettings.tsx +169 -0
- package/src/components/editors/CubeColumnChecklist.tsx +8 -2
- package/src/components/editors/CubeColumnPicker.tsx +9 -3
- package/src/components/editors/CubeConcatEditor.tsx +2 -2
- package/src/components/editors/CubeExplodeEditor.tsx +207 -0
- package/src/components/editors/CubeExpressionFilterEditor.tsx +210 -0
- package/src/components/editors/CubeExtendEditor.tsx +34 -21
- package/src/components/editors/CubeFilterEditor.tsx +13 -1
- package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
- package/src/components/editors/CubeJoinEditor.tsx +23 -4
- package/src/components/editors/CubeJsonFieldsTree.tsx +316 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +22 -10
- package/src/components/editors/CubeNodeEditorPopper.tsx +9 -1
- package/src/components/editors/CubeNodeEditorRegistry.ts +15 -0
- package/src/components/editors/CubePivotEditor.tsx +277 -0
- package/src/components/editors/CubeRestrictEditor.tsx +8 -2
- package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
- package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
- package/src/components/grid/CubeDrilldownBar.tsx +219 -0
- package/src/components/grid/CubeGridRegion.tsx +190 -56
- package/src/components/grid/CubeGridValues.ts +154 -4
- package/src/components/grid/CubeJsonExplorerDialog.tsx +304 -0
- package/src/components/grid/CubeJsonViewerDialog.tsx +190 -0
- package/src/components/grid/CubeResultGrid.tsx +586 -42
- package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
- package/src/components/grid/CubeServerSideGrid.tsx +213 -0
- package/src/components/grid/CubeSqlDialog.tsx +90 -0
- package/src/components/grid/CubeSqlFormat.ts +37 -0
- package/src/components/palette/CubePalette.tsx +54 -12
- package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
- package/src/components/source-picker/CubeDataProductTab.tsx +169 -75
- package/src/components/source-picker/CubeDirectConnectionTab.tsx +42 -30
- package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
- package/src/components/source-picker/CubeIngestTab.tsx +195 -83
- package/src/components/source-picker/CubeInlineModelTab.tsx +110 -81
- package/src/components/source-picker/CubePickerListItem.tsx +118 -0
- package/src/components/source-picker/CubeProjectTab.tsx +6 -3
- package/src/components/source-picker/CubeServiceTab.tsx +151 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +54 -18
- package/src/components/source-picker/CubeTablePreview.tsx +49 -0
- package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +21 -8
- package/src/components/tour/CubeTour.tsx +317 -0
- package/src/graph-manager/CubeDataProductCatalog.ts +11 -0
- package/src/graph-manager/CubeEngine.ts +51 -1
- package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
- package/src/graph-manager/CubeIngest.ts +15 -0
- package/src/graph-manager/CubeIngestCatalog.ts +33 -0
- package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
- package/src/graph-manager/CubeProjectCatalog.ts +3 -3
- package/src/graph-manager/CubeService.ts +29 -0
- package/src/graph-manager/CubeServiceCatalog.ts +35 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +115 -5
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +13 -7
- package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +35 -9
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +6 -15
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +70 -15
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +7 -1
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +122 -7
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +9 -4
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +6 -1
- package/src/index.ts +39 -2
- package/src/stores/CubeAddPlacement.ts +25 -5
- package/src/stores/CubeDevSettingsState.ts +117 -0
- package/src/stores/CubeEditorState.ts +722 -201
- package/src/stores/CubeEngineChecks.ts +240 -0
- package/src/stores/CubeExamples.ts +188 -1
- package/src/stores/CubeExamplesState.ts +13 -3
- package/src/stores/CubeExecutionState.ts +26 -57
- package/src/stores/CubeExportState.ts +196 -0
- package/src/stores/CubeExpressionFilterCheck.ts +218 -0
- package/src/stores/CubeExtendTyping.ts +6 -46
- package/src/stores/CubeFunctionRecheck.ts +97 -0
- package/src/stores/CubeGridFetcher.ts +302 -0
- package/src/stores/CubeGridQuickActions.ts +56 -23
- package/src/stores/CubeGridState.ts +450 -0
- package/src/stores/CubeHost.ts +48 -0
- package/src/stores/CubeLambdaImportState.ts +434 -0
- package/src/stores/CubeLambdaSources.ts +390 -0
- package/src/stores/CubePureText.ts +28 -0
- package/src/stores/CubeQueryRun.ts +169 -0
- package/src/stores/CubeRunStatsState.ts +91 -0
- package/src/stores/CubeRunningStepLambda.ts +62 -0
- package/src/stores/CubeServiceRecheck.ts +53 -0
- package/src/stores/CubeShowPureState.ts +51 -12
- package/src/stores/CubeSourcePickerState.ts +89 -13
- package/src/stores/CubeTourState.ts +116 -0
- package/src/stores/LegendCubeHost.ts +243 -0
- package/src/stores/LocalModelCatalog.ts +6 -1
- package/src/stores/editors/CubeExplodeDraft.ts +272 -0
- package/src/stores/editors/CubeExpressionFilterDraft.ts +389 -0
- package/src/stores/editors/CubeExtendDraft.ts +29 -0
- package/src/stores/editors/CubeFunctionDraft.ts +92 -0
- package/src/stores/editors/CubeNodeDraftRegistry.ts +34 -2
- package/src/stores/editors/CubePivotDraft.ts +355 -0
- package/src/stores/fixtures/CubeSalesDuckDbModel.ts +60 -0
- package/src/stores/fixtures/CubeTradesModel.ts +36 -1
- package/src/stores/source-picker/CubeDataProductTabState.ts +162 -35
- package/src/stores/source-picker/CubeDirectConnectionTabState.ts +246 -47
- package/src/stores/source-picker/CubeIngestTabState.ts +331 -106
- package/src/stores/source-picker/CubeInlineModelTabState.ts +514 -34
- package/src/stores/source-picker/CubeProjectTabState.ts +35 -3
- package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
- package/src/stores/source-picker/CubeSourcePickerTab.ts +31 -2
- package/src/stores/variant/CubeJson.ts +229 -0
- package/src/stores/variant/CubeJsonExplorerState.ts +378 -0
- package/src/stores/variant/CubeJsonFieldsState.ts +252 -0
- package/src/stores/variant/CubeJsonOffers.ts +359 -0
- package/src/stores/variant/CubeJsonParse.ts +75 -0
- package/src/stores/variant/CubeJsonSampling.ts +90 -0
- package/src/stores/variant/CubeJsonShape.ts +279 -0
- package/src/stores/variant/CubeJsonViewerState.ts +59 -0
- package/tsconfig.json +72 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos/legend-cube-builder",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "Legend Cube builder: the canvas UI and the Legend engine adapter of the Legend Cube query builder",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legend",
|
|
@@ -45,14 +45,14 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@dagrejs/dagre": "1.1.4",
|
|
48
|
-
"@finos/legend-application": "16.0.
|
|
49
|
-
"@finos/legend-art": "7.1.
|
|
50
|
-
"@finos/legend-cube": "0.0.
|
|
51
|
-
"@finos/legend-graph": "32.
|
|
52
|
-
"@finos/legend-lego": "2.0.
|
|
48
|
+
"@finos/legend-application": "16.0.129",
|
|
49
|
+
"@finos/legend-art": "7.1.169",
|
|
50
|
+
"@finos/legend-cube": "0.0.6",
|
|
51
|
+
"@finos/legend-graph": "32.8.0",
|
|
52
|
+
"@finos/legend-lego": "2.0.231",
|
|
53
53
|
"@finos/legend-server-depot": "6.1.24",
|
|
54
|
-
"@finos/legend-server-lakehouse": "0.
|
|
55
|
-
"@finos/legend-server-marketplace": "0.2.
|
|
54
|
+
"@finos/legend-server-lakehouse": "0.4.0",
|
|
55
|
+
"@finos/legend-server-marketplace": "0.2.18",
|
|
56
56
|
"@finos/legend-shared": "11.0.32",
|
|
57
57
|
"@finos/legend-storage": "3.0.154",
|
|
58
58
|
"@types/react": "19.0.10",
|
|
@@ -63,7 +63,8 @@
|
|
|
63
63
|
"react": "19.0.1",
|
|
64
64
|
"react-dnd": "16.0.1",
|
|
65
65
|
"react-dom": "19.0.1",
|
|
66
|
-
"serializr": "3.0.3"
|
|
66
|
+
"serializr": "3.0.3",
|
|
67
|
+
"sql-formatter": "15.4.11"
|
|
67
68
|
},
|
|
68
69
|
"devDependencies": {
|
|
69
70
|
"@finos/legend-dev-utils": "2.2.9",
|
|
@@ -24,6 +24,7 @@ import type { CommandConfigData } from '@finos/legend-application';
|
|
|
24
24
|
export enum LEGEND_CUBE_COMMAND_KEY {
|
|
25
25
|
EXECUTE = 'legend-cube.execute',
|
|
26
26
|
UNDO = 'legend-cube.undo',
|
|
27
|
+
REDO = 'legend-cube.redo',
|
|
27
28
|
VALIDATE_EXPRESSIONS = 'legend-cube.validate-expressions',
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -38,6 +39,11 @@ export const LEGEND_CUBE_COMMAND_CONFIG: CommandConfigData = {
|
|
|
38
39
|
defaultKeyboardShortcut: 'Control+KeyZ',
|
|
39
40
|
additionalKeyboardShortcuts: ['Meta+KeyZ'],
|
|
40
41
|
},
|
|
42
|
+
[LEGEND_CUBE_COMMAND_KEY.REDO]: {
|
|
43
|
+
title: 'Redo the last change undone',
|
|
44
|
+
defaultKeyboardShortcut: 'Control+Shift+KeyZ',
|
|
45
|
+
additionalKeyboardShortcuts: ['Meta+Shift+KeyZ', 'Control+KeyY'],
|
|
46
|
+
},
|
|
41
47
|
[LEGEND_CUBE_COMMAND_KEY.VALIDATE_EXPRESSIONS]: {
|
|
42
48
|
title: "Validate the Extend's expressions",
|
|
43
49
|
defaultKeyboardShortcut: 'F10',
|
|
@@ -47,3 +53,4 @@ export const LEGEND_CUBE_COMMAND_CONFIG: CommandConfigData = {
|
|
|
47
53
|
/** How the buttons' tooltips name the shortcuts */
|
|
48
54
|
export const EXECUTE_SHORTCUT_LABEL = 'F9';
|
|
49
55
|
export const UNDO_SHORTCUT_LABEL = 'Ctrl+Z / Cmd+Z';
|
|
56
|
+
export const REDO_SHORTCUT_LABEL = 'Ctrl+Shift+Z / Cmd+Shift+Z';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-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 { SchemaDiff } from '@finos/legend-cube';
|
|
18
|
+
import { getSchemaChangeList } from './LegendCubeLabels.js';
|
|
19
|
+
|
|
20
|
+
// The text of function sources (PLAN §6.5): the source dialog's Project
|
|
21
|
+
// tab, when it reads functions, and a function's panel
|
|
22
|
+
|
|
23
|
+
export const getFunctionDriftWarning = (diff: SchemaDiff): string =>
|
|
24
|
+
`This function's columns changed since the cube was saved: ${getSchemaChangeList(diff)}`;
|
|
25
|
+
|
|
26
|
+
export const getFunctionRecheckWarning = (firstLine: string): string =>
|
|
27
|
+
`Could not re-check this function, so it keeps its saved columns: ${firstLine}`;
|
|
28
|
+
|
|
29
|
+
export const CUBE_FUNCTION_MESSAGE = {
|
|
30
|
+
NO_ANSWER: 'The engine gave no columns for this function',
|
|
31
|
+
/** Under a function with its own runtime */
|
|
32
|
+
RUNS_ON: (runtime: string): string =>
|
|
33
|
+
`Runs on ${runtime}, set by the function`,
|
|
34
|
+
/** A function with its own runtime, on a cube that runs on another */
|
|
35
|
+
OTHER_RUNTIME: (runtime: string, cubeRuntime: string): string =>
|
|
36
|
+
`It reads through ${runtime}, but the cube runs on ${cubeRuntime}`,
|
|
37
|
+
NONE: 'This version has no function that returns a relation.',
|
|
38
|
+
NO_MATCH: 'No function matches the search.',
|
|
39
|
+
CUBE_CHANGED:
|
|
40
|
+
'The cube changed while the function was being added; pick it again.',
|
|
41
|
+
} as const;
|
|
@@ -21,15 +21,20 @@ import {
|
|
|
21
21
|
IngestDatasetSource,
|
|
22
22
|
Distinct,
|
|
23
23
|
Drop,
|
|
24
|
+
ExpressionFilter,
|
|
25
|
+
Explode,
|
|
24
26
|
Extend,
|
|
25
27
|
Filter,
|
|
28
|
+
FunctionSource,
|
|
26
29
|
Group,
|
|
27
30
|
Join,
|
|
28
31
|
Limit,
|
|
29
32
|
Partition,
|
|
33
|
+
Pivot,
|
|
30
34
|
RelationalTableSource,
|
|
31
35
|
Rename,
|
|
32
36
|
Restrict,
|
|
37
|
+
ServiceSource,
|
|
33
38
|
Slice,
|
|
34
39
|
Sort,
|
|
35
40
|
UnknownNode,
|
|
@@ -42,12 +47,18 @@ import {
|
|
|
42
47
|
|
|
43
48
|
export const CUBE_NODE_HELP_TEXT: Readonly<Record<string, string>> = {
|
|
44
49
|
[RelationalTableSource.TYPE]: 'Sources data from relational database table.',
|
|
50
|
+
/** Added by Cube: the original's PURE Native Function source (PLAN §6.5) */
|
|
51
|
+
[FunctionSource.TYPE]:
|
|
52
|
+
'Sources data from a function of the model that returns a relation, called with a value for each parameter.',
|
|
45
53
|
/** Added by Cube: the original has no data product source (PLAN §6.8) */
|
|
46
54
|
[DataProductAccessPointSource.TYPE]:
|
|
47
55
|
'Sources data from an access point of a deployed data product.',
|
|
48
56
|
/** Added by Cube: the original has no ingest data set source (PLAN §6.7) */
|
|
49
57
|
[IngestDatasetSource.TYPE]:
|
|
50
58
|
'Sources data from a data set of a deployed ingest definition.',
|
|
59
|
+
/** Added by Cube: the original's service source is read another way, still to come (PLAN §6.4) */
|
|
60
|
+
[ServiceSource.TYPE]:
|
|
61
|
+
"Sources data from a deployed service. In progress: Cube can't read services yet.",
|
|
51
62
|
[Concat.TYPE]:
|
|
52
63
|
'Combines the rows of the two previous data sets, keeping duplicates, in no particular order. Both must have the same columns: the same names, in the same order, with the same types.',
|
|
53
64
|
[Difference.TYPE]:
|
|
@@ -57,10 +68,19 @@ export const CUBE_NODE_HELP_TEXT: Readonly<Record<string, string>> = {
|
|
|
57
68
|
'Reduces the number of rows in the previous data set, removing the specified number of rows from the beginning of the data set.',
|
|
58
69
|
[Extend.TYPE]:
|
|
59
70
|
'Extends outgoing data set with new columns produced by expressions.',
|
|
71
|
+
/** Added by Cube: the original has no JSON operations (PLAN §11.20) */
|
|
72
|
+
[Explode.TYPE]:
|
|
73
|
+
'Makes a row for each element of an array in a JSON (Variant) column of the previous data set, keeping its columns and adding the element as a new column. A row whose array is empty, or missing, is kept once, with an empty element.',
|
|
60
74
|
[Filter.TYPE]:
|
|
61
75
|
'Reduces the number of rows in the previous data set, keeping only rows matching the specified criteria.',
|
|
76
|
+
/** Added by Cube: the original has no filter by expression (PLAN §11.11) */
|
|
77
|
+
[ExpressionFilter.TYPE]:
|
|
78
|
+
'Reduces the number of rows in the previous data set, keeping only rows for which the expression is true.',
|
|
62
79
|
[Group.TYPE]:
|
|
63
80
|
'Aggregates the data from the previous data set using the specified columns and aggregation functions.',
|
|
81
|
+
/** Added by Cube: the original has pivot only in the grid (PLAN §11.12) */
|
|
82
|
+
[Pivot.TYPE]:
|
|
83
|
+
'Turns the values of a column of the previous data set into columns: a row for each combination of the row columns that has a picked value, and a column for each picked value, holding its aggregate.',
|
|
64
84
|
[Join.TYPE]:
|
|
65
85
|
'Joins two previous data sets using specified columns as join keys.',
|
|
66
86
|
[Partition.TYPE]:
|
|
@@ -79,4 +99,10 @@ export const CUBE_NODE_HELP_TEXT: Readonly<Record<string, string>> = {
|
|
|
79
99
|
|
|
80
100
|
/** The tooltip of the editor's Select link (spec §17.9) */
|
|
81
101
|
export const SELECT_NODE_TOOLTIP =
|
|
82
|
-
'
|
|
102
|
+
'Make this the step that runs: Execute shows its rows in the grid.';
|
|
103
|
+
|
|
104
|
+
/** The marker on the step that runs, on the canvas and in its editor */
|
|
105
|
+
export const RUNNING_NODE_LABEL = 'Runs';
|
|
106
|
+
|
|
107
|
+
/** What a node's menu and editor call making it the step that runs */
|
|
108
|
+
export const RUN_THIS_STEP_LABEL = 'Run this step';
|
|
@@ -14,7 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import
|
|
17
|
+
import {
|
|
18
|
+
type SchemaColumn,
|
|
19
|
+
type SchemaDiff,
|
|
20
|
+
TypeFamily,
|
|
21
|
+
} from '@finos/legend-cube';
|
|
18
22
|
import { CubeTableFlag } from '../graph-manager/CubeEngine.js';
|
|
19
23
|
|
|
20
24
|
// The page's own text and settings; validation messages live in the core's
|
|
@@ -32,6 +36,10 @@ export enum LEGEND_CUBE_USER_DATA_KEY {
|
|
|
32
36
|
PALETTE_COLLAPSED = 'legend-cube.palette-collapsed',
|
|
33
37
|
/** The warehouse the viewer last picked for a data product cube (PLAN §6.8) */
|
|
34
38
|
DATA_PRODUCT_WAREHOUSE = 'legend-cube.data-product-warehouse',
|
|
39
|
+
/** Server-side or local (PLAN §11.10) */
|
|
40
|
+
GRID_MODE = 'legend-cube.grid-mode',
|
|
41
|
+
/** Engine requests sent uncompressed, for the browser's Network tab (PLAN §11.16) */
|
|
42
|
+
UNCOMPRESSED_REQUESTS = 'legend-cube.uncompressed-requests',
|
|
35
43
|
}
|
|
36
44
|
|
|
37
45
|
export const UNSAVED_CUBE_NAME = 'Unsaved Query';
|
|
@@ -49,26 +57,51 @@ export const READ_ONLY_CUBE_TITLE =
|
|
|
49
57
|
/** How a SQL NULL shows in the grid, distinct from an empty string */
|
|
50
58
|
export const NULL_CELL_TEXT = '(null)';
|
|
51
59
|
|
|
60
|
+
/** What the Runs panel calls a run (PLAN §11.10, §11.16); a fetch of the grid's rows is described by its level */
|
|
61
|
+
export const CUBE_RUN_LABEL = {
|
|
62
|
+
EXECUTE: 'Execute',
|
|
63
|
+
EXPORT_CSV: 'Export CSV',
|
|
64
|
+
pivotValues: (column: string): string => `Values of ${column}`,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Above a run's Pure (PLAN §11.16): unlike Show Pure, it shows the limit a
|
|
69
|
+
* grid run adds, one more than the row limit, to tell whether there are more
|
|
70
|
+
*/
|
|
71
|
+
export const CUBE_RUN_PURE_NOTE =
|
|
72
|
+
'As it ran, with any row limit Cube added to it.';
|
|
73
|
+
|
|
52
74
|
/** Pending labels: lower-case gerunds, shown as they are (spec §17.13) */
|
|
53
75
|
export enum CUBE_PENDING_LABEL {
|
|
54
76
|
LOADING_MODEL = 'loading model',
|
|
55
77
|
RESOLVING_SOURCE = 'resolving source',
|
|
56
78
|
EXECUTING_QUERY = 'executing query',
|
|
79
|
+
FETCHING_ROWS = 'fetching rows',
|
|
80
|
+
EXPORTING_CSV = 'exporting CSV',
|
|
57
81
|
RENDERING_QUERY = 'rendering query',
|
|
58
82
|
REFRESHING_SOURCE = 'refreshing source',
|
|
59
|
-
|
|
83
|
+
CHECKING_EXPRESSIONS = 'checking expressions',
|
|
60
84
|
}
|
|
61
85
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Why a row limit can't be taken: the number its text holds
|
|
88
|
+
* (`parseWholeNumberText`, so `0x10`, `1e3` and `1.0` hold none, PLAN
|
|
89
|
+
* §11.14) isn't a safe whole number of at least 1
|
|
90
|
+
*/
|
|
91
|
+
export const getRowLimitError = (
|
|
92
|
+
value: number | undefined,
|
|
93
|
+
): string | undefined =>
|
|
94
|
+
value === undefined || !Number.isSafeInteger(value) || value < 1
|
|
65
95
|
? 'The row limit must be a whole number of at least 1.'
|
|
66
96
|
: undefined;
|
|
67
|
-
};
|
|
68
97
|
|
|
69
98
|
export const getTruncationMessage = (rowLimit: number): string =>
|
|
70
99
|
`Showing the first ${rowLimit.toLocaleString('en-US')} rows; the query returned more.`;
|
|
71
100
|
|
|
101
|
+
/** In server-side mode, when a drill-down level or a sorted level was cut at the row limit (PLAN §11.10) */
|
|
102
|
+
export const getLevelTruncationMessage = (rowLimit: number): string =>
|
|
103
|
+
`Some levels show only their first ${rowLimit.toLocaleString('en-US')} rows or groups.`;
|
|
104
|
+
|
|
72
105
|
/** How the picker shows a table's problem, and why (PLAN §6.2.6) */
|
|
73
106
|
export const CUBE_TABLE_FLAG_LABELS: Readonly<
|
|
74
107
|
Record<CubeTableFlag, { label: string; description: string }>
|
|
@@ -87,10 +120,36 @@ export const CUBE_TABLE_FLAG_LABELS: Readonly<
|
|
|
87
120
|
},
|
|
88
121
|
};
|
|
89
122
|
|
|
90
|
-
/** A column's type
|
|
91
|
-
export const
|
|
123
|
+
/** A column's exact type: its display name, `?` when it takes NULL, e.g. `Varchar(5)?`; for hover and type messages */
|
|
124
|
+
export const getExactColumnTypeLabel = (column: SchemaColumn): string =>
|
|
92
125
|
`${column.type.displayName}${column.nullable ? '?' : ''}`;
|
|
93
126
|
|
|
127
|
+
/** The kind of value a type family holds, as the editors name it (the review of the demo, 2026-10-13) */
|
|
128
|
+
const TYPE_FAMILY_LABELS: Partial<Record<TypeFamily, string>> = {
|
|
129
|
+
[TypeFamily.BOOLEAN]: 'True or false',
|
|
130
|
+
[TypeFamily.STRING]: 'Text',
|
|
131
|
+
[TypeFamily.INTEGER]: 'Whole number',
|
|
132
|
+
[TypeFamily.FLOAT]: 'Number',
|
|
133
|
+
[TypeFamily.DECIMAL]: 'Decimal',
|
|
134
|
+
[TypeFamily.NUMBER]: 'Number',
|
|
135
|
+
[TypeFamily.STRICT_DATE]: 'Date',
|
|
136
|
+
[TypeFamily.DATETIME]: 'Date and time',
|
|
137
|
+
[TypeFamily.DATE]: 'Date',
|
|
138
|
+
[TypeFamily.STRICT_TIME]: 'Time',
|
|
139
|
+
[TypeFamily.VARIANT]: 'Variant',
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* A column's type as the editors show it: the kind of value, and whether it
|
|
144
|
+
* is optional (can be empty), e.g. `Text, optional`; an enumeration, or a
|
|
145
|
+
* type Cube doesn't know, by its name. The exact type
|
|
146
|
+
* (`getExactColumnTypeLabel`) is on hover.
|
|
147
|
+
*/
|
|
148
|
+
export const getColumnTypeLabel = (column: SchemaColumn): string =>
|
|
149
|
+
`${TYPE_FAMILY_LABELS[column.type.family] ?? column.type.displayName}${
|
|
150
|
+
column.nullable ? ', optional' : ''
|
|
151
|
+
}`;
|
|
152
|
+
|
|
94
153
|
const listColumns = (columns: readonly SchemaColumn[]): string =>
|
|
95
154
|
columns.map((column) => column.name).join(', ');
|
|
96
155
|
|
|
@@ -108,7 +167,7 @@ export const getSchemaChangeList = (diff: SchemaDiff): string => {
|
|
|
108
167
|
`changed ${diff.changed
|
|
109
168
|
.map(
|
|
110
169
|
(change) =>
|
|
111
|
-
`${change.after.name} (${
|
|
170
|
+
`${change.after.name} (${getExactColumnTypeLabel(change.before)} to ${getExactColumnTypeLabel(change.after)})`,
|
|
112
171
|
)
|
|
113
172
|
.join(', ')}`,
|
|
114
173
|
]
|
|
@@ -129,6 +188,12 @@ export const CUBE_SORT_COLUMN_DISABLED_REASON = {
|
|
|
129
188
|
};
|
|
130
189
|
|
|
131
190
|
/** Why the grid's quick actions (spec §12.4) can't be used */
|
|
191
|
+
/** Why a Variant cell's Open JSON can't be used (PLAN §11.20) */
|
|
192
|
+
export const CUBE_JSON_DISABLED_REASON = {
|
|
193
|
+
NOT_A_ROW: "A group row's cell holds no row's document.",
|
|
194
|
+
EMPTY: 'This cell is empty.',
|
|
195
|
+
};
|
|
196
|
+
|
|
132
197
|
export const CUBE_QUICK_ACTION_DISABLED_REASON = {
|
|
133
198
|
STALE_ROWS:
|
|
134
199
|
'Execute again: these rows are from an earlier version of the query.',
|
|
@@ -136,6 +201,11 @@ export const CUBE_QUICK_ACTION_DISABLED_REASON = {
|
|
|
136
201
|
EDITING:
|
|
137
202
|
"Close the node editor first: these rows don't show the changes in it.",
|
|
138
203
|
UNREADABLE_VALUE: "This value can't be used in a filter.",
|
|
204
|
+
/** On a group row's cell that holds its aggregation (PLAN §11.10) */
|
|
205
|
+
AGGREGATE_VALUE:
|
|
206
|
+
"This cell holds its group's aggregation, not a row's value, so it can't be used in a filter.",
|
|
207
|
+
/** On a group row's cell that shows nothing */
|
|
208
|
+
NO_VALUE: 'This cell has no value to filter by.',
|
|
139
209
|
notSortable: (typeName: string): string =>
|
|
140
210
|
`Values of type ${typeName} can't be sorted.`,
|
|
141
211
|
notGroupable: (typeName: string): string =>
|
|
@@ -144,6 +214,16 @@ export const CUBE_QUICK_ACTION_DISABLED_REASON = {
|
|
|
144
214
|
`Values of type ${typeName} can't be compared.`,
|
|
145
215
|
};
|
|
146
216
|
|
|
217
|
+
/** Why 'Format Column' can't be used on a column (spec §13.1) */
|
|
218
|
+
export const CUBE_FORMAT_NOT_A_NUMBER = 'Only number columns can be formatted.';
|
|
219
|
+
|
|
220
|
+
/** Why 'Drilldown by' can't be used on a column (PLAN §11.10) */
|
|
221
|
+
export const CUBE_DRILLDOWN_BLOCKER = {
|
|
222
|
+
ALREADY_A_LEVEL: 'The results already drill down by this column.',
|
|
223
|
+
notGroupable: (typeName: string): string =>
|
|
224
|
+
`Values of type ${typeName} can't be grouped.`,
|
|
225
|
+
};
|
|
226
|
+
|
|
147
227
|
/** Beside a condition comparing a floating-point column for equality (R133) */
|
|
148
228
|
export const FILTER_FLOAT_COMPARISON_HINT =
|
|
149
229
|
'exact comparison on floating-point columns may not match';
|
|
@@ -241,6 +321,86 @@ export const GROUP_EDITOR_NOTES = [
|
|
|
241
321
|
'With no group column, the result is one row, even when there are no rows.',
|
|
242
322
|
];
|
|
243
323
|
|
|
324
|
+
/** Why the Pivot editor won't take a column (PLAN §11.12), shown after the column's type */
|
|
325
|
+
export const PIVOT_COLUMN_DISABLED_REASON = {
|
|
326
|
+
/** a row column that can't be compared */
|
|
327
|
+
NOT_GROUPABLE: "can't be grouped",
|
|
328
|
+
/** a pivot column of another type than a String, an integer, a StrictDate or a Boolean */
|
|
329
|
+
NOT_PIVOTABLE: "can't be pivoted",
|
|
330
|
+
/** a column the pivot uses for another part */
|
|
331
|
+
PIVOT_COLUMN: 'the pivot column',
|
|
332
|
+
ROW_COLUMN: 'a row column',
|
|
333
|
+
AGGREGATED: 'the aggregated column',
|
|
334
|
+
} as const;
|
|
335
|
+
|
|
336
|
+
/** Why the Pivot editor won't tick a value (PLAN §11.12) */
|
|
337
|
+
export const PIVOT_VALUE_DISABLED_REASON = {
|
|
338
|
+
NOT_A_COLUMN_NAME: "can't name a column",
|
|
339
|
+
/** another value ticked has the same text in another case */
|
|
340
|
+
DIFFERS_ONLY_IN_CASE: 'only its case differs from a ticked value',
|
|
341
|
+
/** as many values are ticked as a Pivot takes */
|
|
342
|
+
TOO_MANY: 'as many values as a Pivot takes are ticked',
|
|
343
|
+
} as const;
|
|
344
|
+
|
|
345
|
+
/** What the Pivot editor says (PLAN §11.12) */
|
|
346
|
+
export const PIVOT_EDITOR_NOTES = [
|
|
347
|
+
'Each picked value becomes a column, named by the value, holding the aggregation of its rows; each combination of the row columns with a picked value becomes a row. Values not picked, and combinations holding only them, are left out.',
|
|
348
|
+
"Load values lists the pivot column's values, each once, up to 100. An empty value can't be pivoted, nor one that can't name a column; of two values that differ only in case, one can be ticked, as some databases would mix up their columns.",
|
|
349
|
+
"Pivot runs on Snowflake, Databricks, SingleStore and DuckDB; other databases, such as H2 and Postgres, can't run it.",
|
|
350
|
+
] as const;
|
|
351
|
+
|
|
352
|
+
/** Why the Explode Array editor won't pick a column (PLAN §11.20) */
|
|
353
|
+
export const EXPLODE_COLUMN_DISABLED_REASON = {
|
|
354
|
+
/** a column of another type than Variant */
|
|
355
|
+
NOT_JSON: 'not JSON',
|
|
356
|
+
} as const;
|
|
357
|
+
|
|
358
|
+
/** Under the Explode Array editor (PLAN §11.20) */
|
|
359
|
+
export const EXPLODE_EDITOR_NOTES = [
|
|
360
|
+
'One row per element of the array, the other columns repeated on each. A row whose array is empty, or that has none, is kept once, with an empty element.',
|
|
361
|
+
"Find arrays reads the column's first values, as Explore JSON does, and lists the arrays they hold. Keys can be typed too: none when the column is the array.",
|
|
362
|
+
'The element is JSON: Explore JSON, in its column menu, makes columns of its fields. Explode Array runs on Snowflake, Databricks, Postgres and DuckDB.',
|
|
363
|
+
] as const;
|
|
364
|
+
|
|
365
|
+
/** Explore JSON's one row per element offer, as its tooltip explains it (PLAN §11.20) */
|
|
366
|
+
export const CUBE_JSON_EXPLODE_OFFER_TITLE =
|
|
367
|
+
'Adds an Explode Array node: a row for each element, the element as a new JSON column. One array at a time.';
|
|
368
|
+
|
|
369
|
+
/** The tooltips of a Variant column's fields in an expression editor (PLAN §11.20, V.9) */
|
|
370
|
+
export const CUBE_JSON_FIELDS_TITLE = {
|
|
371
|
+
OPEN: 'Show its fields, read from its first values just before this step: listed in Runs; a field clicked is written into the expression',
|
|
372
|
+
FORMS:
|
|
373
|
+
'Other forms of the field: counts, lists, the first element, totals, as JSON',
|
|
374
|
+
EXPLODE:
|
|
375
|
+
'One row per element is a step of its own: add Explode Array from the palette, or from Explore JSON in the grid',
|
|
376
|
+
READ_AGAIN: 'Read the column again',
|
|
377
|
+
EVERY_ROW:
|
|
378
|
+
'Read every value of the column, for the shape of the whole column: listed in Runs, and it can be stopped',
|
|
379
|
+
} as const;
|
|
380
|
+
|
|
381
|
+
/** What a Variant column's fields were read from, in an expression editor (PLAN §11.20, V.9) */
|
|
382
|
+
export const getCubeJsonFieldsStatus = (sample: {
|
|
383
|
+
readonly rows: number;
|
|
384
|
+
readonly complete: boolean;
|
|
385
|
+
}): string => {
|
|
386
|
+
const count = sample.rows.toLocaleString('en-US');
|
|
387
|
+
return sample.complete
|
|
388
|
+
? `All ${count} values read, just before this step`
|
|
389
|
+
: `The first ${count} values read, just before this step`;
|
|
390
|
+
};
|
|
391
|
+
|
|
392
|
+
/** Says that Find arrays found none in the values read (PLAN §11.20) */
|
|
393
|
+
export const EXPLODE_NO_ARRAYS_NOTICE =
|
|
394
|
+
'No array in the values read: type the keys to one.';
|
|
395
|
+
|
|
396
|
+
/** Says that Load values found no value to list (PLAN §11.12) */
|
|
397
|
+
export const PIVOT_NO_VALUES_NOTICE =
|
|
398
|
+
'The pivot column has no value to list: its rows are all empty, or there are none.';
|
|
399
|
+
|
|
400
|
+
/** Says that the engine has more values than the Pivot editor lists (PLAN §11.12) */
|
|
401
|
+
export const getPivotValuesCutNotice = (shown: number): string =>
|
|
402
|
+
`Only the first ${shown} values are listed.`;
|
|
403
|
+
|
|
244
404
|
/** Why the Partition editor won't tick a column that can't be compared (PLAN §11.6) */
|
|
245
405
|
export const CUBE_PARTITION_COLUMN_DISABLED_REASON = "can't be partitioned by";
|
|
246
406
|
|
|
@@ -254,7 +414,7 @@ export const PARTITION_EDITOR_NOTES = [
|
|
|
254
414
|
"Rank, Dense Rank and Row Number need a sort column. Tied rows share a rank: Rank then skips numbers and Dense Rank doesn't. Row Number numbers every row, and rows tied on this node's sort columns get their numbers in no set order: add a sort column that tells them apart, such as an id, for a stable top N.",
|
|
255
415
|
'NTile, Percent Rank and Cumulative Distribution need a sort column too. NTile splits each partition into buckets of near-equal size, numbered from 1 in the sort order; Percent Rank and Cumulative Distribution give each row its place in its partition, from 0 to 1.',
|
|
256
416
|
"Lag and Lead read a column from the row so many rows before or after in the sort order, and are empty at the partition's edges. First and Last read it from the partition's first and last rows, the same on every row. They need a sort column, and rows tied on it may give any of them.",
|
|
257
|
-
"On ClickHouse, First and Last skip empty values, and Lag and Lead show a column's default, such as 0, at the partition's edges instead of empty, unless the column
|
|
417
|
+
"On ClickHouse, First and Last skip empty values, and Lag and Lead show a column's default, such as 0, at the partition's edges instead of empty, unless the column is optional there.",
|
|
258
418
|
"Their sort columns also make this node's other functions run. For totals over the whole partition, add another Apply Window Functions without sort columns.",
|
|
259
419
|
'Empty sort values come last when ascending and first when descending on H2; other databases may differ.',
|
|
260
420
|
"A Sort before this node doesn't order the window: its sort columns do. The rows keep the order they came in.",
|
|
@@ -281,8 +441,9 @@ export const DIFFERENCE_EDITOR_NOTES = [
|
|
|
281
441
|
/** What the Extend editor says about its expressions (PLAN §11.7) */
|
|
282
442
|
export const EXTEND_EDITOR_NOTES = [
|
|
283
443
|
'Write each expression as a lambda of one row, such as x | $x.PRICE * $x.QTY: $x.PRICE reads the column PRICE. A column can use the new columns above it.',
|
|
284
|
-
'
|
|
444
|
+
'An optional column needs ->toOne() before arithmetic, such as $x.QTY->toOne() * 2; an empty value still gives an empty result. Every new column is optional.',
|
|
285
445
|
"Validate (F10) checks the expressions with the engine, types them, and plans them for this cube's database: some functions type, but not every database runs them.",
|
|
446
|
+
'A JSON (Variant) column’s {} opens its fields, read from its first values just before this step: a field clicked is written into the expression last used, and + column adds it as a new column.',
|
|
286
447
|
];
|
|
287
448
|
|
|
288
449
|
/** Why the Extend editor's Apply waits (PLAN §11.7) */
|
|
@@ -295,6 +456,10 @@ export const EXTEND_APPLY_DISABLED_REASON = Object.freeze({
|
|
|
295
456
|
export const getExtendRetypeWarning = (firstLine: string): string =>
|
|
296
457
|
`Could not check these columns' types again, so they keep their saved ones: ${firstLine}`;
|
|
297
458
|
|
|
459
|
+
/** The warning on a Filter by Expression whose condition the engine couldn't check again, e.g. offline (PLAN §11.11) */
|
|
460
|
+
export const getConditionRecheckWarning = (firstLine: string): string =>
|
|
461
|
+
`Could not check this condition again, so it keeps its last check: ${firstLine}`;
|
|
462
|
+
|
|
298
463
|
/** The notice of a node editor kept open, since its changes can't be applied yet, e.g. an Extend's expressions not validated */
|
|
299
464
|
export const getEditorKeptOpenNotice = (
|
|
300
465
|
nodeId: string,
|
|
@@ -302,11 +467,35 @@ export const getEditorKeptOpenNotice = (
|
|
|
302
467
|
): string =>
|
|
303
468
|
`The editor of ${nodeId} stays open, since its changes can't be applied yet: ${waiting}, or Cancel to drop them.`;
|
|
304
469
|
|
|
470
|
+
/** Why the Filter by Expression editor's Apply waits (PLAN §11.11) */
|
|
471
|
+
export const EXPRESSION_FILTER_APPLY_DISABLED_REASON = Object.freeze({
|
|
472
|
+
NOT_VALIDATED: 'Validate the condition first (F10)',
|
|
473
|
+
VALIDATING: 'Validating the condition',
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* The hint after an engine error on `and`, `or` or `not` given something
|
|
478
|
+
* other than a Boolean, which Pure's precedence usually causes: comparisons
|
|
479
|
+
* bind no tighter than `&&`, `||` and `!` (PLAN §11.11)
|
|
480
|
+
*/
|
|
481
|
+
export const EXPRESSION_FILTER_PARENTHESES_HINT =
|
|
482
|
+
'Put each comparison in parentheses: ($x.A > 1) && ($x.B > 3).';
|
|
483
|
+
|
|
484
|
+
/** What the Filter by Expression editor says about conditions (PLAN §11.11) */
|
|
485
|
+
export const EXPRESSION_FILTER_EDITOR_NOTES = [
|
|
486
|
+
"A condition of one row, written as in Query's text mode: x | $x.SHIPPED_DATE > $x.REQUIRED_DATE. The rows for which it is true are kept, in their order.",
|
|
487
|
+
'Put each comparison in parentheses when you combine them: ($x.A > 1) && ($x.B > 3). In Pure, &&, || and ! bind as tightly as >, <, >= and <=; == binds tighter.',
|
|
488
|
+
'An optional column, compared directly ($x.A > 6), fails the condition when it is empty and passes its negation. After ->toOne(), an empty value fails both.',
|
|
489
|
+
"Validate (F10) checks the condition with the engine and plans it for the cube's database.",
|
|
490
|
+
"startsWith, endsWith and contains can't take a value with a backslash (\\) yet, nor, on DuckDB, one with % or _.",
|
|
491
|
+
'A JSON (Variant) column’s {} opens its fields, read from its first values just before this step: a field clicked is written into the condition.',
|
|
492
|
+
] as const;
|
|
493
|
+
|
|
305
494
|
/** The hint after an engine error on a column that can be empty, in arithmetic (PLAN §11.7) */
|
|
306
495
|
export const EXTEND_TO_ONE_HINT =
|
|
307
|
-
'
|
|
496
|
+
'An optional column needs ->toOne() first, such as $x.QTY->toOne() + 1.';
|
|
308
497
|
|
|
309
|
-
/** The problem a database refusing an Extend's plan gives (PLAN §11.7) */
|
|
498
|
+
/** The problem a database refusing an Extend's or a Filter by Expression's plan gives (PLAN §11.7, §11.11) */
|
|
310
499
|
export const getExtendPlanProblem = (
|
|
311
500
|
databaseType: string | undefined,
|
|
312
501
|
detail: string,
|
|
@@ -317,13 +506,33 @@ export const getExtendPlanProblem = (
|
|
|
317
506
|
export const COLUMN_NAME_RULES_HINT =
|
|
318
507
|
'Names can\'t start or end with a space, or contain " or \\ or control characters, and have at most 128 characters.';
|
|
319
508
|
|
|
509
|
+
/** Words a title leaves in lower case, but first */
|
|
510
|
+
const TITLE_SMALL_WORDS = new Set(['a', 'an', 'of']);
|
|
511
|
+
|
|
320
512
|
/**
|
|
321
513
|
* A node type's label as the node editor's title shows it, each word
|
|
322
|
-
* capitalised (QUESTIONS.md U1(a)), e.g. 'Take
|
|
323
|
-
* keeps its own wording
|
|
514
|
+
* capitalised but `a`, `an` and `of` (QUESTIONS.md U1(a)), e.g. 'Take a Range
|
|
515
|
+
* of Rows'; the registry keeps its own wording
|
|
324
516
|
*/
|
|
325
517
|
export const toEditorTitle = (label: string): string =>
|
|
326
|
-
label.replace(/(?<=^|\s)[a-z]
|
|
518
|
+
label.replace(/(?<=^|\s)[a-z]+/gu, (word, offset: number) =>
|
|
519
|
+
offset > 0 && TITLE_SMALL_WORDS.has(word)
|
|
520
|
+
? word
|
|
521
|
+
: `${word[0]?.toUpperCase() ?? ''}${word.slice(1)}`,
|
|
522
|
+
);
|
|
327
523
|
|
|
328
524
|
/** The source dialog's body until a tab is chosen, opened from the empty canvas (spec §17.8, U4(b)) */
|
|
329
525
|
export const SELECT_SOURCE_TYPE_PROMPT = 'Select source type above';
|
|
526
|
+
|
|
527
|
+
/** Why the source dialog's Add is disabled: nothing picked yet, or not ready */
|
|
528
|
+
export const CUBE_PICK_TO_ADD_TITLE = 'Pick what to add first';
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* The badge a node type shows beside its name: WIP for one that doesn't
|
|
532
|
+
* work yet (a service, PLAN §6.4), else BETA for one in beta, else none
|
|
533
|
+
*/
|
|
534
|
+
export const getCubeNodeBadge = (definition: {
|
|
535
|
+
readonly beta: boolean;
|
|
536
|
+
readonly wip?: boolean | undefined;
|
|
537
|
+
}): 'WIP' | 'BETA' | undefined =>
|
|
538
|
+
definition.wip ? 'WIP' : definition.beta ? 'BETA' : undefined;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-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
|
+
/**
|
|
18
|
+
* The anchor Legend Marketplace's data product viewer gives an access point
|
|
19
|
+
* group, which it reads from the URL hash on load: as Legend Query writes it
|
|
20
|
+
* (`EXTERNAL_APPLICATION_NAVIGATION__generateMarketplaceDataProductUrl`)
|
|
21
|
+
*
|
|
22
|
+
* @external_application_navigation This depends on Legend Marketplace routing and is hardcoded so it's potentially brittle
|
|
23
|
+
*/
|
|
24
|
+
const EXTERNAL_APPLICATION_NAVIGATION__generateCubeAccessPointGroupAnchor = (
|
|
25
|
+
accessPointGroupId: string,
|
|
26
|
+
): string =>
|
|
27
|
+
encodeURIComponent(
|
|
28
|
+
`apg-${accessPointGroupId}`.trim().toLowerCase().replace(/\s+/gu, '-'),
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A deployed data product's page in Legend Marketplace, at its access point
|
|
33
|
+
* group when one is given, as Legend Query links to it (PLAN §11.18)
|
|
34
|
+
*
|
|
35
|
+
* @external_application_navigation This depends on Legend Marketplace routing and is hardcoded so it's potentially brittle
|
|
36
|
+
*/
|
|
37
|
+
export const EXTERNAL_APPLICATION_NAVIGATION__generateCubeMarketplaceDataProductUrl =
|
|
38
|
+
(
|
|
39
|
+
marketplaceApplicationUrl: string,
|
|
40
|
+
dataProductId: string,
|
|
41
|
+
deploymentId: string,
|
|
42
|
+
accessPointGroupId?: string | undefined,
|
|
43
|
+
): string =>
|
|
44
|
+
`${marketplaceApplicationUrl}/dataProduct/deployed/${dataProductId}/${deploymentId}${
|
|
45
|
+
accessPointGroupId
|
|
46
|
+
? `#${EXTERNAL_APPLICATION_NAVIGATION__generateCubeAccessPointGroupAnchor(accessPointGroupId)}`
|
|
47
|
+
: ''
|
|
48
|
+
}`;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-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
|
+
/**
|
|
18
|
+
* What the source dialog says on a host that reads one project's own
|
|
19
|
+
* sources (`CubeHost.project`), e.g. Studio
|
|
20
|
+
*/
|
|
21
|
+
export const CUBE_PROJECT_SOURCE_LABEL = {
|
|
22
|
+
RUNS_ON: (runtime: string): string => `Runs on ${runtime}`,
|
|
23
|
+
READING_RUNTIME: "reading the project's lakehouse runtime",
|
|
24
|
+
NO_INGEST_DEFINITIONS: 'The project has no ingest definitions.',
|
|
25
|
+
NO_DATA_PRODUCTS: 'The project has no data products.',
|
|
26
|
+
} as const;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-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 { MESSAGE_SERVICE_NOT_READABLE } from '@finos/legend-cube';
|
|
18
|
+
|
|
19
|
+
// The text of service sources (PLAN §6.4), in progress: the source dialog's
|
|
20
|
+
// Service tab and a service's panel
|
|
21
|
+
|
|
22
|
+
export const CUBE_SERVICE_MESSAGE = {
|
|
23
|
+
/** Why a service source isn't valid yet: its first line is the node's error */
|
|
24
|
+
NOT_READABLE: `${MESSAGE_SERVICE_NOT_READABLE}\nPicking a service works; reading its columns and rows is still being built.`,
|
|
25
|
+
NO_CATALOG: "This Legend deployment doesn't list services",
|
|
26
|
+
CUBE_CHANGED:
|
|
27
|
+
'The cube changed while the service was being added; pick it again.',
|
|
28
|
+
NONE: 'No services are deployed.',
|
|
29
|
+
NO_MATCH: 'No service matches the search.',
|
|
30
|
+
IN_PROGRESS:
|
|
31
|
+
"Services are in progress: a service can be added to the canvas, but Cube can't read it yet.",
|
|
32
|
+
} as const;
|
|
33
|
+
|
|
34
|
+
/** How many of the matching services the tab shows, when it doesn't show them all */
|
|
35
|
+
export const getShownServicesLabel = (
|
|
36
|
+
shown: number,
|
|
37
|
+
matching: number,
|
|
38
|
+
): string | undefined =>
|
|
39
|
+
shown < matching
|
|
40
|
+
? `Showing ${shown} of ${matching} services: search to narrow the list`
|
|
41
|
+
: undefined;
|