@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,44 @@
|
|
|
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 Schema } from '@finos/legend-cube';
|
|
17
|
+
import type { CubeEditorState } from '../../stores/CubeEditorState.js';
|
|
18
|
+
import type { CubeNodeDraft } from '../../stores/editors/CubeNodeDraft.js';
|
|
19
|
+
/**
|
|
20
|
+
* What the panel gives a node type's editor (PLAN §7.4). Edits go to the
|
|
21
|
+
* draft, which the panel's Apply stores; an action on the document goes
|
|
22
|
+
* through `editorState.nodeEditor` (e.g. `swapInputs`), which applies the
|
|
23
|
+
* draft first, so the panel never loses its edits under a replaced node.
|
|
24
|
+
*/
|
|
25
|
+
export interface CubeNodeEditorProps {
|
|
26
|
+
readonly editorState: CubeEditorState;
|
|
27
|
+
/** The node's draft, made by its type's factory in `CUBE_NODE_DRAFT_FACTORIES` */
|
|
28
|
+
readonly draft: CubeNodeDraft;
|
|
29
|
+
/**
|
|
30
|
+
* The schemas of the node's inputs, in port order, e.g. a Join's Left then
|
|
31
|
+
* Right. All are there: the panel shows the upstream error instead of the
|
|
32
|
+
* editor while an input is missing or invalid.
|
|
33
|
+
*/
|
|
34
|
+
readonly inputSchemas: readonly Schema[];
|
|
35
|
+
/** The cube was saved by a newer version: show, don't edit */
|
|
36
|
+
readonly readOnly: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The editor of each node type, by type. A type without one shows its
|
|
40
|
+
* description; a type with one either has a draft factory in
|
|
41
|
+
* `CUBE_NODE_DRAFT_FACTORIES` or edits nothing (a source).
|
|
42
|
+
*/
|
|
43
|
+
export declare const CUBE_NODE_EDITORS: ReadonlyMap<string, React.FC<CubeNodeEditorProps>>;
|
|
44
|
+
//# sourceMappingURL=CubeNodeEditorRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeNodeEditorRegistry.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeNodeEditorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EASL,KAAK,MAAM,EAGZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAW3E;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CACzC,MAAM,EACN,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAY7B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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 { Distinct, Drop, Filter, Join, Limit, RelationalTableSource, Rename, Restrict, Slice, Sort, } from '@finos/legend-cube';
|
|
17
|
+
import { CubeDistinctEditor } from './CubeDistinctEditor.js';
|
|
18
|
+
import { CubeFilterEditor } from './CubeFilterEditor.js';
|
|
19
|
+
import { CubeJoinEditor } from './CubeJoinEditor.js';
|
|
20
|
+
import { CubeRenameEditor } from './CubeRenameEditor.js';
|
|
21
|
+
import { CubeRestrictEditor } from './CubeRestrictEditor.js';
|
|
22
|
+
import { CubeRowCountEditor } from './CubeRowCountEditor.js';
|
|
23
|
+
import { CubeSliceEditor } from './CubeSliceEditor.js';
|
|
24
|
+
import { CubeSortEditor } from './CubeSortEditor.js';
|
|
25
|
+
import { CubeSourceEditor } from './CubeSourceEditor.js';
|
|
26
|
+
/**
|
|
27
|
+
* The editor of each node type, by type. A type without one shows its
|
|
28
|
+
* description; a type with one either has a draft factory in
|
|
29
|
+
* `CUBE_NODE_DRAFT_FACTORIES` or edits nothing (a source).
|
|
30
|
+
*/
|
|
31
|
+
export const CUBE_NODE_EDITORS = new Map([
|
|
32
|
+
[RelationalTableSource.TYPE, CubeSourceEditor],
|
|
33
|
+
[Sort.TYPE, CubeSortEditor],
|
|
34
|
+
[Filter.TYPE, CubeFilterEditor],
|
|
35
|
+
[Restrict.TYPE, CubeRestrictEditor],
|
|
36
|
+
[Rename.TYPE, CubeRenameEditor],
|
|
37
|
+
[Distinct.TYPE, CubeDistinctEditor],
|
|
38
|
+
[Join.TYPE, CubeJoinEditor],
|
|
39
|
+
[Drop.TYPE, CubeRowCountEditor],
|
|
40
|
+
[Limit.TYPE, CubeRowCountEditor],
|
|
41
|
+
[Slice.TYPE, CubeSliceEditor],
|
|
42
|
+
]);
|
|
43
|
+
//# sourceMappingURL=CubeNodeEditorRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeNodeEditorRegistry.js","sourceRoot":"","sources":["../../../src/components/editors/CubeNodeEditorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,qBAAqB,EACrB,MAAM,EACN,QAAQ,EAER,KAAK,EACL,IAAI,GACL,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsBzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAG1B,IAAI,GAAG,CAAwC;IACjD,CAAC,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC9C,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;IAC3B,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnC,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;IAC3B,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAC/B,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAChC,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC;CAC9B,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* The Rename editor (spec §17.6): rows of an old column, picked from the
|
|
19
|
+
* input, and its new name, typed. Each row shows its first problem, as the
|
|
20
|
+
* node checks it, and the rule for new names stays shown under the rows. The
|
|
21
|
+
* rows scroll on their own, so the editor fits wherever it is shown.
|
|
22
|
+
*/
|
|
23
|
+
export declare const CubeRenameEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
24
|
+
displayName: string;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=CubeRenameEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeRenameEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeRenameEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AA2DvE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,WAAoB,mBAAmB;;CAkDlE,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { clsx, TimesIcon } from '@finos/legend-art';
|
|
18
|
+
import { validateRenameMapping } from '@finos/legend-cube';
|
|
19
|
+
import { guaranteeType } from '@finos/legend-shared';
|
|
20
|
+
import { observer } from 'mobx-react-lite';
|
|
21
|
+
import { COLUMN_NAME_RULES_HINT } from '../../__lib__/LegendCubeLabels.js';
|
|
22
|
+
import { CubeRenameDraft, } from '../../stores/editors/CubeRenameDraft.js';
|
|
23
|
+
import { CubeButton } from '../CubeButton.js';
|
|
24
|
+
import { CubeColumnPicker } from './CubeColumnPicker.js';
|
|
25
|
+
const CubeRenameRowEditor = observer((props) => {
|
|
26
|
+
const { draft, row, position, schema, problem, readOnly } = props;
|
|
27
|
+
return (_jsxs("li", { className: "flex flex-col gap-1 border-b border-[var(--color-border-subtle)] py-1", children: [_jsxs("div", { className: "grid grid-cols-[1fr_auto_1fr_auto] items-center gap-1", children: [_jsx(CubeColumnPicker, { label: `Old column ${position}`, schema: schema, value: row.from, disabled: readOnly, onChange: (name) => draft.setFrom(row.key, name) }), _jsx("span", { className: "text-[var(--color-text-secondary)]", children: "\u2192" }), _jsx("input", { "aria-label": `New column name ${position}`, "aria-invalid": problem !== undefined, title: problem, className: clsx('h-6 min-w-0 rounded-sm border bg-[var(--color-bg-input)] px-1 text-base', problem
|
|
28
|
+
? 'border-[var(--color-status-error)]'
|
|
29
|
+
: 'border-[var(--color-border-default)]'), type: "text", spellCheck: false, value: row.to, disabled: readOnly, onChange: (event) => draft.setTo(row.key, event.target.value) }), _jsx("button", { className: "flex h-6 w-6 items-center justify-center text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] disabled:text-[var(--color-text-disabled)]", "aria-label": `Remove rename ${position}`, title: "Remove this rename", disabled: readOnly, onClick: () => draft.removeRow(row.key), children: _jsx(TimesIcon, {}) })] }), problem && (_jsx("div", { className: "text-sm text-[var(--color-status-error)]", children: problem }))] }));
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* The Rename editor (spec §17.6): rows of an old column, picked from the
|
|
33
|
+
* input, and its new name, typed. Each row shows its first problem, as the
|
|
34
|
+
* node checks it, and the rule for new names stays shown under the rows. The
|
|
35
|
+
* rows scroll on their own, so the editor fits wherever it is shown.
|
|
36
|
+
*/
|
|
37
|
+
export const CubeRenameEditor = observer((props) => {
|
|
38
|
+
const { readOnly } = props;
|
|
39
|
+
const draft = guaranteeType(props.draft, CubeRenameDraft);
|
|
40
|
+
const [schema] = props.inputSchemas;
|
|
41
|
+
const { mappings } = draft;
|
|
42
|
+
// a row's problem, as the node will judge it; a blank row has none
|
|
43
|
+
let mappingIndex = 0;
|
|
44
|
+
const problems = draft.rows.map((row) => {
|
|
45
|
+
if (!row.from && !row.to) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const errors = [];
|
|
49
|
+
validateRenameMapping(mappings, mappingIndex, schema, errors);
|
|
50
|
+
mappingIndex += 1;
|
|
51
|
+
return errors[0];
|
|
52
|
+
});
|
|
53
|
+
const canAddRow = !readOnly && draft.rows.length < schema.columns.length;
|
|
54
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsx("ul", { "aria-label": "Column renames", className: "max-h-80 overflow-auto", children: draft.rows.map((row, index) => (_jsx(CubeRenameRowEditor, { draft: draft, row: row, position: index + 1, schema: schema, problem: problems[index], readOnly: readOnly }, row.key))) }), _jsx("div", { children: _jsx(CubeButton, { title: canAddRow
|
|
55
|
+
? 'Add a column to rename'
|
|
56
|
+
: 'Every column of the input already has a row', disabled: !canAddRow, onClick: () => draft.addRow(), children: "Add column to rename" }) }), _jsx("div", { className: "text-sm text-[var(--color-text-secondary)]", children: COLUMN_NAME_RULES_HINT })] }));
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=CubeRenameEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeRenameEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeRenameEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* The Restrict editor (spec §17.6): the input's columns, in its order, each
|
|
19
|
+
* ticked to keep it. A saved column the input doesn't have stays listed, last
|
|
20
|
+
* and ticked, until it is unticked. The list scrolls on its own, so the
|
|
21
|
+
* editor fits wherever it is shown.
|
|
22
|
+
*/
|
|
23
|
+
export declare const CubeRestrictEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
24
|
+
displayName: string;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=CubeRestrictEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeRestrictEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeRestrictEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAIvE;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,WAAoB,mBAAmB;;CAqEpE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { guaranteeType } from '@finos/legend-shared';
|
|
3
|
+
import { observer } from 'mobx-react-lite';
|
|
4
|
+
import { getColumnTypeLabel } from '../../__lib__/LegendCubeLabels.js';
|
|
5
|
+
import { CubeRestrictDraft } from '../../stores/editors/CubeRestrictDraft.js';
|
|
6
|
+
import { CubeButton } from '../CubeButton.js';
|
|
7
|
+
import { CubeColumnTypeIcon } from './CubeColumnPicker.js';
|
|
8
|
+
const KEEP = 'Columns to keep';
|
|
9
|
+
/**
|
|
10
|
+
* The Restrict editor (spec §17.6): the input's columns, in its order, each
|
|
11
|
+
* ticked to keep it. A saved column the input doesn't have stays listed, last
|
|
12
|
+
* and ticked, until it is unticked. The list scrolls on its own, so the
|
|
13
|
+
* editor fits wherever it is shown.
|
|
14
|
+
*/
|
|
15
|
+
export const CubeRestrictEditor = observer((props) => {
|
|
16
|
+
const { readOnly } = props;
|
|
17
|
+
const draft = guaranteeType(props.draft, CubeRestrictDraft);
|
|
18
|
+
const [schema] = props.inputSchemas;
|
|
19
|
+
// each once, though a saved restrict may repeat one (validation reports it)
|
|
20
|
+
const missing = Array.from(new Set(draft.columns.filter((name) => !schema.lookup(name))));
|
|
21
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { children: KEEP }), _jsx("span", { className: "flex-1" }), _jsx(CubeButton, { title: "Keep every column of the input", disabled: readOnly, onClick: () => draft.selectAll(schema), children: "All" }), _jsx(CubeButton, { title: "Untick every column", disabled: readOnly, onClick: () => draft.clear(), children: "None" })] }), _jsxs("ul", { "aria-label": KEEP, className: "max-h-80 overflow-auto rounded-sm border border-[var(--color-border-subtle)]", children: [schema.columns.map((column) => (_jsx("li", { children: _jsxs("label", { className: "flex items-center gap-2 px-1 py-0.5", children: [_jsx("input", { type: "checkbox", checked: draft.columns.includes(column.name), disabled: readOnly, onChange: () => draft.toggleColumn(column.name, schema) }), _jsx(CubeColumnTypeIcon, { type: column.type, className: "text-[var(--color-text-secondary)]" }), _jsx("span", { className: "min-w-0 truncate", children: column.name }), _jsx("span", { className: "shrink-0 text-sm text-[var(--color-text-muted)]", children: getColumnTypeLabel(column) })] }) }, column.name))), missing.map((name) => (_jsx("li", { children: _jsxs("label", { className: "flex items-center gap-2 px-1 py-0.5 text-[var(--color-status-error)]", children: [_jsx("input", { type: "checkbox", checked: true, disabled: readOnly, onChange: () => draft.toggleColumn(name, schema) }), _jsx("span", { className: "min-w-0 truncate", children: name || '(blank)' }), _jsx("span", { className: "shrink-0 text-sm", children: "(not in the input)" })] }) }, `missing:${name}`)))] })] }));
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=CubeRestrictEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeRestrictEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeRestrictEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* The editor of a node whose one setting is a number of rows, a Limit or a
|
|
19
|
+
* Drop (spec §17.6: one integer field). Clearing the field leaves the size empty,
|
|
20
|
+
* which the panel reports; it never falls back to the default.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CubeRowCountEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
23
|
+
displayName: string;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=CubeRowCountEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeRowCountEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeRowCountEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAQvE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAoB,mBAAmB;;CAkBpE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { Drop, isPositiveWholeNumber, Limit } from '@finos/legend-cube';
|
|
18
|
+
import { guaranteeType } from '@finos/legend-shared';
|
|
19
|
+
import { observer } from 'mobx-react-lite';
|
|
20
|
+
import { CubeRowCountDraft } from '../../stores/editors/CubeRowCountDraft.js';
|
|
21
|
+
import { CubeIntegerField } from './CubeIntegerField.js';
|
|
22
|
+
/** The field's label for each node type the editor serves */
|
|
23
|
+
const ROW_COUNT_LABELS = {
|
|
24
|
+
[Drop.TYPE]: 'Rows to drop',
|
|
25
|
+
[Limit.TYPE]: 'Rows to keep',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* The editor of a node whose one setting is a number of rows, a Limit or a
|
|
29
|
+
* Drop (spec §17.6: one integer field). Clearing the field leaves the size empty,
|
|
30
|
+
* which the panel reports; it never falls back to the default.
|
|
31
|
+
*/
|
|
32
|
+
export const CubeRowCountEditor = observer((props) => {
|
|
33
|
+
const { readOnly } = props;
|
|
34
|
+
const draft = guaranteeType(props.draft, CubeRowCountDraft);
|
|
35
|
+
const label = ROW_COUNT_LABELS[draft.original.type] ?? 'Rows';
|
|
36
|
+
return (_jsx("div", { className: "flex flex-col gap-2 text-base", children: _jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { children: label }), _jsx(CubeIntegerField, { label: label, text: draft.sizeText, invalid: !isPositiveWholeNumber(draft.size), disabled: readOnly, onChange: (text) => draft.setSizeText(text) })] }) }));
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=CubeRowCountEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeRowCountEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeRowCountEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,6DAA6D;AAC7D,MAAM,gBAAgB,GAAqC;IACzD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc;IAC3B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,KAA0B,EAAE,EAAE;IACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IAC9D,OAAO,CACL,cAAK,SAAS,EAAC,+BAA+B,YAC5C,iBAAO,SAAS,EAAC,yBAAyB,aACxC,yBAAO,KAAK,GAAQ,EACpB,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAC3C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAC3C,IACI,GACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* The Slice editor (spec §17.6): the start and stop row indexes, counting
|
|
19
|
+
* from 0, the start row kept and the stop row not (D5). A cleared field
|
|
20
|
+
* leaves its bound empty, which the panel reports.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CubeSliceEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
23
|
+
displayName: string;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=CubeSliceEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSliceEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSliceEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAKvE;;;;GAIG;AACH,eAAO,MAAM,eAAe,WAAoB,mBAAmB;;CAoCjE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { isRowIndex } from '@finos/legend-cube';
|
|
18
|
+
import { guaranteeType } from '@finos/legend-shared';
|
|
19
|
+
import { observer } from 'mobx-react-lite';
|
|
20
|
+
import { SLICE_RANGE_HINT } from '../../__lib__/LegendCubeLabels.js';
|
|
21
|
+
import { CubeSliceDraft } from '../../stores/editors/CubeSliceDraft.js';
|
|
22
|
+
import { CubeIntegerField } from './CubeIntegerField.js';
|
|
23
|
+
const START = 'Start row index';
|
|
24
|
+
const STOP = 'Stop row index';
|
|
25
|
+
/**
|
|
26
|
+
* The Slice editor (spec §17.6): the start and stop row indexes, counting
|
|
27
|
+
* from 0, the start row kept and the stop row not (D5). A cleared field
|
|
28
|
+
* leaves its bound empty, which the panel reports.
|
|
29
|
+
*/
|
|
30
|
+
export const CubeSliceEditor = observer((props) => {
|
|
31
|
+
const { readOnly } = props;
|
|
32
|
+
const draft = guaranteeType(props.draft, CubeSliceDraft);
|
|
33
|
+
const { start, stop } = draft;
|
|
34
|
+
const validStart = isRowIndex(start);
|
|
35
|
+
const validStop = isRowIndex(stop);
|
|
36
|
+
// the stop is marked when it doesn't come after the start, too
|
|
37
|
+
const outOfOrder = validStart && validStop && start >= stop;
|
|
38
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-28", children: START }), _jsx(CubeIntegerField, { label: START, text: draft.startText, invalid: !validStart, disabled: readOnly, onChange: (text) => draft.setStartText(text) })] }), _jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-28", children: STOP }), _jsx(CubeIntegerField, { label: STOP, text: draft.stopText, invalid: !validStop || outOfOrder, disabled: readOnly, onChange: (text) => draft.setStopText(text) })] }), _jsx("div", { className: "text-sm text-[var(--color-text-secondary)]", children: SLICE_RANGE_HINT })] }));
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=CubeSliceEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSliceEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSliceEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,KAAK,GAAG,iBAAiB,CAAC;AAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAE9B;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,KAA0B,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,+DAA+D;IAC/D,MAAM,UAAU,GACd,UAAU,IAAI,SAAS,IAAK,KAAgB,IAAK,IAAe,CAAC;IACnE,OAAO,CACL,eAAK,SAAS,EAAC,+BAA+B,aAC5C,iBAAO,SAAS,EAAC,yBAAyB,aACxC,eAAM,SAAS,EAAC,MAAM,YAAE,KAAK,GAAQ,EACrC,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,CAAC,SAAS,EACrB,OAAO,EAAE,CAAC,UAAU,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAC5C,IACI,EACR,iBAAO,SAAS,EAAC,yBAAyB,aACxC,eAAM,SAAS,EAAC,MAAM,YAAE,IAAI,GAAQ,EACpC,KAAC,gBAAgB,IACf,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,KAAK,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,SAAS,IAAI,UAAU,EACjC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAC3C,IACI,EACR,cAAK,SAAS,EAAC,4CAA4C,YACxD,gBAAgB,GACb,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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 { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* The Sort editor (spec §17.6: an ordered list of column and direction rows,
|
|
19
|
+
* added, removed and reordered). The first row sorts first. A column that
|
|
20
|
+
* can't be sorted, or that another row has, can't be picked; a saved one
|
|
21
|
+
* stays shown with its problem. The rows scroll on their own, so the editor
|
|
22
|
+
* fits wherever it is shown.
|
|
23
|
+
*/
|
|
24
|
+
export declare const CubeSortEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
25
|
+
displayName: string;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=CubeSortEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSortEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAqGvE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,WAAoB,mBAAmB;;CA6DhE,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { ArrowDownIcon, ArrowUpIcon, TimesIcon } from '@finos/legend-art';
|
|
18
|
+
import { isSortableType, isSortDirection, MESSAGE_CANNOT_HAVE_DUPLICATES, SORT_DIRECTION_DESCRIPTIONS, SORT_DIRECTIONS, validateSortKey, } from '@finos/legend-cube';
|
|
19
|
+
import { guaranteeType } from '@finos/legend-shared';
|
|
20
|
+
import { observer } from 'mobx-react-lite';
|
|
21
|
+
import { CUBE_SORT_COLUMN_DISABLED_REASON } from '../../__lib__/LegendCubeLabels.js';
|
|
22
|
+
import { CubeSortDraft, } from '../../stores/editors/CubeSortDraft.js';
|
|
23
|
+
import { CubeButton } from '../CubeButton.js';
|
|
24
|
+
import { CubeColumnPicker } from './CubeColumnPicker.js';
|
|
25
|
+
const ROW_BUTTON_CLASS = 'flex h-6 w-6 items-center justify-center text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] disabled:text-[var(--color-text-disabled)]';
|
|
26
|
+
const CubeSortRowEditor = observer((props) => {
|
|
27
|
+
const { draft, row, position, count, schema, takenColumns, problem, readOnly, } = props;
|
|
28
|
+
const isColumnDisabled = (column) => !isSortableType(column.type)
|
|
29
|
+
? CUBE_SORT_COLUMN_DISABLED_REASON.NOT_SORTABLE
|
|
30
|
+
: takenColumns.has(column.name)
|
|
31
|
+
? CUBE_SORT_COLUMN_DISABLED_REASON.TAKEN
|
|
32
|
+
: undefined;
|
|
33
|
+
return (_jsxs("li", { className: "flex flex-col gap-1 border-b border-[var(--color-border-subtle)] py-1", children: [_jsxs("div", { className: "grid grid-cols-[1fr_auto_auto_auto_auto] items-center gap-1", children: [_jsx(CubeColumnPicker, { label: `Sort column ${position}`, schema: schema, value: row.column, disabled: readOnly, invalid: problem !== undefined, isColumnDisabled: isColumnDisabled, onChange: (name) => draft.setColumn(row.key, name) }), _jsx("select", { "aria-label": `Sort direction ${position}`, className: "h-6 rounded-sm border border-[var(--color-border-default)] bg-[var(--color-bg-input)] px-1 text-base", value: row.direction, disabled: readOnly, onChange: (event) => {
|
|
34
|
+
const direction = event.target.value;
|
|
35
|
+
if (isSortDirection(direction)) {
|
|
36
|
+
draft.setDirection(row.key, direction);
|
|
37
|
+
}
|
|
38
|
+
}, children: SORT_DIRECTIONS.map((direction) => (_jsx("option", { value: direction, children: SORT_DIRECTION_DESCRIPTIONS[direction] }, direction))) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Move sort column ${position} up`, title: "Sort by this column before the one above", disabled: readOnly || position === 1, onClick: () => draft.moveRow(row.key, -1), children: _jsx(ArrowUpIcon, {}) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Move sort column ${position} down`, title: "Sort by this column after the one below", disabled: readOnly || position === count, onClick: () => draft.moveRow(row.key, 1), children: _jsx(ArrowDownIcon, {}) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Remove sort column ${position}`, title: "Remove this sort column", disabled: readOnly, onClick: () => draft.removeRow(row.key), children: _jsx(TimesIcon, {}) })] }), problem && (_jsx("div", { className: "text-sm text-[var(--color-status-error)]", children: problem }))] }));
|
|
39
|
+
});
|
|
40
|
+
/**
|
|
41
|
+
* The Sort editor (spec §17.6: an ordered list of column and direction rows,
|
|
42
|
+
* added, removed and reordered). The first row sorts first. A column that
|
|
43
|
+
* can't be sorted, or that another row has, can't be picked; a saved one
|
|
44
|
+
* stays shown with its problem. The rows scroll on their own, so the editor
|
|
45
|
+
* fits wherever it is shown.
|
|
46
|
+
*/
|
|
47
|
+
export const CubeSortEditor = observer((props) => {
|
|
48
|
+
const { readOnly } = props;
|
|
49
|
+
const draft = guaranteeType(props.draft, CubeSortDraft);
|
|
50
|
+
const [schema] = props.inputSchemas;
|
|
51
|
+
const { rows } = draft;
|
|
52
|
+
// a row's problem, as the node will judge it; a blank row has none
|
|
53
|
+
const problems = rows.map((row, index) => {
|
|
54
|
+
if (!row.column) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const errors = [];
|
|
58
|
+
validateSortKey(row, schema, errors);
|
|
59
|
+
return (errors[0] ??
|
|
60
|
+
(rows.slice(0, index).some(({ column }) => column === row.column)
|
|
61
|
+
? MESSAGE_CANNOT_HAVE_DUPLICATES('Sort columns')
|
|
62
|
+
: undefined));
|
|
63
|
+
});
|
|
64
|
+
const sortable = schema.columns.filter((column) => isSortableType(column.type));
|
|
65
|
+
const canAddRow = !readOnly && rows.length < sortable.length;
|
|
66
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsx("ul", { "aria-label": "Sort columns", className: "max-h-80 overflow-auto", children: rows.map((row, index) => (_jsx(CubeSortRowEditor, { draft: draft, row: row, position: index + 1, count: rows.length, schema: schema, takenColumns: new Set(rows
|
|
67
|
+
.filter((other) => other.key !== row.key && other.column)
|
|
68
|
+
.map(({ column }) => column)), problem: problems[index], readOnly: readOnly }, row.key))) }), _jsx("div", { children: _jsx(CubeButton, { title: canAddRow
|
|
69
|
+
? 'Add a column to sort by'
|
|
70
|
+
: 'Every column that can be sorted already has a row', disabled: !canAddRow, onClick: () => draft.addRow(), children: "Add sort column" }) })] }));
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=CubeSortEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSortEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
|
|
17
|
+
/**
|
|
18
|
+
* A table source (spec §17.6): where it reads from, its columns as the engine
|
|
19
|
+
* typed them, and Refresh, which types the table again. Nothing here is
|
|
20
|
+
* edited, so a refresh is no undo step.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CubeSourceEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
23
|
+
displayName: string;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=CubeSourceEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSourceEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAoB,mBAAmB;;CAoElE,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2026-present, Goldman Sachs
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { PanelLoadingIndicator } from '@finos/legend-art';
|
|
18
|
+
import { getRelationalDisplayName, RelationalTableSource, } from '@finos/legend-cube';
|
|
19
|
+
import { guaranteeType } from '@finos/legend-shared';
|
|
20
|
+
import { flowResult } from 'mobx';
|
|
21
|
+
import { observer } from 'mobx-react-lite';
|
|
22
|
+
import { CUBE_PENDING_LABEL, getColumnTypeLabel, } from '../../__lib__/LegendCubeLabels.js';
|
|
23
|
+
import { CubeButton } from '../CubeButton.js';
|
|
24
|
+
import { CubeColumnTypeIcon } from './CubeColumnPicker.js';
|
|
25
|
+
/**
|
|
26
|
+
* A table source (spec §17.6): where it reads from, its columns as the engine
|
|
27
|
+
* typed them, and Refresh, which types the table again. Nothing here is
|
|
28
|
+
* edited, so a refresh is no undo step.
|
|
29
|
+
*/
|
|
30
|
+
export const CubeSourceEditor = observer((props) => {
|
|
31
|
+
const { editorState } = props;
|
|
32
|
+
const source = guaranteeType(props.draft.original, RelationalTableSource);
|
|
33
|
+
const refreshing = editorState.isPendingSource(source);
|
|
34
|
+
const { resolution } = source;
|
|
35
|
+
return (_jsxs("div", { className: "relative flex flex-col gap-2", children: [_jsxs("dl", { className: "grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-base", children: [_jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Database" }), _jsx("dd", { className: "min-w-0 break-all", children: source.database }), _jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Schema" }), _jsx("dd", { children: getRelationalDisplayName(source.schema) }), _jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Table" }), _jsx("dd", { children: getRelationalDisplayName(source.table) })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CubeButton, { title: "Type the table again with the engine, e.g. after its columns changed", disabled: refreshing, onClick: () => {
|
|
36
|
+
flowResult(editorState.refreshSource(source.id)).catch(editorState.host.applicationStore.alertUnhandledError);
|
|
37
|
+
}, children: "Refresh" }), refreshing && (_jsx("span", { className: "text-base text-[var(--color-text-secondary)]", children: CUBE_PENDING_LABEL.REFRESHING_SOURCE }))] }), _jsx(PanelLoadingIndicator, { isLoading: refreshing }), resolution.kind === 'resolved' ? (_jsxs("table", { className: "w-full text-base", "aria-label": "Columns", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-left text-[var(--color-text-secondary)]", children: [_jsx("th", { className: "font-normal", children: "Column" }), _jsx("th", { className: "font-normal", children: "Type" })] }) }), _jsx("tbody", { children: resolution.schema.columns.map((column) => (_jsxs("tr", { children: [_jsx("td", { className: "break-all pr-2", children: column.name }), _jsx("td", { title: column.type.fullName, children: _jsxs("span", { className: "flex items-center gap-1", children: [_jsx(CubeColumnTypeIcon, { type: column.type, className: "text-[var(--color-text-secondary)]" }), getColumnTypeLabel(column)] }) })] }, column.name))) })] })) : (_jsx("div", { className: "text-base text-[var(--color-text-secondary)]", children: resolution.kind === 'failed'
|
|
38
|
+
? resolution.message
|
|
39
|
+
: 'The table has not been typed yet.' }))] }));
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=CubeSourceEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSourceEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"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"}
|