From 881ffcb0ece92fb3bd3a99c0f607ed8816e7c0a9 Mon Sep 17 00:00:00 2001 From: mheggelund Date: Mon, 15 Jan 2024 15:02:00 +0100 Subject: [PATCH] feat: Fetch, save and update variogram cases for Net-To-Gross and Continious Parameter method. --- .../AddCaseButtons/AddCaseButtons.tsx | 4 +- src/features/Compute/CaseGroup/CaseGroup.tsx | 10 +- .../CaseSettingSelect/CaseSettingSelect.tsx | 4 +- .../VariogramOptionSelect.tsx | 174 ++++++++++++++++-- .../Compute/CaseGroup/CaseRow/CaseRow.tsx | 163 +++++++--------- .../ComputeVariogram/ComputeVariogram.tsx | 11 +- 6 files changed, 241 insertions(+), 125 deletions(-) diff --git a/src/components/AddCaseButtons/AddCaseButtons.tsx b/src/components/AddCaseButtons/AddCaseButtons.tsx index 4d6f7872..d1fedfc5 100644 --- a/src/components/AddCaseButtons/AddCaseButtons.tsx +++ b/src/components/AddCaseButtons/AddCaseButtons.tsx @@ -30,8 +30,8 @@ export const AddCaseButtons = ({ Add case )} - {title === 'Net-to-Gross' && addCase && ( - diff --git a/src/features/Compute/CaseGroup/CaseGroup.tsx b/src/features/Compute/CaseGroup/CaseGroup.tsx index f2c92b8c..c37a19c2 100644 --- a/src/features/Compute/CaseGroup/CaseGroup.tsx +++ b/src/features/Compute/CaseGroup/CaseGroup.tsx @@ -100,7 +100,7 @@ export const CaseGroup = ({ const getMethodId = (method: string) => { if (method === 'Indicator') { return 'c96fd047-19cc-4e10-9c1e-626a62c22539'; - } else if (method === 'Net-to-Gross') { + } else if (method === 'Net-To-Gross') { return '2abfea7a-7160-4b0a-85a9-674be70b5f17'; } else if (method === 'ContiniousParameter') { return '88663a7e-0a45-46ce-8ba3-ef4a314e1878'; @@ -171,8 +171,8 @@ export const CaseGroup = ({ case 'Indicator': setListItem('Indicator', newCase); break; - case 'Net-to-Gross': - setListItem('Net-to-Gross', newCase); + case 'Net-To-Gross': + setListItem('Net-To-Gross', newCase); break; case 'ContiniousParameter': setListItem('ContiniousParameter', newCase); @@ -248,9 +248,9 @@ export const CaseGroup = ({ addCase('Indicator'); } else if ( triggerAddCase !== undefined && - triggerAddCase === 'Net-to-Gross' + triggerAddCase === 'Net-To-Gross' ) { - addCase('Net-to-Gross'); + addCase('Net-To-Gross'); } else if ( triggerAddCase !== undefined && triggerAddCase === 'ContiniousParameter' diff --git a/src/features/Compute/CaseGroup/CaseOptionSelects/CaseSettingSelect/CaseSettingSelect.tsx b/src/features/Compute/CaseGroup/CaseOptionSelects/CaseSettingSelect/CaseSettingSelect.tsx index 8eecd9c0..727238be 100644 --- a/src/features/Compute/CaseGroup/CaseOptionSelects/CaseSettingSelect/CaseSettingSelect.tsx +++ b/src/features/Compute/CaseGroup/CaseOptionSelects/CaseSettingSelect/CaseSettingSelect.tsx @@ -28,8 +28,8 @@ export const CaseSettingSelect = ({ 0 ? options : []} optionLabel={(option) => option.name} diff --git a/src/features/Compute/CaseGroup/CaseOptionSelects/VariogramOptionSelect.tsx b/src/features/Compute/CaseGroup/CaseOptionSelects/VariogramOptionSelect.tsx index 082e588d..2d257ddc 100644 --- a/src/features/Compute/CaseGroup/CaseOptionSelects/VariogramOptionSelect.tsx +++ b/src/features/Compute/CaseGroup/CaseOptionSelects/VariogramOptionSelect.tsx @@ -1,3 +1,4 @@ +/* eslint-disable max-lines */ /* eslint-disable max-lines-per-function */ import { ComputeCaseDto, @@ -10,6 +11,7 @@ import { CaseSettingSelect } from './CaseSettingSelect/CaseSettingSelect'; import { ModelAreaSelect } from './ModelAreaSelect/ModelAreaSelect'; export const VariogramOptionSelect = ({ + rowCase, modelAreas, caseType, selectedModelArea, @@ -31,6 +33,7 @@ export const VariogramOptionSelect = ({ saved, caseError, }: { + rowCase: ComputeCaseDto; modelAreas: ModelAreaDto[]; caseType: string; selectedModelArea?: ModelAreaDto[] | undefined; @@ -92,6 +95,147 @@ export const VariogramOptionSelect = ({ (value) => value.name === 'Archel', ); + // TODO: Refactor method to reusable function + const selectedParamValue = (method: string) => { + let settingsValueList: ListComputeSettingsInputValueDto[] | undefined = []; + let loadedParameters: ListComputeSettingsInputValueDto[] | undefined = []; + + if (method === 'Indicator') { + settingsValueList = + indicatorIndicatorSettings && indicatorIndicatorSettings[0].values; + } else if ( + method === 'Variogram Family Filter' && + caseType === 'Indicator' + ) { + settingsValueList = + indicatorFamilySettings && indicatorFamilySettings[0].values; + } else if (method === 'Net-To-Gross') { + settingsValueList = + NetGrossGrainSizeSettings && NetGrossGrainSizeSettings[0].values; + } else if ( + method === 'Variogram Family Filter' && + caseType === 'Net-To-Gross' + ) { + settingsValueList = + NetGrossVariogramFamilySettings && + NetGrossVariogramFamilySettings[0].values; + } else if ( + method === 'Variogram Family Filter' && + caseType === 'ContiniousParameter' + ) { + settingsValueList = + contParamsVariogramFamilySettings && + contParamsVariogramFamilySettings[0].values; + } else if (method === 'ContiniousParameter') { + settingsValueList = + contParamsParamsSettings && contParamsParamsSettings[0].values; + } else if (method === 'Archel') { + settingsValueList = + contParamsArchelSettings && contParamsArchelSettings[0].values; + } + + loadedParameters = + settingsValueList && + settingsValueList.filter((i) => + rowCase.inputSettings?.find( + (s) => s.inputSettingValueId === i.inputSettingValueId, + ), + ); + + let defaultParameter: ListComputeSettingsInputValueDto[] = []; + + if (method === 'Indicator' && loadedParameters) { + if ( + loadedParameters !== undefined && + selectedIndicatorParameters === undefined + ) { + defaultParameter = loadedParameters; + setIndicatorParameters && setIndicatorParameters(loadedParameters); + } else if ( + selectedIndicatorParameters !== undefined && + loadedParameters === undefined + ) { + defaultParameter = selectedIndicatorParameters; + } else if ( + selectedIndicatorParameters !== undefined && + loadedParameters !== undefined + ) { + defaultParameter = selectedIndicatorParameters; + } + return defaultParameter; + } else if (method === 'Variogram Family Filter') { + if ( + loadedParameters !== undefined && + selectedVariogramModels === undefined + ) { + defaultParameter = loadedParameters; + setVariogramModels && setVariogramModels(loadedParameters); + } else if ( + selectedVariogramModels !== undefined && + loadedParameters === undefined + ) { + defaultParameter = selectedVariogramModels; + } else if ( + selectedVariogramModels !== undefined && + loadedParameters !== undefined + ) { + defaultParameter = selectedVariogramModels; + } + return defaultParameter; + } else if (method === 'Net-To-Gross') { + if (loadedParameters !== undefined && selectedGrainSize === undefined) { + defaultParameter = loadedParameters; + setGrainSize && setGrainSize(loadedParameters); + } else if ( + selectedGrainSize !== undefined && + loadedParameters === undefined + ) { + defaultParameter = selectedGrainSize; + } else if ( + selectedGrainSize !== undefined && + loadedParameters !== undefined + ) { + defaultParameter = selectedGrainSize; + } + return defaultParameter; + } else if (method === 'ContiniousParameter') { + if (loadedParameters !== undefined && selectedParameters === undefined) { + defaultParameter = loadedParameters; + setParameters && setParameters(loadedParameters); + } else if ( + selectedParameters !== undefined && + loadedParameters === undefined + ) { + defaultParameter = selectedParameters; + } else if ( + selectedParameters !== undefined && + loadedParameters !== undefined + ) { + defaultParameter = selectedParameters; + } + return defaultParameter; + } else if (method === 'Archel') { + if ( + loadedParameters !== undefined && + selectedArchelFilter === undefined + ) { + defaultParameter = loadedParameters; + setArchelFilter && setArchelFilter(loadedParameters); + } else if ( + selectedArchelFilter !== undefined && + loadedParameters === undefined + ) { + defaultParameter = selectedArchelFilter; + } else if ( + selectedArchelFilter !== undefined && + loadedParameters !== undefined + ) { + defaultParameter = selectedArchelFilter; + } + return defaultParameter; + } + }; + return ( )} - {setGrainSize && caseType === 'Net-to-gross' && ( + {setGrainSize && caseType === 'Net-To-Gross' && ( )} - {caseType === 'Continuous parameter' && ( + {setParameters && caseType === 'ContiniousParameter' && ( )} diff --git a/src/features/Compute/CaseGroup/CaseRow/CaseRow.tsx b/src/features/Compute/CaseGroup/CaseRow/CaseRow.tsx index 35bc0a35..cdb9e6aa 100644 --- a/src/features/Compute/CaseGroup/CaseRow/CaseRow.tsx +++ b/src/features/Compute/CaseGroup/CaseRow/CaseRow.tsx @@ -127,7 +127,7 @@ export const CaseRow = ({ ? data.data.modelAreas.concat(wholeModelObject) : wholeModelObject; - // TODO: Make into reusable function + // TODO: Refactor, make into reusable function const getParameterList = () => { let inputSettingsList: CreateComputeCaseInputSettingsForm[] = []; @@ -153,6 +153,39 @@ export const CaseRow = ({ }); } + if (selectedGrainSize) { + const variogramModelTypeId = '397fe0eb-652a-4ed3-85f3-adef9d91e733'; + selectedGrainSize.forEach((s) => { + const temp = { + inputSettingValueId: s.inputSettingValueId, + inputSettingTypeId: variogramModelTypeId, + }; + inputSettingsList = [...inputSettingsList, temp]; + }); + } + + if (selectedParameters) { + const variogramModelTypeId = 'f9e54531-5858-4ad8-9cf1-9c19a2219214'; + selectedParameters.forEach((s) => { + const temp = { + inputSettingValueId: s.inputSettingValueId, + inputSettingTypeId: variogramModelTypeId, + }; + inputSettingsList = [...inputSettingsList, temp]; + }); + } + + if (selectedArchelFilter) { + const variogramModelTypeId = 'bf0fd3bd-f757-482d-a2dc-8f85814271cf'; + selectedArchelFilter.forEach((s) => { + const temp = { + inputSettingValueId: s.inputSettingValueId, + inputSettingTypeId: variogramModelTypeId, + }; + inputSettingsList = [...inputSettingsList, temp]; + }); + } + return inputSettingsList; }; @@ -295,81 +328,6 @@ export const CaseRow = ({ [areaList, allCasesList, selectedModelArea], ); - const modelAreas = data && data.data.modelAreas; - - const selectedParam = useCallback( - (rowId: string, type: string) => { - const rowCase = allCasesList.filter((c) => c.computeCaseId === rowId); - let defaultParameter: ListComputeSettingsInputValueDto[] = []; - - const indicatorIndicatorSettings = - indicatorSettings && - indicatorSettings[0].inputSettings?.filter( - (value) => value.name === type, - ); - - const settingsValueList = - indicatorIndicatorSettings && indicatorIndicatorSettings[0].values; - - const loadedParameters = - settingsValueList && - settingsValueList.filter((i) => - rowCase[0].inputSettings?.find( - (s) => s.inputSettingValueId === i.inputSettingValueId, - ), - ); - - // If loaded parameter is undefined and selected parameters are present, set data to selected parameters. - // If loaded parameter is not undefined and no selected parameters, set data to loaded parameters. - // If loaded parameters and selected parameters, set data to selected parameters. - if (type === 'Indicator') { - if ( - loadedParameters !== undefined && - selectedIndicatorParameters === undefined - ) { - defaultParameter = loadedParameters; - setIndicatorParameters(loadedParameters); - } else if ( - selectedIndicatorParameters !== undefined && - loadedParameters === undefined - ) { - defaultParameter = selectedIndicatorParameters; - } else if ( - selectedIndicatorParameters !== undefined && - loadedParameters !== undefined - ) { - defaultParameter = selectedIndicatorParameters; - } - return defaultParameter; - } else if (type === 'Variogram Family Filter') { - if ( - loadedParameters !== undefined && - selectedVariogramModels === undefined - ) { - defaultParameter = loadedParameters; - setVariogramModels(loadedParameters); - } else if ( - selectedVariogramModels !== undefined && - loadedParameters === undefined - ) { - defaultParameter = selectedVariogramModels; - } else if ( - selectedVariogramModels !== undefined && - loadedParameters !== undefined - ) { - defaultParameter = selectedVariogramModels; - } - return defaultParameter; - } - }, - [ - allCasesList, - indicatorSettings, - selectedIndicatorParameters, - selectedVariogramModels, - ], - ); - useEffect(() => { function setNotSaved(r: ComputeCaseDto) { if (r.computeCaseId === id && r.computeMethod.name === 'Channel') { @@ -392,31 +350,42 @@ export const CaseRow = ({ allCasesList.forEach((r) => setNotSavedVariogram(r)); }, [caseList, allCasesList, id, saved]); + useEffect(() => { + function setNotSavedVariogram(r: ComputeCaseDto) { + if (r.computeMethod.name === 'Net-To-Gross') { + setSaved(false); + } + } + + allCasesList.forEach((r) => setNotSavedVariogram(r)); + }, [caseList, allCasesList, id, saved]); + + useEffect(() => { + function setNotSavedVariogram(r: ComputeCaseDto) { + if (r.computeMethod.name === 'ContiniousParameter') { + setSaved(false); + } + } + + allCasesList.forEach((r) => setNotSavedVariogram(r)); + }, [caseList, allCasesList, id, saved]); + return ( {rowCase.computeMethod.name === 'Indicator' && ( )} - {rowCase.computeMethod.name === 'Net-to-Gross' && ( + {rowCase.computeMethod.name === 'Net-To-Gross' && ( { return data?.data.filter((method) => method.computeMethod.name === name); }; const Indicator = methodFilter('Indicator'); - const NetToGross = methodFilter('Net-to-Gross'); - const ContiniousParameter = methodFilter('ContiniusParameter'); + const NetToGross = methodFilter('Net-To-Gross'); + const ContiniousParameter = methodFilter('ContiniousParameter'); const setAlertMessage = (message: string) => { setAlert(message); @@ -89,9 +89,9 @@ export const ComputeVariogram = () => { Indicator -