@finos/legend-cube-builder 0.0.0-stage → 0.0.3
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/LICENSE +201 -0
- package/README.md +64 -2
- package/docs/adding-an-operation.md +92 -0
- package/docs/hosting.md +79 -0
- package/docs/testing.md +83 -0
- package/lib/__lib__/LegendCubeCommand.d.ts +26 -0
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeCommand.js +40 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts +19 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.js +35 -0
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -0
- package/lib/__lib__/LegendCubeLabels.d.ts +87 -0
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeLabels.js +128 -0
- package/lib/__lib__/LegendCubeLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +33 -0
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeTesting.js +34 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts +24 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.js +37 -0
- package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +47 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.js +106 -0
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.d.ts +31 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.d.ts.map +1 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.js +102 -0
- package/lib/__test-utils__/CubeNorthwindTestQueries.js.map +1 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +42 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.js +92 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts +33 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubePageTestUtils.js +68 -0
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts +30 -0
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -0
- package/lib/__test-utils__/CubeTestApplication.js +57 -0
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +41 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.js +91 -0
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -0
- package/lib/components/CubeButton.d.ts +20 -0
- package/lib/components/CubeButton.d.ts.map +1 -0
- package/lib/components/CubeButton.js +24 -0
- package/lib/components/CubeButton.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +31 -0
- package/lib/components/CubeEditor.d.ts.map +1 -0
- package/lib/components/CubeEditor.js +90 -0
- package/lib/components/CubeEditor.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts +23 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -0
- package/lib/components/CubeNodeIcon.js +42 -0
- package/lib/components/CubeNodeIcon.js.map +1 -0
- package/lib/components/canvas/CubeCanvas.d.ts +37 -0
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvas.js +137 -0
- package/lib/components/canvas/CubeCanvas.js.map +1 -0
- package/lib/components/canvas/CubeCanvasContext.d.ts +19 -0
- package/lib/components/canvas/CubeCanvasContext.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasContext.js +22 -0
- package/lib/components/canvas/CubeCanvasContext.js.map +1 -0
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts +28 -0
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasContextMenu.js +35 -0
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -0
- package/lib/components/canvas/CubeCanvasDnd.d.ts +43 -0
- package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasDnd.js +51 -0
- package/lib/components/canvas/CubeCanvasDnd.js.map +1 -0
- package/lib/components/canvas/CubeCanvasEdge.d.ts +24 -0
- package/lib/components/canvas/CubeCanvasEdge.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasEdge.js +33 -0
- package/lib/components/canvas/CubeCanvasEdge.js.map +1 -0
- package/lib/components/canvas/CubeCanvasElements.d.ts +66 -0
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasElements.js +97 -0
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -0
- package/lib/components/canvas/CubeCanvasLayout.d.ts +32 -0
- package/lib/components/canvas/CubeCanvasLayout.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasLayout.js +63 -0
- package/lib/components/canvas/CubeCanvasLayout.js.map +1 -0
- package/lib/components/canvas/CubeCanvasNode.d.ts +29 -0
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasNode.js +75 -0
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -0
- package/lib/components/editors/CubeColumnPicker.d.ts +47 -0
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -0
- package/lib/components/editors/CubeColumnPicker.js +56 -0
- package/lib/components/editors/CubeColumnPicker.js.map +1 -0
- package/lib/components/editors/CubeDistinctEditor.d.ts +23 -0
- package/lib/components/editors/CubeDistinctEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDistinctEditor.js +24 -0
- package/lib/components/editors/CubeDistinctEditor.js.map +1 -0
- package/lib/components/editors/CubeFilterEditor.d.ts +26 -0
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeFilterEditor.js +90 -0
- package/lib/components/editors/CubeFilterEditor.js.map +1 -0
- package/lib/components/editors/CubeIntegerField.d.ts +29 -0
- package/lib/components/editors/CubeIntegerField.d.ts.map +1 -0
- package/lib/components/editors/CubeIntegerField.js +30 -0
- package/lib/components/editors/CubeIntegerField.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts +26 -0
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeJoinEditor.js +84 -0
- package/lib/components/editors/CubeJoinEditor.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts +29 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.js +72 -0
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts +44 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.js +43 -0
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -0
- package/lib/components/editors/CubeRenameEditor.d.ts +26 -0
- package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeRenameEditor.js +58 -0
- package/lib/components/editors/CubeRenameEditor.js.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts +26 -0
- package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeRestrictEditor.js +23 -0
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -0
- package/lib/components/editors/CubeRowCountEditor.d.ts +25 -0
- package/lib/components/editors/CubeRowCountEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeRowCountEditor.js +38 -0
- package/lib/components/editors/CubeRowCountEditor.js.map +1 -0
- package/lib/components/editors/CubeSliceEditor.d.ts +25 -0
- package/lib/components/editors/CubeSliceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSliceEditor.js +40 -0
- package/lib/components/editors/CubeSliceEditor.js.map +1 -0
- package/lib/components/editors/CubeSortEditor.d.ts +27 -0
- package/lib/components/editors/CubeSortEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSortEditor.js +72 -0
- package/lib/components/editors/CubeSortEditor.js.map +1 -0
- package/lib/components/editors/CubeSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSourceEditor.js +41 -0
- package/lib/components/editors/CubeSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeValueEditor.d.ts +40 -0
- package/lib/components/editors/CubeValueEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeValueEditor.js +178 -0
- package/lib/components/editors/CubeValueEditor.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts +23 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -0
- package/lib/components/grid/CubeGridRegion.js +94 -0
- package/lib/components/grid/CubeGridRegion.js.map +1 -0
- package/lib/components/grid/CubeGridValues.d.ts +25 -0
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -0
- package/lib/components/grid/CubeGridValues.js +95 -0
- package/lib/components/grid/CubeGridValues.js.map +1 -0
- package/lib/components/grid/CubeResultGrid.d.ts +39 -0
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -0
- package/lib/components/grid/CubeResultGrid.js +86 -0
- package/lib/components/grid/CubeResultGrid.js.map +1 -0
- package/lib/components/palette/CubePalette.d.ts +29 -0
- package/lib/components/palette/CubePalette.d.ts.map +1 -0
- package/lib/components/palette/CubePalette.js +73 -0
- package/lib/components/palette/CubePalette.js.map +1 -0
- package/lib/components/show-pure/CubeShowPureDialog.d.ts +23 -0
- package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -0
- package/lib/components/show-pure/CubeShowPureDialog.js +37 -0
- package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts +22 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.js +89 -0
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts +26 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +45 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -0
- package/lib/graph-manager/CubeEngine.d.ts +128 -0
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -0
- package/lib/graph-manager/CubeEngine.js +61 -0
- package/lib/graph-manager/CubeEngine.js.map +1 -0
- package/lib/graph-manager/CubeModelOutlineHelper.d.ts +33 -0
- package/lib/graph-manager/CubeModelOutlineHelper.d.ts.map +1 -0
- package/lib/graph-manager/CubeModelOutlineHelper.js +45 -0
- package/lib/graph-manager/CubeModelOutlineHelper.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +26 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +22 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts +27 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +76 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.d.ts +27 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.js +82 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts +32 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +195 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +20 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +174 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.d.ts +24 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.js +43 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +45 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +171 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +22 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +79 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -0
- package/lib/index.css +17 -0
- package/lib/index.css.map +1 -0
- package/lib/index.d.ts +25 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +24 -0
- package/lib/index.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +236 -0
- package/lib/stores/CubeEditorState.d.ts.map +1 -0
- package/lib/stores/CubeEditorState.js +632 -0
- package/lib/stores/CubeEditorState.js.map +1 -0
- package/lib/stores/CubeExecutionState.d.ts +67 -0
- package/lib/stores/CubeExecutionState.d.ts.map +1 -0
- package/lib/stores/CubeExecutionState.js +212 -0
- package/lib/stores/CubeExecutionState.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +40 -0
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -0
- package/lib/stores/CubeGridQuickActions.js +86 -0
- package/lib/stores/CubeGridQuickActions.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +31 -0
- package/lib/stores/CubeHost.d.ts.map +1 -0
- package/lib/stores/CubeHost.js +17 -0
- package/lib/stores/CubeHost.js.map +1 -0
- package/lib/stores/CubeNodeEditorState.d.ts +103 -0
- package/lib/stores/CubeNodeEditorState.d.ts.map +1 -0
- package/lib/stores/CubeNodeEditorState.js +262 -0
- package/lib/stores/CubeNodeEditorState.js.map +1 -0
- package/lib/stores/CubeShowPureState.d.ts +41 -0
- package/lib/stores/CubeShowPureState.d.ts.map +1 -0
- package/lib/stores/CubeShowPureState.js +100 -0
- package/lib/stores/CubeShowPureState.js.map +1 -0
- package/lib/stores/CubeSourcePickerState.d.ts +98 -0
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -0
- package/lib/stores/CubeSourcePickerState.js +334 -0
- package/lib/stores/CubeSourcePickerState.js.map +1 -0
- package/lib/stores/CubeSpecTransferState.d.ts +60 -0
- package/lib/stores/CubeSpecTransferState.d.ts.map +1 -0
- package/lib/stores/CubeSpecTransferState.js +167 -0
- package/lib/stores/CubeSpecTransferState.js.map +1 -0
- package/lib/stores/LocalModelCatalog.d.ts +37 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -0
- package/lib/stores/LocalModelCatalog.js +49 -0
- package/lib/stores/LocalModelCatalog.js.map +1 -0
- package/lib/stores/editors/CubeFilterDraft.d.ts +61 -0
- package/lib/stores/editors/CubeFilterDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeFilterDraft.js +186 -0
- package/lib/stores/editors/CubeFilterDraft.js.map +1 -0
- package/lib/stores/editors/CubeIntegerText.d.ts +24 -0
- package/lib/stores/editors/CubeIntegerText.d.ts.map +1 -0
- package/lib/stores/editors/CubeIntegerText.js +33 -0
- package/lib/stores/editors/CubeIntegerText.js.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts +71 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.js +145 -0
- package/lib/stores/editors/CubeJoinDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts +38 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.js +35 -0
- package/lib/stores/editors/CubeNodeDraft.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +35 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.js +55 -0
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -0
- package/lib/stores/editors/CubeRenameDraft.d.ts +44 -0
- package/lib/stores/editors/CubeRenameDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeRenameDraft.js +79 -0
- package/lib/stores/editors/CubeRenameDraft.js.map +1 -0
- package/lib/stores/editors/CubeRestrictDraft.d.ts +37 -0
- package/lib/stores/editors/CubeRestrictDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeRestrictDraft.js +73 -0
- package/lib/stores/editors/CubeRestrictDraft.js.map +1 -0
- package/lib/stores/editors/CubeRowCountDraft.d.ts +42 -0
- package/lib/stores/editors/CubeRowCountDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeRowCountDraft.js +55 -0
- package/lib/stores/editors/CubeRowCountDraft.js.map +1 -0
- package/lib/stores/editors/CubeSliceDraft.d.ts +42 -0
- package/lib/stores/editors/CubeSliceDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeSliceDraft.js +72 -0
- package/lib/stores/editors/CubeSliceDraft.js.map +1 -0
- package/lib/stores/editors/CubeSortDraft.d.ts +49 -0
- package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeSortDraft.js +99 -0
- package/lib/stores/editors/CubeSortDraft.js.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts +23 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.js +338 -0
- package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -0
- package/package.json +81 -3
- package/src/__lib__/LegendCubeCommand.ts +44 -0
- package/src/__lib__/LegendCubeHelpText.ts +58 -0
- package/src/__lib__/LegendCubeLabels.ts +171 -0
- package/src/__lib__/LegendCubeTesting.ts +33 -0
- package/src/__test-utils__/CubeCanvasTestUtils.ts +53 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +172 -0
- package/src/__test-utils__/CubeNorthwindTestQueries.ts +165 -0
- package/src/__test-utils__/CubeOperationsTestUtils.ts +177 -0
- package/src/__test-utils__/CubePageTestUtils.tsx +96 -0
- package/src/__test-utils__/CubeTestApplication.ts +82 -0
- package/src/__test-utils__/FakeCubeEngine.ts +145 -0
- package/src/components/CubeButton.tsx +35 -0
- package/src/components/CubeEditor.tsx +239 -0
- package/src/components/CubeNodeIcon.tsx +64 -0
- package/src/components/canvas/CubeCanvas.tsx +262 -0
- package/src/components/canvas/CubeCanvasContext.ts +31 -0
- package/src/components/canvas/CubeCanvasContextMenu.tsx +89 -0
- package/src/components/canvas/CubeCanvasDnd.ts +82 -0
- package/src/components/canvas/CubeCanvasEdge.tsx +57 -0
- package/src/components/canvas/CubeCanvasElements.ts +153 -0
- package/src/components/canvas/CubeCanvasLayout.ts +88 -0
- package/src/components/canvas/CubeCanvasNode.tsx +149 -0
- package/src/components/editors/CubeColumnPicker.tsx +138 -0
- package/src/components/editors/CubeDistinctEditor.tsx +28 -0
- package/src/components/editors/CubeFilterEditor.tsx +309 -0
- package/src/components/editors/CubeIntegerField.tsx +51 -0
- package/src/components/editors/CubeJoinEditor.tsx +247 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +215 -0
- package/src/components/editors/CubeNodeEditorRegistry.ts +81 -0
- package/src/components/editors/CubeRenameEditor.tsx +143 -0
- package/src/components/editors/CubeRestrictEditor.tsx +103 -0
- package/src/components/editors/CubeRowCountEditor.tsx +53 -0
- package/src/components/editors/CubeSliceEditor.tsx +69 -0
- package/src/components/editors/CubeSortEditor.tsx +206 -0
- package/src/components/editors/CubeSourceEditor.tsx +106 -0
- package/src/components/editors/CubeValueEditor.tsx +333 -0
- package/src/components/grid/CubeGridRegion.tsx +275 -0
- package/src/components/grid/CubeGridValues.ts +125 -0
- package/src/components/grid/CubeResultGrid.tsx +138 -0
- package/src/components/palette/CubePalette.tsx +177 -0
- package/src/components/show-pure/CubeShowPureDialog.tsx +101 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +304 -0
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +157 -0
- package/src/graph-manager/CubeEngine.ts +169 -0
- package/src/graph-manager/CubeModelOutlineHelper.ts +58 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +34 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +109 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.ts +115 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +257 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +243 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.ts +58 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +278 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +127 -0
- package/src/index.ts +41 -0
- package/src/stores/CubeEditorState.ts +807 -0
- package/src/stores/CubeExecutionState.ts +288 -0
- package/src/stores/CubeGridQuickActions.ts +129 -0
- package/src/stores/CubeHost.ts +32 -0
- package/src/stores/CubeNodeEditorState.ts +324 -0
- package/src/stores/CubeShowPureState.ts +118 -0
- package/src/stores/CubeSourcePickerState.ts +426 -0
- package/src/stores/CubeSpecTransferState.ts +198 -0
- package/src/stores/LocalModelCatalog.ts +70 -0
- package/src/stores/editors/CubeFilterDraft.ts +241 -0
- package/src/stores/editors/CubeIntegerText.ts +34 -0
- package/src/stores/editors/CubeJoinDraft.ts +224 -0
- package/src/stores/editors/CubeNodeDraft.ts +46 -0
- package/src/stores/editors/CubeNodeDraftRegistry.ts +83 -0
- package/src/stores/editors/CubeRenameDraft.ts +110 -0
- package/src/stores/editors/CubeRestrictDraft.ts +83 -0
- package/src/stores/editors/CubeRowCountDraft.ts +69 -0
- package/src/stores/editors/CubeSliceDraft.ts +87 -0
- package/src/stores/editors/CubeSortDraft.ts +135 -0
- package/src/stores/fixtures/CubeNorthwindModel.ts +355 -0
- package/tsconfig.json +133 -0
|
@@ -0,0 +1,262 @@
|
|
|
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
|
+
import { canFixJoinDuplicates, fixJoinDuplicates, } from '@finos/legend-cube';
|
|
17
|
+
import { action, computed, makeObservable, observable, reaction, } from 'mobx';
|
|
18
|
+
import { CUBE_EDITOR_CLOSED_REASON, getEditorClosedNotice, } from '../__lib__/LegendCubeLabels.js';
|
|
19
|
+
import { createCubeNodeDraft } from './editors/CubeNodeDraftRegistry.js';
|
|
20
|
+
/**
|
|
21
|
+
* Whether two nodes of the same id save the same: their own fields, as the
|
|
22
|
+
* spec stores them, and the keys this version doesn't know. A node of a type
|
|
23
|
+
* the registry doesn't know is the same only as itself.
|
|
24
|
+
*/
|
|
25
|
+
export const isSameNodeContent = (registry, a, b) => {
|
|
26
|
+
if (a === b) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const definition = registry.get(a.type);
|
|
30
|
+
return (definition !== undefined &&
|
|
31
|
+
a.type === b.type &&
|
|
32
|
+
JSON.stringify([definition.spec.encode(a), a.rest]) ===
|
|
33
|
+
JSON.stringify([definition.spec.encode(b), b.rest]));
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* The node editor in the side panel (PLAN §7.4, spec §17.5). Opening it
|
|
37
|
+
* never changes which node Execute runs. Edits go to a draft, and only Apply,
|
|
38
|
+
* or closing the panel, stores them, as one undo step; Cancel drops them.
|
|
39
|
+
*
|
|
40
|
+
* The panel follows the cube (user's choice, 2026-10-07): when the node it
|
|
41
|
+
* shows is replaced or removed underneath it, by Undo, a re-check or a
|
|
42
|
+
* Remove, a panel with edits closes without applying them and says so; one
|
|
43
|
+
* without edits shows the new node, or closes when the node is gone.
|
|
44
|
+
*/
|
|
45
|
+
export class CubeNodeEditorState {
|
|
46
|
+
editorState;
|
|
47
|
+
/** The id of the node the panel shows, while it is open */
|
|
48
|
+
nodeId;
|
|
49
|
+
/** The key of the node the draft was made from */
|
|
50
|
+
nodeKey;
|
|
51
|
+
draft;
|
|
52
|
+
/** Why the panel closed by itself, until it opens again or is dismissed */
|
|
53
|
+
notice;
|
|
54
|
+
disposeSync;
|
|
55
|
+
constructor(editorState) {
|
|
56
|
+
makeObservable(this, {
|
|
57
|
+
nodeId: observable,
|
|
58
|
+
nodeKey: observable,
|
|
59
|
+
draft: observable.ref,
|
|
60
|
+
notice: observable,
|
|
61
|
+
node: computed,
|
|
62
|
+
edited: computed,
|
|
63
|
+
hasChanges: computed,
|
|
64
|
+
open: action,
|
|
65
|
+
canSwapInputs: computed,
|
|
66
|
+
canRenameDuplicateColumns: computed,
|
|
67
|
+
apply: action,
|
|
68
|
+
swapInputs: action,
|
|
69
|
+
renameDuplicateColumns: action,
|
|
70
|
+
close: action,
|
|
71
|
+
cancel: action,
|
|
72
|
+
discard: action,
|
|
73
|
+
dismissNotice: action,
|
|
74
|
+
sync: action,
|
|
75
|
+
});
|
|
76
|
+
this.editorState = editorState;
|
|
77
|
+
this.disposeSync = reaction(() => this.node, () => this.sync());
|
|
78
|
+
}
|
|
79
|
+
/** The node the panel shows, as the cube has it now */
|
|
80
|
+
get node() {
|
|
81
|
+
return this.nodeId === undefined
|
|
82
|
+
? undefined
|
|
83
|
+
: this.editorState.document.query.getNode(this.nodeId);
|
|
84
|
+
}
|
|
85
|
+
/** The node Apply would store, built once per edit */
|
|
86
|
+
get edited() {
|
|
87
|
+
return this.draft?.build();
|
|
88
|
+
}
|
|
89
|
+
/** The draft saves differently from the node it was made from */
|
|
90
|
+
get hasChanges() {
|
|
91
|
+
const { draft, edited } = this;
|
|
92
|
+
return (draft !== undefined &&
|
|
93
|
+
edited !== undefined &&
|
|
94
|
+
!isSameNodeContent(this.editorState.registry, edited, draft.original));
|
|
95
|
+
}
|
|
96
|
+
/** Opens the panel on a node, closing (and so applying) the one it showed */
|
|
97
|
+
open(nodeId) {
|
|
98
|
+
if (nodeId === this.nodeId) {
|
|
99
|
+
this.notice = undefined;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const node = this.editorState.document.query.getNode(nodeId);
|
|
103
|
+
if (!node) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
this.close();
|
|
107
|
+
this.notice = undefined;
|
|
108
|
+
this.bind(node);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Stores the draft in place of the node, as one undo step, and goes on
|
|
112
|
+
* editing the stored node. Does nothing without changes, or while the cube
|
|
113
|
+
* is read-only.
|
|
114
|
+
*/
|
|
115
|
+
apply() {
|
|
116
|
+
const { node, edited } = this;
|
|
117
|
+
if (!node ||
|
|
118
|
+
!edited ||
|
|
119
|
+
node.key !== this.nodeKey ||
|
|
120
|
+
!this.hasChanges ||
|
|
121
|
+
this.editorState.readOnly) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const { query } = this.editorState.document;
|
|
125
|
+
if (query.canReplace(edited)) {
|
|
126
|
+
this.editorState.applyQuery(query.replace(edited));
|
|
127
|
+
this.bind(edited);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
get canSwapInputs() {
|
|
131
|
+
const { node } = this;
|
|
132
|
+
return (node !== undefined &&
|
|
133
|
+
!this.editorState.readOnly &&
|
|
134
|
+
this.editorState.document.query.canSwapInputs(node.id));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Swaps the node's two inputs (a Join's Swap Inputs, spec §17.6), applying
|
|
138
|
+
* the draft first, as one undo step, then goes on editing the swapped
|
|
139
|
+
* node, whose settings followed its inputs
|
|
140
|
+
*/
|
|
141
|
+
swapInputs() {
|
|
142
|
+
const { node, edited } = this;
|
|
143
|
+
if (!node || !edited || node.key !== this.nodeKey || !this.canSwapInputs) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
let { query } = this.editorState.document;
|
|
147
|
+
if (this.hasChanges && query.canReplace(edited)) {
|
|
148
|
+
query = query.replace(edited);
|
|
149
|
+
}
|
|
150
|
+
query = query.swapInputs(node.id);
|
|
151
|
+
this.editorState.applyQuery(query);
|
|
152
|
+
this.bind(query.getNode(node.id) ?? node);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The cube's query with the draft in place of its node, when it has
|
|
156
|
+
* changes, and the schemas of the node's inputs, which the draft doesn't
|
|
157
|
+
* change
|
|
158
|
+
*/
|
|
159
|
+
get queryWithEdits() {
|
|
160
|
+
const { node, edited } = this;
|
|
161
|
+
let { query } = this.editorState.document;
|
|
162
|
+
if (edited && this.hasChanges && query.canReplace(edited)) {
|
|
163
|
+
query = query.replace(edited);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
query,
|
|
167
|
+
inputSchemas: node
|
|
168
|
+
? query
|
|
169
|
+
.getInputIds(node.id)
|
|
170
|
+
.map((inputId) => inputId === undefined
|
|
171
|
+
? undefined
|
|
172
|
+
: this.editorState.analysis.schemas.get(inputId))
|
|
173
|
+
: [],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Whether the join being edited, edits included, can have the columns its
|
|
178
|
+
* inputs share renamed (spec §7.11's autofix, PLAN §11.4): its only problem
|
|
179
|
+
* is the duplicate rule, and the cube isn't read-only
|
|
180
|
+
*/
|
|
181
|
+
get canRenameDuplicateColumns() {
|
|
182
|
+
const { node } = this;
|
|
183
|
+
if (!node || node.key !== this.nodeKey || this.editorState.readOnly) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
const { query, inputSchemas } = this.queryWithEdits;
|
|
187
|
+
const [leftSchema, rightSchema] = inputSchemas;
|
|
188
|
+
return canFixJoinDuplicates(query, node.id, leftSchema, rightSchema);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Renames the columns the join's inputs share with a Rename before each
|
|
192
|
+
* input, applying the draft first, as one undo step, then goes on editing
|
|
193
|
+
* the join, whose keys follow the renames
|
|
194
|
+
*/
|
|
195
|
+
renameDuplicateColumns() {
|
|
196
|
+
const { node } = this;
|
|
197
|
+
if (!node || !this.canRenameDuplicateColumns) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const { query, inputSchemas } = this.queryWithEdits;
|
|
201
|
+
const [leftSchema, rightSchema] = inputSchemas;
|
|
202
|
+
const fixed = fixJoinDuplicates(query, node.id, leftSchema, rightSchema);
|
|
203
|
+
this.editorState.applyQuery(fixed);
|
|
204
|
+
this.bind(fixed.getNode(node.id) ?? node);
|
|
205
|
+
}
|
|
206
|
+
/** Applies the draft, then closes the panel (spec §17.5: edits commit on close) */
|
|
207
|
+
close() {
|
|
208
|
+
this.apply();
|
|
209
|
+
this.reset();
|
|
210
|
+
}
|
|
211
|
+
/** Closes the panel, dropping the draft */
|
|
212
|
+
cancel() {
|
|
213
|
+
this.reset();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Closes the panel without applying the draft, e.g. when another cube is
|
|
217
|
+
* opened, saying so when that drops edits
|
|
218
|
+
*/
|
|
219
|
+
discard(reason) {
|
|
220
|
+
const { nodeId } = this;
|
|
221
|
+
if (nodeId !== undefined && this.hasChanges) {
|
|
222
|
+
this.notice = getEditorClosedNotice(nodeId, reason);
|
|
223
|
+
}
|
|
224
|
+
this.reset();
|
|
225
|
+
}
|
|
226
|
+
dismissNotice() {
|
|
227
|
+
this.notice = undefined;
|
|
228
|
+
}
|
|
229
|
+
/** Stops following the cube; call when the page closes */
|
|
230
|
+
dispose() {
|
|
231
|
+
this.disposeSync();
|
|
232
|
+
}
|
|
233
|
+
bind(node) {
|
|
234
|
+
this.nodeId = node.id;
|
|
235
|
+
this.nodeKey = node.key;
|
|
236
|
+
this.draft = createCubeNodeDraft(node, this.editorState);
|
|
237
|
+
}
|
|
238
|
+
reset() {
|
|
239
|
+
this.nodeId = undefined;
|
|
240
|
+
this.nodeKey = undefined;
|
|
241
|
+
this.draft = undefined;
|
|
242
|
+
}
|
|
243
|
+
/** Runs whenever the node with the panel's id is another object, or gone */
|
|
244
|
+
sync() {
|
|
245
|
+
const { node } = this;
|
|
246
|
+
if (this.nodeId === undefined || node?.key === this.nodeKey) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (this.hasChanges) {
|
|
250
|
+
this.discard(node
|
|
251
|
+
? CUBE_EDITOR_CLOSED_REASON.NODE_CHANGED
|
|
252
|
+
: CUBE_EDITOR_CLOSED_REASON.NODE_REMOVED);
|
|
253
|
+
}
|
|
254
|
+
else if (node) {
|
|
255
|
+
this.bind(node);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
this.reset();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=CubeNodeEditorState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeNodeEditorState.js","sourceRoot":"","sources":["../../src/stores/CubeNodeEditorState.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
+
import type { GeneratorFn } from '@finos/legend-shared';
|
|
17
|
+
import { CubeEngineError } from '../graph-manager/CubeEngine.js';
|
|
18
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
19
|
+
/**
|
|
20
|
+
* Show Pure: the Pure text of what Execute would run, the capture node's
|
|
21
|
+
* execution lambda with the row limit, as the engine renders it. For display
|
|
22
|
+
* only: the text is never parsed back (PLAN §8.7).
|
|
23
|
+
*/
|
|
24
|
+
export declare class CubeShowPureState {
|
|
25
|
+
readonly editorState: CubeEditorState;
|
|
26
|
+
isOpen: boolean;
|
|
27
|
+
text: string | undefined;
|
|
28
|
+
/** Why the engine couldn't render the query; shown in the dialog */
|
|
29
|
+
error: CubeEngineError | undefined;
|
|
30
|
+
isRendering: boolean;
|
|
31
|
+
/** Counts renders, so one that finishes after the dialog closed is dropped */
|
|
32
|
+
private request;
|
|
33
|
+
constructor(editorState: CubeEditorState);
|
|
34
|
+
/**
|
|
35
|
+
* Opens the dialog and renders the query, written for the database it runs
|
|
36
|
+
* on, as Execute writes it; does nothing when Execute can't run
|
|
37
|
+
*/
|
|
38
|
+
open(): GeneratorFn<void>;
|
|
39
|
+
close(): void;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=CubeShowPureState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeShowPureState.d.ts","sourceRoot":"","sources":["../../src/stores/CubeShowPureState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC,MAAM,UAAS;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,oEAAoE;IACpE,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;IACnC,WAAW,UAAS;IACpB,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAK;gBAER,WAAW,EAAE,eAAe;IAYxC;;;OAGG;IACF,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;IAqD1B,KAAK,IAAI,IAAI;CAOd"}
|
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
import { needsDatabaseType } from '@finos/legend-cube';
|
|
17
|
+
import { action, flow, flowResult, makeObservable, observable } from 'mobx';
|
|
18
|
+
import { CubeEngineError, CubeEngineErrorKind, } from '../graph-manager/CubeEngine.js';
|
|
19
|
+
/**
|
|
20
|
+
* Show Pure: the Pure text of what Execute would run, the capture node's
|
|
21
|
+
* execution lambda with the row limit, as the engine renders it. For display
|
|
22
|
+
* only: the text is never parsed back (PLAN §8.7).
|
|
23
|
+
*/
|
|
24
|
+
export class CubeShowPureState {
|
|
25
|
+
editorState;
|
|
26
|
+
isOpen = false;
|
|
27
|
+
text;
|
|
28
|
+
/** Why the engine couldn't render the query; shown in the dialog */
|
|
29
|
+
error;
|
|
30
|
+
isRendering = false;
|
|
31
|
+
/** Counts renders, so one that finishes after the dialog closed is dropped */
|
|
32
|
+
request = 0;
|
|
33
|
+
constructor(editorState) {
|
|
34
|
+
makeObservable(this, {
|
|
35
|
+
isOpen: observable,
|
|
36
|
+
text: observable,
|
|
37
|
+
error: observable.ref,
|
|
38
|
+
isRendering: observable,
|
|
39
|
+
open: flow,
|
|
40
|
+
close: action,
|
|
41
|
+
});
|
|
42
|
+
this.editorState = editorState;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Opens the dialog and renders the query, written for the database it runs
|
|
46
|
+
* on, as Execute writes it; does nothing when Execute can't run
|
|
47
|
+
*/
|
|
48
|
+
*open() {
|
|
49
|
+
const { execution, document, emitter, rowLimit, host } = this.editorState;
|
|
50
|
+
const { query, context } = document;
|
|
51
|
+
const runtime = context?.runtime;
|
|
52
|
+
const model = context?.model;
|
|
53
|
+
// checked by canExecute
|
|
54
|
+
const captureId = query.selected;
|
|
55
|
+
if (!execution.canExecute || runtime === undefined || model === undefined) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const request = ++this.request;
|
|
59
|
+
this.isOpen = true;
|
|
60
|
+
this.text = undefined;
|
|
61
|
+
this.error = undefined;
|
|
62
|
+
this.isRendering = true;
|
|
63
|
+
try {
|
|
64
|
+
let databaseType;
|
|
65
|
+
if (needsDatabaseType(query, captureId)) {
|
|
66
|
+
yield flowResult(this.editorState.loadModelOutline(model));
|
|
67
|
+
// closed, or opened again, while the outline loaded
|
|
68
|
+
if (request !== this.request) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
databaseType = this.editorState.getRunDatabaseType(query, captureId, model, runtime);
|
|
72
|
+
}
|
|
73
|
+
const text = (yield host.engine.renderPure(emitter.emitExecutionLambda({ rowLimit, runtime, databaseType })));
|
|
74
|
+
if (request === this.request) {
|
|
75
|
+
this.text = text;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (request === this.request) {
|
|
80
|
+
this.error =
|
|
81
|
+
error instanceof CubeEngineError
|
|
82
|
+
? error
|
|
83
|
+
: new CubeEngineError(CubeEngineErrorKind.COMPILE, error instanceof Error ? error.message : String(error));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
if (request === this.request) {
|
|
88
|
+
this.isRendering = false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
close() {
|
|
93
|
+
this.request++;
|
|
94
|
+
this.isOpen = false;
|
|
95
|
+
this.isRendering = false;
|
|
96
|
+
this.text = undefined;
|
|
97
|
+
this.error = undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=CubeShowPureState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeShowPureState.js","sourceRoot":"","sources":["../../src/stores/CubeShowPureState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAGxC;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACnB,WAAW,CAAkB;IAEtC,MAAM,GAAG,KAAK,CAAC;IACf,IAAI,CAAqB;IACzB,oEAAoE;IACpE,KAAK,CAA8B;IACnC,WAAW,GAAG,KAAK,CAAC;IACpB,8EAA8E;IACtE,OAAO,GAAG,CAAC,CAAC;IAEpB,YAAY,WAA4B;QACtC,cAAc,CAAC,IAAI,EAAE;YACnB,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,UAAU,CAAC,GAAG;YACrB,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,CAAC,IAAI;QACH,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;QACpC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAC7B,wBAAwB;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAkB,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,IAAI,YAAgC,CAAC;YACrC,IAAI,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxC,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3D,oDAAoD;gBACpD,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBACD,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAChD,KAAK,EACL,SAAS,EACT,KAAK,EACL,OAAO,CACR,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CACxC,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CACjE,CAAW,CAAC;YACb,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,KAAK;oBACR,KAAK,YAAY,eAAe;wBAC9B,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,eAAe,CACjB,mBAAmB,CAAC,OAAO,EAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;YACV,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
import { type CubeContext, type ModelContext } from '@finos/legend-cube';
|
|
17
|
+
import { type GeneratorFn } from '@finos/legend-shared';
|
|
18
|
+
import { type CubeModelOutline, type CubeOutlineDatabase, type CubeOutlineRuntime, type CubeOutlineSchema, type CubeOutlineTable } from '../graph-manager/CubeEngine.js';
|
|
19
|
+
import type { CubeEditorState } from './CubeEditorState.js';
|
|
20
|
+
import { type BundledModel } from './LocalModelCatalog.js';
|
|
21
|
+
/** Whether a table can be picked: a table with a column Cube can't read can't */
|
|
22
|
+
export declare const isTableSelectable: (table: CubeOutlineTable) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The source picker (PLAN §6.2.7, Settled before M1.8): model, then database,
|
|
25
|
+
* then a runtime keyed by that database, then schema and table. A step with
|
|
26
|
+
* a single choice is picked automatically. The first table fixes the cube's
|
|
27
|
+
* model and runtime; later tables come from the same database and runtime.
|
|
28
|
+
* A table is added only once its schema has resolved.
|
|
29
|
+
*/
|
|
30
|
+
export declare class CubeSourcePickerState {
|
|
31
|
+
readonly editorState: CubeEditorState;
|
|
32
|
+
isOpen: boolean;
|
|
33
|
+
model: ModelContext | undefined;
|
|
34
|
+
/** The model is Pure text the user pastes, not a bundled one */
|
|
35
|
+
isPastingModel: boolean;
|
|
36
|
+
pastedModelText: string;
|
|
37
|
+
/** The model the paste box last loaded: only it keeps the box shown */
|
|
38
|
+
private pastedModel;
|
|
39
|
+
outline: CubeModelOutline | undefined;
|
|
40
|
+
isLoadingModel: boolean;
|
|
41
|
+
databasePath: string | undefined;
|
|
42
|
+
runtimePath: string | undefined;
|
|
43
|
+
schemaName: string | undefined;
|
|
44
|
+
tableName: string | undefined;
|
|
45
|
+
tableSearch: string;
|
|
46
|
+
isResolving: boolean;
|
|
47
|
+
/** Why the outline or the table couldn't be loaded, shown in the dialog */
|
|
48
|
+
error: string | undefined;
|
|
49
|
+
/** Counts Add presses: closing the dialog moves it on, so the pending Add is dropped */
|
|
50
|
+
private confirmRequest;
|
|
51
|
+
constructor(editorState: CubeEditorState);
|
|
52
|
+
get models(): readonly BundledModel[];
|
|
53
|
+
/** Once the cube has a model, every table comes from it */
|
|
54
|
+
get fixedContext(): CubeContext | undefined;
|
|
55
|
+
/** Once the cube has a table, every other one comes from its database */
|
|
56
|
+
get fixedDatabasePath(): string | undefined;
|
|
57
|
+
get databases(): readonly CubeOutlineDatabase[];
|
|
58
|
+
get runtimes(): readonly CubeOutlineRuntime[];
|
|
59
|
+
get schemas(): readonly CubeOutlineSchema[];
|
|
60
|
+
/** The schema's tables, views left out, filtered by the search text */
|
|
61
|
+
get tables(): readonly CubeOutlineTable[];
|
|
62
|
+
get canConfirm(): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Opens the dialog on the cube's model, or on the only model offered. A
|
|
65
|
+
* model whose outline failed to load is loaded again. Does nothing while
|
|
66
|
+
* the cube is read-only.
|
|
67
|
+
*/
|
|
68
|
+
open(): void;
|
|
69
|
+
/** Closes the dialog; a table still being typed is not added */
|
|
70
|
+
close(): void;
|
|
71
|
+
/** Offers a text box for a Pure model in place of the bundled ones */
|
|
72
|
+
startPastingModel(): void;
|
|
73
|
+
setPastedModelText(text: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Loads the pasted Pure text as the model: the cube will hold the text
|
|
76
|
+
* itself, so it counts towards the size a saved cube can have
|
|
77
|
+
*/
|
|
78
|
+
loadPastedModel(): GeneratorFn<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Loads a model's outline. Any model but the one the paste box loaded ends
|
|
81
|
+
* pasting, e.g. a bundled model, or the model of a cube opened meanwhile.
|
|
82
|
+
*/
|
|
83
|
+
selectModel(model: ModelContext): GeneratorFn<void>;
|
|
84
|
+
selectDatabase(path: string | undefined): void;
|
|
85
|
+
selectRuntime(path: string | undefined): void;
|
|
86
|
+
selectSchema(name: string | undefined): void;
|
|
87
|
+
selectTable(name: string | undefined): void;
|
|
88
|
+
setTableSearch(search: string): void;
|
|
89
|
+
/**
|
|
90
|
+
* Types the picked table with the engine, then adds it; the first table
|
|
91
|
+
* also sets the cube's model and runtime, in the same undo step. The cube
|
|
92
|
+
* may have changed while the engine answered: the table is added only if
|
|
93
|
+
* the cube still has the same model and runtime and can take it.
|
|
94
|
+
*/
|
|
95
|
+
confirm(): GeneratorFn<void>;
|
|
96
|
+
private resetFrom;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=CubeSourcePickerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSourcePickerState.d.ts","sourceRoot":"","sources":["../../src/stores/CubeSourcePickerState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,YAAY,EAGlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAS3E,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,wBAAwB,CAAC;AAO5E,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,GAAI,OAAO,gBAAgB,KAAG,OACV,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAEtC,MAAM,UAAS;IACf,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,cAAc,UAAS;IACvB,eAAe,SAAM;IACrB,uEAAuE;IACvE,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACtC,cAAc,UAAS;IACvB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,SAAM;IACjB,WAAW,UAAS;IACpB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,wFAAwF;IACxF,OAAO,CAAC,cAAc,CAAK;gBAEf,WAAW,EAAE,eAAe;IAsCxC,IAAI,MAAM,IAAI,SAAS,YAAY,EAAE,CAEpC;IAED,2DAA2D;IAC3D,IAAI,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1C;IAED,yEAAyE;IACzE,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAK1C;IAED,IAAI,SAAS,IAAI,SAAS,mBAAmB,EAAE,CAa9C;IAED,IAAI,QAAQ,IAAI,SAAS,kBAAkB,EAAE,CAQ5C;IAED,IAAI,OAAO,IAAI,SAAS,iBAAiB,EAAE,CAK1C;IAED,uEAAuE;IACvE,IAAI,MAAM,IAAI,SAAS,gBAAgB,EAAE,CAUxC;IAED,IAAI,UAAU,IAAI,OAAO,CAYxB;IAED;;;;OAIG;IACH,IAAI,IAAI,IAAI;IA8BZ,gEAAgE;IAChE,KAAK,IAAI,IAAI;IAMb,sEAAsE;IACtE,iBAAiB,IAAI,IAAI;IASzB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC;;;OAGG;IACF,eAAe,IAAI,WAAW,CAAC,IAAI,CAAC;IAOrC;;;OAGG;IACF,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC;IA8BpD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAa9C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI7C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK5C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK3C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACF,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC;IA6E7B,OAAO,CAAC,SAAS;CAWlB"}
|