@finos/legend-extension-dsl-data-quality
Version:
Legend extension for Data Quality
49 lines • 4.15 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
/**
* Copyright (c) 2026-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 { useMemo } from 'react';
import { DataQualityMultiCustomSelector } from './DataQualityCustomSelector.js';
import { ColSpec, ColSpecArray, ColSpecArrayInstance, Multiplicity, } from '@finos/legend-graph';
import { useApplicationStore } from '@finos/legend-application';
import { DataQualityValidationCustomHelperFunction, DataQualityValidationFilterFunction, } from './utils/DataQualityValidationFunction.js';
import { DataQualityValidationFilterEditor } from './DataQualityValidationFilterEditor.js';
import { DataQualityValidationHelperFunctionEditor } from './DataQualityValidationHelperFunctionEditor.js';
export const DataQualityRelationLambdaGUIValidationEditor = observer((props) => {
const { validationState, disabled } = props;
const { dataQualityValidationLambdaFormState, columnOptions } = validationState;
const appStore = useApplicationStore();
const darkMode = !appStore.layoutService.TEMPORARY__isLightColorThemeEnabled;
if (!dataQualityValidationLambdaFormState) {
return null;
}
const { assertion, otherFunction } = dataQualityValidationLambdaFormState;
const selectedColumns = useMemo(() => columnOptions.filter(({ value }) => assertion.parameters.columns.values[0]?.colSpecs.some((col) => col.name === value)), [assertion.parameters.columns.values, columnOptions]);
return (_jsxs("div", { className: "data-quality-validation-gui-editor", role: "group", tabIndex: -1, onFocus: () => validationState.debouncedHandleValidationFormChange.cancel(), children: [_jsxs("div", { className: "data-quality-validation-gui-editor__functions-list", children: [otherFunction instanceof DataQualityValidationFilterFunction && (_jsx(DataQualityValidationFilterEditor, { validationFunction: otherFunction, disabled: disabled, validationState: validationState }, otherFunction.name)), otherFunction instanceof
DataQualityValidationCustomHelperFunction && (_jsx(DataQualityValidationHelperFunctionEditor, { validationFunction: otherFunction, disabled: disabled, validationState: validationState }, otherFunction.name))] }), _jsxs("div", { className: "data-quality-validation-gui-editor__function data-quality-validation-gui-editor__function--assert-helper", children: [_jsx("div", { className: "data-quality-uml-element-editor__lambda__label data-quality-validation-gui-editor__function--assert-helper--description", children: "Columns to persist" }), _jsx(DataQualityMultiCustomSelector, { value: selectedColumns, options: columnOptions, onChange: (values) => {
const colSpecArray = new ColSpecArray();
colSpecArray.colSpecs = values.map(({ value }) => {
const colSpecValue = new ColSpec();
colSpecValue.name = value;
return colSpecValue;
});
const colSpecArrayInstance = new ColSpecArrayInstance(Multiplicity.ZERO_MANY);
colSpecArrayInstance.values = [colSpecArray];
assertion.parameters.columns = colSpecArrayInstance;
validationState.debouncedHandleValidationFormChange();
}, placeholder: "Select Columns", disabled: disabled, darkMode: darkMode })] })] }));
});
//# sourceMappingURL=DataQualityRelationLambdaGUIValidationEditor.js.map