Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor NEE and Sensi parameters #2293

Open
wants to merge 34 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
02a04a4
Add icons to the guidance popup text.
AAJELLAL Aug 19, 2024
665e05f
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Aug 21, 2024
d9bb3f6
setup params notification.
AAJELLAL Sep 3, 2024
0937d0d
Handle short circuit update parameters using notification.
AAJELLAL Sep 4, 2024
3f1e6f7
Handle parameters update when notification study is received.
AAJELLAL Sep 10, 2024
98bf713
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 10, 2024
9766d73
Fix the slider value change.
AAJELLAL Sep 11, 2024
a0e8c2b
Fix fetching params after updating the provider.
AAJELLAL Sep 12, 2024
5026b10
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 12, 2024
32504fd
Fix some review remarks
AAJELLAL Sep 19, 2024
8e6fbd7
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 19, 2024
a8baadc
Some cleanup.
AAJELLAL Sep 19, 2024
e9014a0
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 19, 2024
9858f0f
Add some typing.
AAJELLAL Sep 23, 2024
7afc30a
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 23, 2024
c3ef5a2
Some review remarks.
AAJELLAL Sep 24, 2024
4296746
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 24, 2024
feeb627
Add copyRight
AAJELLAL Sep 24, 2024
41d9a31
Fix imports.
AAJELLAL Sep 24, 2024
f816ae7
Fix import.
AAJELLAL Sep 25, 2024
624b6ee
Merge branch 'main' of https://github.com/gridsuite/gridstudy-app int…
AAJELLAL Sep 25, 2024
8bcb9ca
Remove some code duplication.
AAJELLAL Sep 25, 2024
fa0c8b0
Merge branch 'main' into handle-params-notification
AAJELLAL Sep 27, 2024
d133bb0
revert computingType renaming. Will do in another PR
sBouzols Sep 30, 2024
18f17f0
revert isValidComputingType renaming as well
sBouzols Sep 30, 2024
aa62c91
prettier
sBouzols Oct 2, 2024
ef59c63
restore default export for ComputingType
sBouzols Oct 2, 2024
1f8ad1e
refactor(useParametersBackend): comment code, remove useless and bad …
sBouzols Oct 2, 2024
63b39f6
fix(useGetVoltageInitParameters): add ref to avoid double effect proc
sBouzols Oct 2, 2024
79a01be
fix(useGetNonEvacuatedEnergyParameters): on the same model than others
sBouzols Oct 2, 2024
59ad7ab
Merge branch 'main' into handle-params-notification
sBouzols Oct 2, 2024
4eae622
refactor(): remove useGetNonEvacuatedEnergyParameters and use the com…
sBouzols Oct 4, 2024
b716947
Merge remote-tracking branch 'origin/main' into refactor-NonEvacuated…
sBouzols Oct 8, 2024
4c058e1
Merge branch 'main' into refactor-NonEvacuatedEnergyParameters
sBouzols Oct 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

