UNPKG

@finos/legend-extension-dsl-data-quality

Version:
101 lines 9.12 kB
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime"; /** * 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 { useApplicationStore } from '@finos/legend-application'; import { useEffect } from 'react'; import { guaranteeNonNullable, guaranteeType } from '@finos/legend-shared'; import { flowResult } from 'mobx'; import { getMappingCompatibleRuntimes, PackageableElementExplicitReference, RuntimePointer, } from '@finos/legend-graph'; import { DataQualityClassSelector } from './DataQualitySideBar.js'; import { CheckIcon, createFilter, MenuContentItemIcon, MenuContentItemLabel, MoreHorizontalIcon, PlayIcon, CustomSelectorInput, ControlledDropdownMenu, MenuContent, MenuContentItem, PURE_RuntimeIcon, } from '@finos/legend-art'; import { resolveUsableDataSpaceClasses } from '@finos/legend-extension-dsl-data-space/graph'; import { DataSpaceIcon } from '@finos/legend-extension-dsl-data-space/application'; import { buildDataSpaceOption, buildExecutionContextOption, formatDataSpaceOptionLabel, } from '@finos/legend-extension-dsl-data-space/application-query'; import { buildRuntimeValueOption, getRuntimeOptionFormatter, } from '@finos/legend-query-builder'; export const DataQualityDataSpaceBuilderSetupPanelContent = observer((props) => { const { dataQualityState } = props; const { dataQualityQueryBuilderState } = dataQualityState; const dataSpace = dataQualityState.dataSpace; if (!dataSpace) { return null; } const applicationStore = useApplicationStore(); // data product const dataSpaceOptions = dataQualityState.dataSpaces.map(buildDataSpaceOption); const selectedDataSpaceOption = { label: dataSpace.title ?? dataSpace.name, value: { title: dataSpace.title, name: dataSpace.name, path: dataSpace.path, defaultExecutionContext: dataSpace.defaultExecutionContext.name, }, }; const executionContextOptions = dataSpace.executionContexts.map(buildExecutionContextOption); const runtimeOptions = getMappingCompatibleRuntimes(guaranteeNonNullable(dataQualityQueryBuilderState.executionContextState.mapping), dataQualityState.graphManagerState.usableRuntimes) .map((rt) => new RuntimePointer(PackageableElementExplicitReference.create(rt))) .map(buildRuntimeValueOption); const selectedRuntimeOption = dataQualityQueryBuilderState .executionContextState.runtimeValue ? buildRuntimeValueOption(dataQualityQueryBuilderState.executionContextState.runtimeValue) : null; const classes = resolveUsableDataSpaceClasses(dataSpace, guaranteeNonNullable(dataQualityQueryBuilderState.executionContextState.mapping), dataQualityState.graphManagerState); const onDataSpaceOptionChange = (option) => { dataQualityState.onDataSpaceChange(option.value); dataQualityState.updateElementOnDataSpaceChange(); }; const selectedExecutionContextOption = buildExecutionContextOption(dataQualityState.executionContext); const onExecutionContextOptionChange = (option) => { if (option.value === dataQualityState.executionContext) { return; } dataQualityState.setExecutionContext(option.value); dataQualityState.propagateExecutionContextChange(option.value); dataQualityState.updateElementOnExecutionContextChange(option.value.name); dataQualityState.onExecutionContextChange?.(option.value); }; const changeRuntime = (option) => { if (option.value === dataQualityQueryBuilderState.executionContextState.runtimeValue) { return; } dataQualityQueryBuilderState.changeRuntime(option.value); dataQualityState.onRuntimeChange?.(option.value); }; const runtimeFilterOption = createFilter({ ignoreCase: true, ignoreAccents: false, stringify: (option) => guaranteeType(option.data.value, RuntimePointer).packageableRuntime .value.path, }); useEffect(() => { flowResult(dataQualityState.loadDataSpaces()).catch(applicationStore.alertUnhandledError); }, [dataQualityState, applicationStore]); return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "data-quality-validation__setup__config-group", children: [_jsxs("div", { className: "data-quality-validation__setup__config-group__header", children: [_jsx("div", { className: "data-quality-validation__setup__config-group__header__title", children: "data product execution context" }), _jsx(ControlledDropdownMenu, { className: "data-quality-validation__setup__config-group__header__dropdown-trigger", title: "Show Settings...", content: _jsx(MenuContent, { children: _jsxs(MenuContentItem, { onClick: () => dataQualityState.setShowRuntimeSelector(!dataQualityState.showRuntimeSelector), children: [_jsx(MenuContentItemIcon, { children: dataQualityState.showRuntimeSelector ? (_jsx(CheckIcon, {})) : null }), _jsx(MenuContentItemLabel, { children: "Show Runtime Selector" })] }) }), menuProps: { anchorOrigin: { vertical: 'bottom', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'right' }, }, children: _jsx(MoreHorizontalIcon, {}) })] }), _jsxs("div", { className: "data-quality-validation__setup__config-group__content", children: [_jsxs("div", { className: "data-quality-validation__setup__config-group__item", children: [_jsx("div", { className: "btn--sm data-quality-validation__setup__config-group__item__label", title: "data product", children: _jsx(DataSpaceIcon, {}) }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown data-quality-validation__setup__config-group__item__selector", options: dataSpaceOptions, isLoading: dataQualityState.loadDataSpacesState.isInProgress, onChange: onDataSpaceOptionChange, value: selectedDataSpaceOption, placeholder: "Search for data product...", escapeClearsValue: true, darkMode: !applicationStore.layoutService .TEMPORARY__isLightColorThemeEnabled, formatOptionLabel: formatDataSpaceOptionLabel })] }), _jsxs("div", { className: "data-quality-validation__setup__config-group__item", children: [_jsx("div", { className: "btn--sm data-quality-validation__setup__config-group__item__label", title: "execution context", children: _jsx(PlayIcon, { className: "data-quality-validation__setup__data-space__icon__execution-context" }) }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown data-quality-validation__setup__config-group__item__selector", placeholder: "Choose an execution context...", options: executionContextOptions, disabled: executionContextOptions.length < 1 || (executionContextOptions.length === 1 && Boolean(selectedExecutionContextOption)), onChange: onExecutionContextOptionChange, value: selectedExecutionContextOption, darkMode: !applicationStore.layoutService .TEMPORARY__isLightColorThemeEnabled })] }), dataQualityState.showRuntimeSelector && (_jsxs("div", { className: "data-quality-validation__setup__config-group__item", children: [_jsx("div", { className: "btn--sm data-quality-validation__setup__config-group__item__label", title: "runtime", children: _jsx(PURE_RuntimeIcon, {}) }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown data-quality-validation__setup__config-group__item__selector", placeholder: "Choose a runtime...", noMatchMessage: "No compatible runtime found for specified execution context", options: runtimeOptions, onChange: changeRuntime, value: selectedRuntimeOption, darkMode: !applicationStore.layoutService .TEMPORARY__isLightColorThemeEnabled, filterOption: runtimeFilterOption, formatOptionLabel: getRuntimeOptionFormatter({ darkMode: !applicationStore.layoutService .TEMPORARY__isLightColorThemeEnabled, }), disabled: true })] }))] })] }), _jsx(DataQualityClassSelector, { dataQualityState: dataQualityState, classes: classes, noMatchMessage: "No compatible class found for specified execution context" })] })); }); //# sourceMappingURL=DataQualityDataSpaceBuilder.js.map