From 70442b5166c3bdc707c587ac1994915bb8426dc8 Mon Sep 17 00:00:00 2001 From: Wilhelm Vold Date: Wed, 28 Feb 2024 08:10:20 +0100 Subject: [PATCH] fix: fixed the issue with autoSelect --- .../MetadataSelect/MetadataSelect.tsx | 72 +++++-------------- .../AddModel/ModelMetadata/ModelMetadata.tsx | 11 ++- 2 files changed, 25 insertions(+), 58 deletions(-) diff --git a/src/features/AddModel/ModelMetadata/MetadataSelect/MetadataSelect.tsx b/src/features/AddModel/ModelMetadata/MetadataSelect/MetadataSelect.tsx index c2d29b3c..65626672 100644 --- a/src/features/AddModel/ModelMetadata/MetadataSelect/MetadataSelect.tsx +++ b/src/features/AddModel/ModelMetadata/MetadataSelect/MetadataSelect.tsx @@ -1,4 +1,6 @@ /* eslint-disable max-lines-per-function */ +/* eslint-disable react/prop-types */ + import { Autocomplete, AutocompleteChanges } from '@equinor/eds-core-react'; import { MetadataDto } from '../../../../api/generated'; @@ -27,47 +29,19 @@ export const MetadataSelect = ({ value: 'Not relevant', }, ]; + + const props = + metadata != undefined && metadata!.length > 0 + ? metadata.filter((m) => m.metadataType === type) + : emptyOption; const filteredOptions = data.filter((d) => d.metadataType === type); const optionList: MetadataDto[] = filteredOptions ? emptyOption.concat(filteredOptions) : emptyOption; - const setSelectedMetadataOptions = (type: string) => { - let selectedOptions: MetadataDto[] = []; - - if (!isLoading && data && metadata) { - const selectedProps = metadata.filter((m) => m.metadataType === type); - - const noRelevantSelected = metadata - .filter((m) => m.metadataType === 'NoRelevant') - .filter((t) => t.metadataId === type); - - const loadedProps = optionList.filter( - (c) => - selectedProps.findIndex((x: MetadataDto) => x.value === c.value) > -1, - ); - - if ( - metadata.length > 0 && - selectedProps.length > 0 && - noRelevantSelected.length === 0 - ) { - selectedOptions = loadedProps; - } else if ( - selectedProps.length === 0 && - noRelevantSelected.length === 0 - ) { - selectedOptions = emptyOption; - } else if ( - selectedProps.length === 0 && - noRelevantSelected.length !== 0 - ) { - selectedOptions = []; - } - } - return selectedOptions; - }; - const resLitstLength = setSelectedMetadataOptions(type)?.length; + const intersection = optionList.filter((a) => + props.some((b) => JSON.stringify(a) === JSON.stringify(b)), + ); return ( option.value} - selectedOptions={ - setSelectedMetadataOptions(type) && - setSelectedMetadataOptions(type) !== undefined && - resLitstLength && - resLitstLength > 0 - ? setSelectedMetadataOptions(type) - : resLitstLength && resLitstLength === 0 - ? [ - { - metadataId: type, - metadataType: 'NoRelevant', - value: 'Not relevant', - }, - ] - : [] - } multiple - onOptionsChange={(e: AutocompleteChanges) => - handleAddMetadata(e, type) + initialSelectedOptions={ + intersection.length === 0 ? emptyOption : intersection } - > + onOptionsChange={(e: AutocompleteChanges) => { + handleAddMetadata(e, type); + console.log(e.selectedItems); + }} + /> ); }; diff --git a/src/features/AddModel/ModelMetadata/ModelMetadata.tsx b/src/features/AddModel/ModelMetadata/ModelMetadata.tsx index 381e796f..ba4be715 100644 --- a/src/features/AddModel/ModelMetadata/ModelMetadata.tsx +++ b/src/features/AddModel/ModelMetadata/ModelMetadata.tsx @@ -67,10 +67,15 @@ export const ModelMetadata = ({ .filter((i) => i.metadataType !== propType) .filter((n) => n.metadataId !== propType); - const newList = [...metadataList, ...e.selectedItems]; + const removeNotSelected = e.selectedItems.filter( + (i) => i.metadataType === propType, + ); + // console.log(removeNotSelected) - if (propType === 'Formation') console.log(e.selectedItems); - if (propType === 'Formation') console.log(newList); + const newList = [...metadataList, ...removeNotSelected]; + + // if (propType === 'Formation') console.log(e.selectedItems); + // if (propType === 'Formation') console.log(newList); setMetadata({ ...metadata,