@finos/legend-extension-dsl-data-quality
Version:
Legend extension for Data Quality
74 lines • 5.86 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } 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 { clsx, createFilter, CustomSelectorInput, PURE_ClassIcon, } from '@finos/legend-art';
import { observer } from 'mobx-react-lite';
import { useApplicationStore } from '@finos/legend-application';
import { DataQualityDataSpaceBuilderSetupPanelContent } from './DataQualityDataSpaceBuilder.js';
import { DataQualityMappingAndRuntimeBuilder } from './DataQualityMappingAndRuntimeBuilder.js';
import { CLASS_ELEMENT_CREATION_BASIS } from './DSL_DataQuality_ElementDriver.js';
import { isElementDeprecated } from '@finos/legend-graph';
import { DATA_QUALITY_VALIDATION_TEST_ID } from './constants/DataQualityConstants.js';
const generateClassLabel = (val, dataQualityState) => {
const isDeprecatedClass = isElementDeprecated(val, dataQualityState.graphManagerState.graph);
return (_jsx("div", { className: clsx('data-quality-validation__setup__class-option-label', {
'data-quality-validation__setup__class-option-label--deprecated': isDeprecatedClass,
}), children: _jsx("div", { className: "data-quality-validation__setup__class-option-label__name", children: val.name }) }));
};
export const DataQualityClassSelector = observer((props) => {
const { dataQualityState, classes, onClassChange, noMatchMessage } = props;
const { dataQualityQueryBuilderState } = dataQualityState;
const applicationStore = useApplicationStore();
const elementFilterOption = createFilter({
ignoreCase: true,
ignoreAccents: false,
stringify: (option) => option.data.value.path,
});
const classOptions = classes.map((_class) => ({
value: _class,
label: generateClassLabel(_class, dataQualityState),
}));
const selectedClassOption = dataQualityQueryBuilderState.class
? {
value: dataQualityQueryBuilderState.class,
label: generateClassLabel(dataQualityQueryBuilderState.class, dataQualityState),
}
: null;
const changeClass = (val) => {
if (val.value === dataQualityQueryBuilderState.class) {
return;
}
dataQualityState.changeClass(val.value);
dataQualityState.updateElementOnClassChange();
onClassChange?.(val.value);
};
return (_jsx("div", { className: "data-quality-validation__setup__config-group data-quality-validation__setup__config-group--class", children: _jsx("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: "class", children: _jsx(PURE_ClassIcon, {}) }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown data-quality-validation__setup__config-group__item__selector data-quality-validation__setup__config-group__item__selector__milestoned", placeholder: classOptions.length
? 'Choose a class...'
: (noMatchMessage ?? 'No class found'), disabled: classOptions.length < 1 ||
(classOptions.length === 1 && Boolean(selectedClassOption)), noMatchMessage: noMatchMessage, options: classOptions, onChange: changeClass, value: selectedClassOption, darkMode: !applicationStore.layoutService
.TEMPORARY__isLightColorThemeEnabled, filterOption: elementFilterOption })] }) }) }));
});
export const DataQualityServiceValidationSideBar = observer((props) => {
const { dataQualityState, children } = props;
return (_jsxs("div", { className: clsx('data-quality-validation__side-bar', dataQualityState.sideBarClassName), children: [_jsx("div", { "data-testid": DATA_QUALITY_VALIDATION_TEST_ID.DATA_QUALITY_VALIDATION_SETUP, className: "panel data-quality-validation__setup", children: _jsx("div", { className: "panel__content data-quality-validation__setup__content", children: "service selection to be show" }) }), _jsx("div", { className: "data-quality-validation__side-bar__content", children: children })] }));
});
export const DataQualityClassValidationSideBar = observer((props) => {
const { dataQualityClassValidationState, children } = props;
const validationElementCreationBasis = dataQualityClassValidationState.validationElementCreationBasis;
return (_jsxs("div", { className: clsx('data-quality-validation__side-bar', dataQualityClassValidationState.sideBarClassName), children: [_jsx("div", { "data-testid": DATA_QUALITY_VALIDATION_TEST_ID.DATA_QUALITY_VALIDATION_SETUP, className: "panel data-quality-validation__setup", children: _jsx("div", { className: "panel__content data-quality-validation__setup__content", children: validationElementCreationBasis ===
CLASS_ELEMENT_CREATION_BASIS.DATASPACE_BASED ? (_jsx(DataQualityDataSpaceBuilderSetupPanelContent, { dataQualityState: dataQualityClassValidationState })) : (_jsx(DataQualityMappingAndRuntimeBuilder, { dataQualityState: dataQualityClassValidationState })) }) }), _jsx("div", { className: "data-quality-validation__side-bar__content", children: children })] }));
});
//# sourceMappingURL=DataQualitySideBar.js.map