import { CustomFormProvider, MuiSelectInput, SubmitButton, useSnackMessage } from '@gridsuite/commons-ui';
import { CustomFormProvider, MuiSelectInput, SubmitButton } from '@gridsuite/commons-ui';
import { Button, DialogActions, Grid } from '@mui/material';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useCallback, useEffect, useMemo } from 'react';
import { FormattedMessage } from 'react-intl';
import { useSelector } from 'react-redux';
import { styles } from '../parameters';
import { yupResolver } from '@hookform/resolvers/yup';
import { useForm } from 'react-hook-form';
Expand Down Expand Up @@ -46,10 +45,6 @@ import {
STAGES_SELECTION,
} from '../../../utils/field-constants';
import yup from '../../../utils/yup-config';
import {
getNonEvacuatedEnergyParameters,
setNonEvacuatedEnergyParameters,
} from '../../../../services/study/non-evacuated-energy';
import NonEvacuatedEnergyParametersSelector from './non-evacuated-energy-parameters-selector';
import { LineSeparator } from '../../dialogUtils';
import {
Expand All @@ -65,55 +60,6 @@ import {
getMonitoredBranchesParams,
} from './utils';
import { mergeSx } from 'components/utils/functions';
import ComputingType from '../../../computing-status/computing-type';
import { isComputationParametersUpdated } from '../common/computation-parameters-util';
import { OptionalServicesNames, OptionalServicesStatus } from 'components/utils/optional-services';
import { useOptionalServiceStatus } from 'hooks/use-optional-service-status';

export const useGetNonEvacuatedEnergyParameters = () => {
const studyUuid = useSelector((state) => state.studyUuid);
const studyUpdated = useSelector((state) => state.studyUpdated);

const { snackError } = useSnackMessage();
const [nonEvacuatedEnergyParams, setNonEvacuatedEnergyParams] = useState(null);

const nonEvacuatedEnergyAvailability = useOptionalServiceStatus(OptionalServicesNames.SensitivityAnalysis);
const nonEvacuatedEnergyAvailabilityRef = useRef(nonEvacuatedEnergyAvailability);
nonEvacuatedEnergyAvailabilityRef.current = nonEvacuatedEnergyAvailability;

const fetchNonEvacuatedEnergyParameters = useCallback(
(studyUuid) => {
getNonEvacuatedEnergyParameters(studyUuid)
.then((params) => setNonEvacuatedEnergyParams(params))
.catch((error) => {
snackError({
messageTxt: error.message,
headerId: 'paramsRetrievingError',
});
});
},
[snackError]
);

useEffect(() => {
if (studyUuid && nonEvacuatedEnergyAvailability === OptionalServicesStatus.Up) {
fetchNonEvacuatedEnergyParameters(studyUuid);
}
}, [nonEvacuatedEnergyAvailability, studyUuid, fetchNonEvacuatedEnergyParameters]);

// fetch the parameter if NON_EVACUATED_ENERGY_ANALYSIS notification type is received.
useEffect(() => {
if (
studyUuid &&
nonEvacuatedEnergyAvailabilityRef.current === OptionalServicesStatus.Up &&
isComputationParametersUpdated(ComputingType.NON_EVACUATED_ENERGY_ANALYSIS, studyUpdated)
) {
fetchNonEvacuatedEnergyParameters(studyUuid);
}
}, [studyUuid, fetchNonEvacuatedEnergyParameters, studyUpdated]);

return [nonEvacuatedEnergyParams, setNonEvacuatedEnergyParams];
};

const formSchema = yup
.object()
Expand All @@ -127,10 +73,16 @@ const formSchema = yup
})
.required();

