@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
|
@@ -0,0 +1,62 @@
|
|
|
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 { lambda, needsDatabaseType } from '@finos/legend-cube';
|
|
18
|
+
import type { PlainObject } from '@finos/legend-shared';
|
|
19
|
+
import { flowResult } from 'mobx';
|
|
20
|
+
import { formatDisabledReasons } from '../__lib__/LegendCubeLabels.js';
|
|
21
|
+
import { serializeCubeLambdaForHost } from '../graph-manager/protocol/pure/CubeEngineBuilder.js';
|
|
22
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The query of the step that runs, as a lambda for a host to keep, e.g. as
|
|
26
|
+
* a materialized view of a Studio ingest definition: written for the
|
|
27
|
+
* database it runs on, as Execute writes it, but with no runtime and no row
|
|
28
|
+
* limit, which whoever runs it adds. Fails when Execute can't run.
|
|
29
|
+
*/
|
|
30
|
+
export const buildCubeRunningStepLambda = async (
|
|
31
|
+
editorState: CubeEditorState,
|
|
32
|
+
): Promise<PlainObject> => {
|
|
33
|
+
const { execution, document, emitter } = editorState;
|
|
34
|
+
const { query, context } = document;
|
|
35
|
+
const captureId = query.selected;
|
|
36
|
+
const runtime = context?.runtime;
|
|
37
|
+
const model = context?.model;
|
|
38
|
+
if (
|
|
39
|
+
!execution.canExecute ||
|
|
40
|
+
captureId === undefined ||
|
|
41
|
+
runtime === undefined ||
|
|
42
|
+
model === undefined
|
|
43
|
+
) {
|
|
44
|
+
throw new Error(formatDisabledReasons(execution.disabledReasons));
|
|
45
|
+
}
|
|
46
|
+
let databaseType: string | undefined;
|
|
47
|
+
if (needsDatabaseType(query, captureId)) {
|
|
48
|
+
await flowResult(editorState.loadModelOutline(model));
|
|
49
|
+
databaseType = editorState.getRunDatabaseType(
|
|
50
|
+
query,
|
|
51
|
+
captureId,
|
|
52
|
+
model,
|
|
53
|
+
runtime,
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
return serializeCubeLambdaForHost(
|
|
57
|
+
lambda(
|
|
58
|
+
[],
|
|
59
|
+
[emitter.emitRelation(captureId, { withRowOrder: true, databaseType })],
|
|
60
|
+
),
|
|
61
|
+
);
|
|
62
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
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 { ModelContext, Schema, ServiceSource } from '@finos/legend-cube';
|
|
18
|
+
import { CUBE_SERVICE_MESSAGE } from '../__lib__/LegendCubeServiceLabels.js';
|
|
19
|
+
import {
|
|
20
|
+
CubeEngineError,
|
|
21
|
+
CubeEngineErrorKind,
|
|
22
|
+
type NodeId,
|
|
23
|
+
} from '../graph-manager/CubeEngine.js';
|
|
24
|
+
import type { CubeServiceCatalog } from '../graph-manager/CubeServiceCatalog.js';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Types a cube's services (PLAN §6.4), when they are added and whenever
|
|
28
|
+
* they are read again. One answer per source, failures included; never
|
|
29
|
+
* rejects.
|
|
30
|
+
*
|
|
31
|
+
* TODO: type each service, e.g. through the engine with the lambda its
|
|
32
|
+
* emitter will write (`#SQL{select * from service('/pattern')}#`). Until
|
|
33
|
+
* then every service fails, with why, so it is invalid and nothing runs.
|
|
34
|
+
*/
|
|
35
|
+
export const recheckCubeServiceSources = (
|
|
36
|
+
catalog: CubeServiceCatalog | undefined,
|
|
37
|
+
model: ModelContext,
|
|
38
|
+
sources: readonly ServiceSource[],
|
|
39
|
+
): Promise<Map<NodeId, Schema | CubeEngineError>> =>
|
|
40
|
+
Promise.resolve(
|
|
41
|
+
new Map(
|
|
42
|
+
sources.map((source) => [
|
|
43
|
+
source.id,
|
|
44
|
+
new CubeEngineError(
|
|
45
|
+
CubeEngineErrorKind.UNSUPPORTED_MODEL,
|
|
46
|
+
catalog
|
|
47
|
+
? CUBE_SERVICE_MESSAGE.NOT_READABLE
|
|
48
|
+
: CUBE_SERVICE_MESSAGE.NO_CATALOG,
|
|
49
|
+
source.id,
|
|
50
|
+
),
|
|
51
|
+
]),
|
|
52
|
+
),
|
|
53
|
+
);
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
CubeEngineErrorKind,
|
|
23
23
|
} from '../graph-manager/CubeEngine.js';
|
|
24
24
|
import type { CubeEditorState } from './CubeEditorState.js';
|
|
25
|
+
import type { CubeRunStat } from './CubeRunStatsState.js';
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
* Show Pure: the Pure text of what Execute would run, the capture node's
|
|
@@ -29,12 +30,15 @@ import type { CubeEditorState } from './CubeEditorState.js';
|
|
|
29
30
|
* Execute adds (`limit(rowLimit + 1)`, how the grid knows there are more
|
|
30
31
|
* rows), as Legend Query's own Show Pure does: only a Take or Drop the user
|
|
31
32
|
* added shows (user, 2026-10-10). For display only: the text is never parsed
|
|
32
|
-
* back (PLAN §8.7).
|
|
33
|
+
* back (PLAN §8.7). It also shows a run's lambda from the Runs panel as it
|
|
34
|
+
* ran, its row limit included, for debugging (PLAN §11.16).
|
|
33
35
|
*/
|
|
34
36
|
export class CubeShowPureState {
|
|
35
37
|
readonly editorState: CubeEditorState;
|
|
36
38
|
|
|
37
39
|
isOpen = false;
|
|
40
|
+
/** The run shown, by its label; `undefined` for the cube's query */
|
|
41
|
+
run: string | undefined;
|
|
38
42
|
text: string | undefined;
|
|
39
43
|
/** Why the engine couldn't render the query; shown in the dialog */
|
|
40
44
|
error: CubeEngineError | undefined;
|
|
@@ -45,10 +49,12 @@ export class CubeShowPureState {
|
|
|
45
49
|
constructor(editorState: CubeEditorState) {
|
|
46
50
|
makeObservable(this, {
|
|
47
51
|
isOpen: observable,
|
|
52
|
+
run: observable,
|
|
48
53
|
text: observable,
|
|
49
54
|
error: observable.ref,
|
|
50
55
|
isRendering: observable,
|
|
51
56
|
open: flow,
|
|
57
|
+
openRun: flow,
|
|
52
58
|
close: action,
|
|
53
59
|
});
|
|
54
60
|
this.editorState = editorState;
|
|
@@ -68,18 +74,14 @@ export class CubeShowPureState {
|
|
|
68
74
|
if (!execution.canExecute || runtime === undefined || model === undefined) {
|
|
69
75
|
return;
|
|
70
76
|
}
|
|
71
|
-
const request =
|
|
72
|
-
this.
|
|
73
|
-
this.text = undefined;
|
|
74
|
-
this.error = undefined;
|
|
75
|
-
this.isRendering = true;
|
|
76
|
-
try {
|
|
77
|
+
const request = this.start(undefined);
|
|
78
|
+
yield* this.render(request, async () => {
|
|
77
79
|
let databaseType: string | undefined;
|
|
78
80
|
if (needsDatabaseType(query, captureId)) {
|
|
79
|
-
|
|
81
|
+
await flowResult(this.editorState.loadModelOutline(model));
|
|
80
82
|
// closed, or opened again, while the outline loaded
|
|
81
83
|
if (request !== this.request) {
|
|
82
|
-
return;
|
|
84
|
+
return undefined;
|
|
83
85
|
}
|
|
84
86
|
databaseType = this.editorState.getRunDatabaseType(
|
|
85
87
|
query,
|
|
@@ -88,10 +90,46 @@ export class CubeShowPureState {
|
|
|
88
90
|
runtime,
|
|
89
91
|
);
|
|
90
92
|
}
|
|
91
|
-
|
|
93
|
+
return host.engine.renderPure(
|
|
92
94
|
emitter.emitExecutionLambda({ runtime, databaseType }),
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
+
);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Opens the dialog on a run of the Runs panel and renders the lambda it
|
|
101
|
+
* sent, as it ran (PLAN §11.16); does nothing for a run that failed before
|
|
102
|
+
* one was written
|
|
103
|
+
*/
|
|
104
|
+
*openRun(run: CubeRunStat): GeneratorFn<void> {
|
|
105
|
+
const { lambda } = run;
|
|
106
|
+
if (lambda === undefined) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const request = this.start(run.label);
|
|
110
|
+
yield* this.render(request, () =>
|
|
111
|
+
this.editorState.host.engine.renderPure(lambda),
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private start(run: string | undefined): number {
|
|
116
|
+
const request = ++this.request;
|
|
117
|
+
this.isOpen = true;
|
|
118
|
+
this.run = run;
|
|
119
|
+
this.text = undefined;
|
|
120
|
+
this.error = undefined;
|
|
121
|
+
this.isRendering = true;
|
|
122
|
+
return request;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Renders the text, unless the dialog was closed or opened again meanwhile */
|
|
126
|
+
private *render(
|
|
127
|
+
request: number,
|
|
128
|
+
rendering: () => Promise<string | undefined>,
|
|
129
|
+
): GeneratorFn<void> {
|
|
130
|
+
try {
|
|
131
|
+
const text = (yield rendering()) as string | undefined;
|
|
132
|
+
if (request === this.request && text !== undefined) {
|
|
95
133
|
this.text = text;
|
|
96
134
|
}
|
|
97
135
|
} catch (error) {
|
|
@@ -115,6 +153,7 @@ export class CubeShowPureState {
|
|
|
115
153
|
this.request++;
|
|
116
154
|
this.isOpen = false;
|
|
117
155
|
this.isRendering = false;
|
|
156
|
+
this.run = undefined;
|
|
118
157
|
this.text = undefined;
|
|
119
158
|
this.error = undefined;
|
|
120
159
|
}
|
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
18
|
DataProductAccessPointSource,
|
|
19
|
+
FunctionSource,
|
|
19
20
|
IngestDatasetSource,
|
|
20
21
|
RelationalTableSource,
|
|
22
|
+
ServiceSource,
|
|
21
23
|
} from '@finos/legend-cube';
|
|
22
24
|
import type { GeneratorFn } from '@finos/legend-shared';
|
|
23
25
|
import {
|
|
@@ -36,8 +38,15 @@ import type { CubeEditorState } from './CubeEditorState.js';
|
|
|
36
38
|
import { CubeDataProductTabState } from './source-picker/CubeDataProductTabState.js';
|
|
37
39
|
import { CubeDirectConnectionTabState } from './source-picker/CubeDirectConnectionTabState.js';
|
|
38
40
|
import { CubeIngestTabState } from './source-picker/CubeIngestTabState.js';
|
|
39
|
-
import {
|
|
40
|
-
|
|
41
|
+
import {
|
|
42
|
+
CubeProjectFunctionTabState,
|
|
43
|
+
CubeProjectTabState,
|
|
44
|
+
} from './source-picker/CubeProjectTabState.js';
|
|
45
|
+
import {
|
|
46
|
+
CubeInlineModelTabState,
|
|
47
|
+
CubeModelReadKind,
|
|
48
|
+
} from './source-picker/CubeInlineModelTabState.js';
|
|
49
|
+
import { CubeServiceTabState } from './source-picker/CubeServiceTabState.js';
|
|
41
50
|
import {
|
|
42
51
|
type CubeSourcePickerTab,
|
|
43
52
|
CubeSourcePickerTabKey,
|
|
@@ -56,17 +65,22 @@ export class CubeSourcePickerState {
|
|
|
56
65
|
readonly dataProductTab: CubeDataProductTabState;
|
|
57
66
|
readonly ingestTab: CubeIngestTabState;
|
|
58
67
|
readonly projectTab: CubeProjectTabState;
|
|
68
|
+
readonly projectFunctionTab: CubeProjectFunctionTabState;
|
|
69
|
+
readonly serviceTab: CubeServiceTabState;
|
|
59
70
|
|
|
60
71
|
isOpen = false;
|
|
61
72
|
activeTabKey = CubeSourcePickerTabKey.MODEL;
|
|
62
73
|
/** Open with no tab chosen yet, from the empty canvas's link (U4(b)) */
|
|
63
74
|
isChoosingTab = false;
|
|
75
|
+
/** Opened from the Examples dialog's dataset, so it offers a way back to it */
|
|
76
|
+
isFromExamples = false;
|
|
64
77
|
|
|
65
78
|
constructor(editorState: CubeEditorState) {
|
|
66
79
|
makeObservable(this, {
|
|
67
80
|
isOpen: observable,
|
|
68
81
|
activeTabKey: observable,
|
|
69
82
|
isChoosingTab: observable,
|
|
83
|
+
isFromExamples: observable,
|
|
70
84
|
tabs: computed,
|
|
71
85
|
fixedTab: computed,
|
|
72
86
|
activeTab: computed,
|
|
@@ -74,6 +88,9 @@ export class CubeSourcePickerState {
|
|
|
74
88
|
canConfirm: computed,
|
|
75
89
|
open: action,
|
|
76
90
|
openToChoose: action,
|
|
91
|
+
openForSourceType: action,
|
|
92
|
+
openFromExamples: action,
|
|
93
|
+
backToExamples: action,
|
|
77
94
|
selectTab: action,
|
|
78
95
|
close: action,
|
|
79
96
|
confirm: flow,
|
|
@@ -84,6 +101,8 @@ export class CubeSourcePickerState {
|
|
|
84
101
|
this.dataProductTab = new CubeDataProductTabState(editorState);
|
|
85
102
|
this.ingestTab = new CubeIngestTabState(editorState);
|
|
86
103
|
this.projectTab = new CubeProjectTabState(editorState);
|
|
104
|
+
this.projectFunctionTab = new CubeProjectFunctionTabState(editorState);
|
|
105
|
+
this.serviceTab = new CubeServiceTabState(editorState);
|
|
87
106
|
}
|
|
88
107
|
|
|
89
108
|
/** The tabs that add their own kind of source, each from its palette item */
|
|
@@ -91,6 +110,7 @@ export class CubeSourcePickerState {
|
|
|
91
110
|
return new Map<string, CubeSourcePickerTab>([
|
|
92
111
|
[DataProductAccessPointSource.TYPE, this.dataProductTab],
|
|
93
112
|
[IngestDatasetSource.TYPE, this.ingestTab],
|
|
113
|
+
[ServiceSource.TYPE, this.serviceTab],
|
|
94
114
|
]);
|
|
95
115
|
}
|
|
96
116
|
|
|
@@ -99,9 +119,11 @@ export class CubeSourcePickerState {
|
|
|
99
119
|
return [
|
|
100
120
|
this.modelTab,
|
|
101
121
|
this.projectTab,
|
|
122
|
+
this.projectFunctionTab,
|
|
102
123
|
this.directTab,
|
|
103
124
|
this.dataProductTab,
|
|
104
125
|
this.ingestTab,
|
|
126
|
+
this.serviceTab,
|
|
105
127
|
].filter((tab) => tab.isAvailable);
|
|
106
128
|
}
|
|
107
129
|
|
|
@@ -114,22 +136,27 @@ export class CubeSourcePickerState {
|
|
|
114
136
|
return context
|
|
115
137
|
? ([
|
|
116
138
|
this.projectTab,
|
|
139
|
+
this.projectFunctionTab,
|
|
117
140
|
this.directTab,
|
|
118
141
|
this.dataProductTab,
|
|
119
142
|
this.ingestTab,
|
|
143
|
+
this.serviceTab,
|
|
120
144
|
].find((tab) => tab.ownsContext(context)) ?? this.modelTab)
|
|
121
145
|
: undefined;
|
|
122
146
|
}
|
|
123
147
|
|
|
148
|
+
/** The tab open last, else the first the host serves */
|
|
124
149
|
get activeTab(): CubeSourcePickerTab {
|
|
125
150
|
return (
|
|
126
|
-
this.tabs.find((tab) => tab.key === this.activeTabKey) ??
|
|
151
|
+
this.tabs.find((tab) => tab.key === this.activeTabKey) ??
|
|
152
|
+
this.tabs[0] ??
|
|
153
|
+
this.modelTab
|
|
127
154
|
);
|
|
128
155
|
}
|
|
129
156
|
|
|
130
157
|
/**
|
|
131
|
-
* The tab a palette item opens (DP-3): a data product's
|
|
132
|
-
* set's own tab, when the host serves it; for a table, the table tab the
|
|
158
|
+
* The tab a palette item opens (DP-3): a data product's, an ingest data
|
|
159
|
+
* set's or a service's own tab, when the host serves it; for a table, the table tab the
|
|
133
160
|
* cube uses, else the table tab open last, else the Sample Data tab
|
|
134
161
|
*/
|
|
135
162
|
tabForSourceType(type: string): CubeSourcePickerTab | undefined {
|
|
@@ -137,24 +164,57 @@ export class CubeSourcePickerState {
|
|
|
137
164
|
if (dedicated) {
|
|
138
165
|
return dedicated.isAvailable ? dedicated : undefined;
|
|
139
166
|
}
|
|
140
|
-
if (type !== RelationalTableSource.TYPE) {
|
|
167
|
+
if (type !== RelationalTableSource.TYPE && type !== FunctionSource.TYPE) {
|
|
141
168
|
return undefined;
|
|
142
169
|
}
|
|
143
170
|
const dedicatedTabs = [...this.dedicatedTabs.values()];
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
171
|
+
// a table comes from a model or a connection, a function from a model:
|
|
172
|
+
// a project's tables and functions each have their own tab
|
|
173
|
+
const readers = this.tabs.filter((tab) =>
|
|
174
|
+
type === FunctionSource.TYPE
|
|
175
|
+
? tab instanceof CubeInlineModelTabState &&
|
|
176
|
+
tab.readKinds.includes(CubeModelReadKind.FUNCTION)
|
|
177
|
+
: !dedicatedTabs.includes(tab) &&
|
|
178
|
+
(!(tab instanceof CubeInlineModelTabState) ||
|
|
179
|
+
tab.readKinds.includes(CubeModelReadKind.TABLE)),
|
|
180
|
+
);
|
|
181
|
+
return this.fixedTab
|
|
182
|
+
? readers.find((tab) => this.isTabEnabled(tab))
|
|
183
|
+
: (readers.find((tab) => tab === this.activeTab) ?? readers[0]);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Opens the dialog on the tab a palette item's type opens; a model's tab
|
|
188
|
+
* reads tables or functions as the item asks
|
|
189
|
+
*/
|
|
190
|
+
openForSourceType(type: string): void {
|
|
191
|
+
const tab = this.tabForSourceType(type);
|
|
192
|
+
if (tab instanceof CubeInlineModelTabState) {
|
|
193
|
+
tab.setReadKind(
|
|
194
|
+
type === FunctionSource.TYPE
|
|
195
|
+
? CubeModelReadKind.FUNCTION
|
|
196
|
+
: CubeModelReadKind.TABLE,
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
this.open(tab?.key);
|
|
149
200
|
}
|
|
150
201
|
|
|
151
202
|
/**
|
|
152
203
|
* A cube with a fixed context takes sources from its own tab only, and
|
|
153
|
-
* none when the host doesn't serve that tab
|
|
204
|
+
* none when the host doesn't serve that tab; a project cube from both of
|
|
205
|
+
* its tabs, Project Database and Project Function (PLAN §6.5)
|
|
154
206
|
*/
|
|
155
207
|
isTabEnabled(tab: CubeSourcePickerTab): boolean {
|
|
208
|
+
const { fixedTab } = this;
|
|
209
|
+
const { context } = this.editorState.document;
|
|
156
210
|
return (
|
|
157
|
-
tab.isAvailable &&
|
|
211
|
+
tab.isAvailable &&
|
|
212
|
+
(fixedTab === undefined ||
|
|
213
|
+
tab === fixedTab ||
|
|
214
|
+
// a project cube's tables and functions, each from its tab
|
|
215
|
+
(context !== undefined &&
|
|
216
|
+
tab !== this.modelTab &&
|
|
217
|
+
tab.ownsContext(context)))
|
|
158
218
|
);
|
|
159
219
|
}
|
|
160
220
|
|
|
@@ -191,6 +251,7 @@ export class CubeSourcePickerState {
|
|
|
191
251
|
const { fixedTab } = this;
|
|
192
252
|
this.isOpen = true;
|
|
193
253
|
this.isChoosingTab = false;
|
|
254
|
+
this.isFromExamples = false;
|
|
194
255
|
const tab =
|
|
195
256
|
fixedTab ??
|
|
196
257
|
this.tabs.find((candidate) => candidate.key === tabKey) ??
|
|
@@ -230,15 +291,30 @@ export class CubeSourcePickerState {
|
|
|
230
291
|
}
|
|
231
292
|
}
|
|
232
293
|
|
|
294
|
+
/** Opens on a tab, as `open` does, offering a way back to the Examples dialog */
|
|
295
|
+
openFromExamples(tabKey: CubeSourcePickerTabKey): void {
|
|
296
|
+
this.open(tabKey);
|
|
297
|
+
this.isFromExamples = this.isOpen;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/** Closes the dialog and reopens the Examples dialog it came from */
|
|
301
|
+
backToExamples(): void {
|
|
302
|
+
this.close();
|
|
303
|
+
this.editorState.examples.open();
|
|
304
|
+
}
|
|
305
|
+
|
|
233
306
|
/** Closes the dialog; a source still being typed is not added */
|
|
234
307
|
close(): void {
|
|
235
308
|
this.isOpen = false;
|
|
309
|
+
this.isFromExamples = false;
|
|
236
310
|
this.isChoosingTab = false;
|
|
237
311
|
this.modelTab.close();
|
|
238
312
|
this.directTab.close();
|
|
239
313
|
this.dataProductTab.close();
|
|
240
314
|
this.ingestTab.close();
|
|
241
315
|
this.projectTab.close();
|
|
316
|
+
this.projectFunctionTab.close();
|
|
317
|
+
this.serviceTab.close();
|
|
242
318
|
}
|
|
243
319
|
|
|
244
320
|
/** Adds the open tab's source, then closes the dialog */
|
|
@@ -0,0 +1,116 @@
|
|
|
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 { action, computed, flowResult, makeObservable, observable } from 'mobx';
|
|
18
|
+
import {
|
|
19
|
+
CUBE_EDITOR_TOUR,
|
|
20
|
+
CUBE_TOUR_EXAMPLE_ID,
|
|
21
|
+
type CubeTourStep,
|
|
22
|
+
} from '../__lib__/LegendCubeTour.js';
|
|
23
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
24
|
+
import { isCubeSampleDataOffered } from './CubeHost.js';
|
|
25
|
+
|
|
26
|
+
/** Whether a step can be shown: its controls are on the page */
|
|
27
|
+
export type CubeTourStepShown = (step: CubeTourStep) => boolean;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The editor's guided tour (PLAN §11.21): one step at a time, each pointing
|
|
31
|
+
* at its controls; a step whose controls aren't on the page is skipped. It
|
|
32
|
+
* starts on the cube as it is, the node editor's edits applied first; on an
|
|
33
|
+
* empty cube, where examples are offered, it opens one to show (one undo
|
|
34
|
+
* step). Nothing starts it but the user.
|
|
35
|
+
*/
|
|
36
|
+
export class CubeTourState {
|
|
37
|
+
readonly editorState: CubeEditorState;
|
|
38
|
+
readonly steps: readonly CubeTourStep[] = CUBE_EDITOR_TOUR;
|
|
39
|
+
|
|
40
|
+
isOpen = false;
|
|
41
|
+
/** The step shown, an index into `steps` */
|
|
42
|
+
index = 0;
|
|
43
|
+
/** Whether this tour opened its example */
|
|
44
|
+
openedExample = false;
|
|
45
|
+
|
|
46
|
+
constructor(editorState: CubeEditorState) {
|
|
47
|
+
makeObservable(this, {
|
|
48
|
+
isOpen: observable,
|
|
49
|
+
index: observable,
|
|
50
|
+
openedExample: observable,
|
|
51
|
+
step: computed,
|
|
52
|
+
start: action,
|
|
53
|
+
move: action,
|
|
54
|
+
close: action,
|
|
55
|
+
});
|
|
56
|
+
this.editorState = editorState;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
get step(): CubeTourStep | undefined {
|
|
60
|
+
return this.isOpen ? this.steps[this.index] : undefined;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Starts the tour at its first step; not while the node editor keeps its
|
|
65
|
+
* edits open, as other actions wait for it
|
|
66
|
+
*/
|
|
67
|
+
start(): void {
|
|
68
|
+
const { editorState } = this;
|
|
69
|
+
if (this.isOpen || !editorState.nodeEditor.finish()) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const example =
|
|
73
|
+
editorState.document.query.isEmpty &&
|
|
74
|
+
!editorState.readOnly &&
|
|
75
|
+
isCubeSampleDataOffered(editorState.host)
|
|
76
|
+
? editorState.examples.examples.find(
|
|
77
|
+
(candidate) => candidate.id === CUBE_TOUR_EXAMPLE_ID,
|
|
78
|
+
)
|
|
79
|
+
: undefined;
|
|
80
|
+
this.openedExample = example !== undefined;
|
|
81
|
+
this.index = 0;
|
|
82
|
+
this.isOpen = true;
|
|
83
|
+
if (example) {
|
|
84
|
+
// the tour goes on while it opens and runs: its steps show as they can
|
|
85
|
+
flowResult(editorState.examples.openExample(example)).catch(
|
|
86
|
+
editorState.host.applicationStore.alertUnhandledError,
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The step `by` steps on (1) or back (-1), skipping those not shown; past
|
|
93
|
+
* the last, the tour ends; before the first, it stays
|
|
94
|
+
*/
|
|
95
|
+
move(by: 1 | -1, isShown: CubeTourStepShown): void {
|
|
96
|
+
for (
|
|
97
|
+
let index = this.index + by;
|
|
98
|
+
index >= 0 && index < this.steps.length;
|
|
99
|
+
index += by
|
|
100
|
+
) {
|
|
101
|
+
const step = this.steps[index];
|
|
102
|
+
if (step && isShown(step)) {
|
|
103
|
+
this.index = index;
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (by === 1) {
|
|
108
|
+
this.close();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
close(): void {
|
|
113
|
+
this.isOpen = false;
|
|
114
|
+
this.index = 0;
|
|
115
|
+
}
|
|
116
|
+
}
|