/** * Copyright (c) 2020-present, Goldman Sachs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { observer } from 'mobx-react-lite'; import { LegendDataCubeSourceBuilderType } from '../../stores/builder/source/LegendDataCubeSourceBuilderState.js'; import { useDropdownMenu } from '@finos/legend-art'; import { FormBadge_WIP, FormButton, FormDropdownMenu, FormDropdownMenuItem, FormDropdownMenuTrigger, } from '@finos/legend-data-cube'; import { LegendQueryDataCubeSourceBuilderState } from '../../stores/builder/source/LegendQueryDataCubeSourceBuilderState.js'; import { LegendQueryDataCubeSourceBuilder } from './source/LegendQueryDataCubeSourceBuilder.js'; import { FreeformTDSExpressionDataCubeSourceBuilder } from './source/FreeformTDSExpressionDataCubeSourceBuilder.js'; import { FreeformTDSExpressionDataCubeSourceBuilderState } from '../../stores/builder/source/FreeformTDSExpressionDataCubeSourceBuilderState.js'; import { useLegendDataCubeBuilderStore } from './LegendDataCubeBuilderStoreProvider.js'; import { LocalFileDataCubeSourceBuilderState } from '../../stores/builder/source/LocalFileDataCubeSourceBuilderState.js'; import { LocalFileDataCubeSourceBuilder } from './source/LocalFileDataCubeSourceBuilder.js'; import { UserDefinedFunctionDataCubeSourceBuilderState } from '../../stores/builder/source/UserDefinedFunctionDataCubeSourceBuilderState.js'; import { UserDefinedFunctionDataCubeSourceBuilder } from './source/UserDefinedFunctionDataCubeSourceBuilder.js'; import { LakehouseProducerDataCubeSourceBuilderState } from '../../stores/builder/source/LakehouseProducerDataCubeSourceBuilderState.js'; import { LakehouseProducerDataCubeSourceBuilder } from './source/LakehouseProducerDataCubeSourceBuilder.js'; import { LakehouseConsumerDataCubeSourceBuilderState } from '../../stores/builder/source/LakehouseConsumerDataCubeSourceBuilderState.js'; import { LakehouseConsumerDataCubeSourceBuilder } from './source/LakehouseConsumerDataCubeSourceBuilder.js'; export const LegendDataCubeCreator = observer(() => { const store = useLegendDataCubeBuilderStore(); const state = store.creator; const sourceBuilder = state.sourceBuilder; const selectedSourceType = sourceBuilder.label; const WIPSourceTypes = [LegendDataCubeSourceBuilderType.LOCAL_FILE]; const [ openSourceTypeDropdown, closeSourceTypeDropdown, sourceTypeDropdownProps, sourceTypeDropdownPropsOpen, ] = useDropdownMenu(); return ( <>
Choose Source Type:
{selectedSourceType} {WIPSourceTypes.includes(selectedSourceType) && ( )}
{[ LegendDataCubeSourceBuilderType.LEGEND_QUERY, LegendDataCubeSourceBuilderType.LAKEHOUSE_CONSUMER, LegendDataCubeSourceBuilderType.USER_DEFINED_FUNCTION, LegendDataCubeSourceBuilderType.FREEFORM_TDS_EXPRESSION, LegendDataCubeSourceBuilderType.LAKEHOUSE_PRODUCER, LegendDataCubeSourceBuilderType.LOCAL_FILE, ].map((type) => ( { state.changeSourceBuilder(type); closeSourceTypeDropdown(); }} autoFocus={type === selectedSourceType} > {type} {WIPSourceTypes.includes(type) && } ))}
{sourceBuilder instanceof LegendQueryDataCubeSourceBuilderState && ( )} {sourceBuilder instanceof FreeformTDSExpressionDataCubeSourceBuilderState && ( )} {sourceBuilder instanceof LocalFileDataCubeSourceBuilderState && ( )} {sourceBuilder instanceof UserDefinedFunctionDataCubeSourceBuilderState && ( )} {sourceBuilder instanceof LakehouseProducerDataCubeSourceBuilderState && ( )} {sourceBuilder instanceof LakehouseConsumerDataCubeSourceBuilderState && ( )}
state.display.close()}>Cancel { state .finalize() .catch((error) => store.alertService.alertUnhandledError(error)); }} > OK
); });