export const NonEvacuatedEnergyParameters = ({ parametersBackend, useNonEvacuatedEnergyParameters }) => {
const { snackError } = useSnackMessage();

const [providers, provider, updateProvider, resetProvider] = parametersBackend;
export const NonEvacuatedEnergyParameters = ({ parametersBackend }) => {
const [
providers,
provider,
updateProvider,
resetProvider,
nonEvacuatedEnergyParams,
updateNonEvacuatedEnergyParams,
resetNonEvacuatedEnergyParams,
] = parametersBackend;

const emptyFormData = useMemo(() => {
return {
Expand Down Expand Up @@ -195,18 +147,6 @@ export const NonEvacuatedEnergyParameters = ({ parametersBackend, useNonEvacuate
});

const { reset, handleSubmit, setValue, getValues, watch } = formMethods;
const studyUuid = useSelector((state) => state.studyUuid);

const [nonEvacuatedEnergyParams, setNonEvacuatedEnergyParams] = useNonEvacuatedEnergyParameters;

const resetNonEvacuatedEnergyParameters = useCallback(() => {
setNonEvacuatedEnergyParameters(studyUuid, emptyFormData).catch((error) => {
snackError({
messageTxt: error.message,
headerId: 'paramsChangingError',
});
});
}, [studyUuid, emptyFormData, snackError]);

const formatNewParams = useCallback((newParams, withProvider = true) => {
let params = {
Expand All @@ -226,19 +166,10 @@ export const NonEvacuatedEnergyParameters = ({ parametersBackend, useNonEvacuate

const onSubmit = useCallback(
(newParams) => {
setNonEvacuatedEnergyParameters(studyUuid, formatNewParams(newParams, true))
.then(() => {
setNonEvacuatedEnergyParams(formatNewParams(newParams, false));
updateProvider(newParams[PROVIDER]);
})
.catch((error) => {
snackError({
messageTxt: error.message,
headerId: 'NonEvacuatedEnergyParametersError',
});
});
updateNonEvacuatedEnergyParams(formatNewParams(newParams, false));
updateProvider(newParams[PROVIDER]);
},
[setNonEvacuatedEnergyParams, snackError, studyUuid, formatNewParams, updateProvider]
[updateNonEvacuatedEnergyParams, formatNewParams, updateProvider]
);

const fromNonEvacuatedEnergyParamsDataToFormValues = useCallback(
Expand Down Expand Up @@ -387,7 +318,7 @@ export const NonEvacuatedEnergyParameters = ({ parametersBackend, useNonEvacuate
? nonEvacuatedEnergyParams
: emptyFormData;
fromNonEvacuatedEnergyParamsDataToFormValues(params);
}, [fromNonEvacuatedEnergyParamsDataToFormValues, nonEvacuatedEnergyParams, parametersBackend, emptyFormData]);
}, [fromNonEvacuatedEnergyParamsDataToFormValues, nonEvacuatedEnergyParams, emptyFormData]);

useEffect(() => {
const subscription = watch((value, { name, type }) => {
Expand All @@ -403,8 +334,8 @@ export const NonEvacuatedEnergyParameters = ({ parametersBackend, useNonEvacuate
const clear = useCallback(() => {
reset(emptyFormData);
resetProvider();
resetNonEvacuatedEnergyParameters();
}, [emptyFormData, reset, resetProvider, resetNonEvacuatedEnergyParameters]);
resetNonEvacuatedEnergyParams();
}, [emptyFormData, reset, resetProvider, resetNonEvacuatedEnergyParams]);

const onFormChanged = () => {};
const onChangeParams = () => {};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ import yup from '../../../utils/yup-config';
import {
fetchSensitivityAnalysisParameters,
getSensitivityAnalysisFactorsCount,
setSensitivityAnalysisParameters,
} from '../../../../services/study/sensitivity-analysis';
import SensitivityAnalysisFields from './sensitivity-Flow-parameters';
import SensitivityParametersSelector from './sensitivity-parameters-selector';
Expand Down Expand Up @@ -93,9 +92,8 @@ export const SensitivityAnalysisParameters = ({ parametersBackend, setHaveDirtyF
const { snackError } = useSnackMessage();

const [launchLoader, setLaunchLoader] = useState(false);
const [isSubmitAction, setIsSubmitAction] = useState(false);
const [analysisComputeComplexity, setAnalysisComputeComplexity] = useState(0);
const [providers, , , , params, updateParameters] = parametersBackend;
const [providers, , , , params, updateParameters, resetSensitivityAnalysisParameters] = parametersBackend;
const [openCreateParameterDialog, setOpenCreateParameterDialog] = useState(false);
const [openSelectParameterDialog, setOpenSelectParameterDialog] = useState(false);

Expand Down Expand Up @@ -126,16 +124,6 @@ export const SensitivityAnalysisParameters = ({ parametersBackend, setHaveDirtyF
const { reset, handleSubmit, formState, getValues, setValue } = formMethods;
const studyUuid = useSelector((state) => state.studyUuid);
const currentNode = useSelector((state) => state.currentTreeNode);
const [sensitivityAnalysisParams, setSensitivityAnalysisParams] = useState(params);

const resetSensitivityAnalysisParameters = useCallback(() => {
setSensitivityAnalysisParameters(studyUuid, null).catch((error) => {
snackError({
messageTxt: error.message,
headerId: 'paramsChangingError',
});
});
}, [studyUuid, snackError]);

const formatNewParams = useCallback((newParams) => {
return {
Expand Down Expand Up @@ -382,24 +370,13 @@ export const SensitivityAnalysisParameters = ({ parametersBackend, setHaveDirtyF
handleEntries(values[PARAMETER_SENSI_HVDC], PARAMETER_SENSI_HVDC);
handleEntries(values[PARAMETER_SENSI_PST], PARAMETER_SENSI_PST);
}, [onChangeParams, getValues]);

const onSubmit = useCallback(
(newParams) => {
setIsSubmitAction(true);
setSensitivityAnalysisParameters(studyUuid, formatNewParams(newParams))
.then(() => {
let formattedParams = formatNewParams(newParams);
setSensitivityAnalysisParams(formattedParams);
updateParameters(formattedParams);
initRowsCount();
})
.catch((error) => {
snackError({
messageTxt: error.message,
headerId: 'SensitivityAnalysisParametersError',
});
});
updateParameters(formatNewParams(newParams));
initRowsCount();
},
[setSensitivityAnalysisParams, snackError, studyUuid, formatNewParams, initRowsCount, updateParameters]
[formatNewParams, initRowsCount, updateParameters]
);

const handleSensibilityParameter = useCallback(
Expand Down Expand Up @@ -427,23 +404,13 @@ export const SensitivityAnalysisParameters = ({ parametersBackend, setHaveDirtyF
[snackError, fromSensitivityAnalysisParamsDataToFormValues, reset, initRowsCount]
);

useEffect(() => {
if (sensitivityAnalysisParams) {
reset(fromSensitivityAnalysisParamsDataToFormValues(sensitivityAnalysisParams));
!isSubmitAction && initRowsCount();
}
}, [
fromSensitivityAnalysisParamsDataToFormValues,
sensitivityAnalysisParams,
initRowsCount,
isSubmitAction,
reset,
]);
useEffect(() => {
if (params) {
reset(fromSensitivityAnalysisParamsDataToFormValues(params));
initRowsCount();
setAnalysisComputeComplexity(0);
}
}, [params, reset, fromSensitivityAnalysisParamsDataToFormValues]);
}, [params, reset, fromSensitivityAnalysisParamsDataToFormValues, initRowsCount]);

const clear = useCallback(() => {
reset(emptyFormData);
Expand Down
23 changes: 8 additions & 15 deletions src/components/parameters-tabs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import {
import {
fetchDefaultSensitivityAnalysisProvider,
getSensitivityAnalysisParameters,
setSensitivityAnalysisParameters,
} from 'services/study/sensitivity-analysis';
import { fetchSensitivityAnalysisProviders } from 'services/sensitivity-analysis';
import { SensitivityAnalysisParameters } from './dialogs/parameters/sensi/sensitivity-analysis-parameters';
Expand All @@ -50,12 +51,10 @@ import {
fetchDefaultNonEvacuatedEnergyProvider,
fetchNonEvacuatedEnergyProvider,
getNonEvacuatedEnergyParameters,
setNonEvacuatedEnergyParameters,
updateNonEvacuatedEnergyProvider,
} from 'services/study/non-evacuated-energy';
import {
NonEvacuatedEnergyParameters,
useGetNonEvacuatedEnergyParameters,
} from './dialogs/parameters/non-evacuated-energy/non-evacuated-energy-parameters';
import { NonEvacuatedEnergyParameters } from './dialogs/parameters/non-evacuated-energy/non-evacuated-energy-parameters';
import ComputingType from './computing-status/computing-type';
import RunningStatus from './utils/running-status';
import GlassPane from './results/common/glass-pane';
Expand Down Expand Up @@ -205,7 +204,8 @@ const ParametersTabs: FunctionComponent<OwnProps> = (props) => {
null,
fetchDefaultSensitivityAnalysisProvider,
null,
getSensitivityAnalysisParameters
getSensitivityAnalysisParameters,
setSensitivityAnalysisParameters
);

const nonEvacuatedEnergyBackend = useParametersBackend(
Expand All @@ -216,11 +216,10 @@ const ParametersTabs: FunctionComponent<OwnProps> = (props) => {
fetchNonEvacuatedEnergyProvider,
fetchDefaultNonEvacuatedEnergyProvider,
updateNonEvacuatedEnergyProvider,
getNonEvacuatedEnergyParameters
getNonEvacuatedEnergyParameters,
setNonEvacuatedEnergyParameters
);

const useNonEvacuatedEnergyParameters = useGetNonEvacuatedEnergyParameters();

const useShortCircuitParameters = useGetShortCircuitParameters();

const componentLibraries = useGetAvailableComponentLibraries(user);
Expand Down Expand Up @@ -288,12 +287,7 @@ const ParametersTabs: FunctionComponent<OwnProps> = (props) => {
/>
);
case TAB_VALUES.nonEvacuatedEnergyParamsTabValue:
return (
<NonEvacuatedEnergyParameters
parametersBackend={nonEvacuatedEnergyBackend}
useNonEvacuatedEnergyParameters={useNonEvacuatedEnergyParameters}
/>
);
return <NonEvacuatedEnergyParameters parametersBackend={nonEvacuatedEnergyBackend} />;
case TAB_VALUES.shortCircuitParamsTabValue:
return (
<ShortCircuitParameters
Expand All @@ -315,7 +309,6 @@ const ParametersTabs: FunctionComponent<OwnProps> = (props) => {
sensitivityAnalysisBackend,
nonEvacuatedEnergyBackend,
tabValue,
useNonEvacuatedEnergyParameters,
useShortCircuitParameters,
user,
]);
Expand Down
Loading