From 06710a8f025302cadf696817c6d9d77db95d2494 Mon Sep 17 00:00:00 2001 From: "SOUISSI Maissa (Externe)" Date: Wed, 12 Nov 2025 01:13:31 +0100 Subject: [PATCH 1/2] add pcc min parameters Signed-off-by: SOUISSI Maissa (Externe) --- .../parameters/use-get-pcc-min-parameters.ts | 75 +++++++++++++++++++ src/components/parameters-tabs.tsx | 21 ++++++ 2 files changed, 96 insertions(+) create mode 100644 src/components/dialogs/parameters/use-get-pcc-min-parameters.ts diff --git a/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts b/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts new file mode 100644 index 0000000000..5e5d2ba04e --- /dev/null +++ b/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2024, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +import { useCallback, useEffect, useRef, useState } from 'react'; +import { useSelector } from 'react-redux'; +import { AppState } from '../../../redux/reducer'; +import { + ComputingType, + getPccMinStudyParameters, + NotificationsUrlKeys, + PccMinParameters, + useNotificationsListener, + useSnackMessage, +} from '@gridsuite/commons-ui'; +import { useOptionalServiceStatus } from '../../../hooks/use-optional-service-status'; +import { OptionalServicesNames, OptionalServicesStatus } from '../../utils/optional-services'; +import type { UUID } from 'node:crypto'; +import { haveComputationParametersChanged } from './use-parameters-notification'; +import { isComputationParametersUpdatedNotification } from 'types/notification-types'; + +export const useGetPccMinParameters = (): PccMinParameters | null => { + const studyUuid = useSelector((state: AppState) => state.studyUuid); + const { snackError } = useSnackMessage(); + const [pccMinParams, setPccMinParams] = useState(null); + + const pccMinAvailability = useOptionalServiceStatus(OptionalServicesNames.PccMin); + const pccMinAvailabilityRef = useRef(pccMinAvailability); + pccMinAvailabilityRef.current = pccMinAvailability; + + const fetchPccMinStudyParameters = useCallback( + (studyUuid: UUID) => { + getPccMinStudyParameters(studyUuid) + .then((params) => { + setPccMinParams(params); + }) + .catch((error) => { + snackError({ + messageTxt: error.message, + headerId: 'paramsRetrievingError', + }); + }); + }, + [snackError] + ); + useEffect(() => { + if (studyUuid && pccMinAvailability === OptionalServicesStatus.Up) { + fetchPccMinStudyParameters(studyUuid); + } + }, [pccMinAvailability, studyUuid, fetchPccMinStudyParameters]); + + const pccMinParamsUpdated = useCallback( + (event: MessageEvent) => { + const eventData = JSON.parse(event.data); + if ( + studyUuid && + pccMinAvailability === OptionalServicesStatus.Up && + isComputationParametersUpdatedNotification(eventData) && + haveComputationParametersChanged(ComputingType.PCC_MIN, eventData) + ) { + fetchPccMinStudyParameters(studyUuid); + } + }, + [studyUuid, fetchPccMinStudyParameters, pccMinAvailability] + ); + + useNotificationsListener(NotificationsUrlKeys.STUDY, { + listenerCallbackMessage: pccMinParamsUpdated, + }); + + return pccMinParams; +}; diff --git a/src/components/parameters-tabs.tsx b/src/components/parameters-tabs.tsx index 829cf2e6b1..67cfac9088 100644 --- a/src/components/parameters-tabs.tsx +++ b/src/components/parameters-tabs.tsx @@ -53,6 +53,7 @@ import { getSecurityAnalysisDefaultLimitReductions, LoadFlowParametersInline, NetworkVisualizationParametersInline, + PccMinParametersInLine, SecurityAnalysisParametersInline, SensitivityAnalysisParametersInline, ShortCircuitParametersInLine, @@ -61,6 +62,7 @@ import { } from '@gridsuite/commons-ui'; import { useParametersNotification } from './dialogs/parameters/use-parameters-notification'; import { useGetVoltageInitParameters } from './dialogs/parameters/use-get-voltage-init-parameters'; +import { useGetPccMinParameters } from './dialogs/parameters/use-get-pcc-min-parameters'; enum TAB_VALUES { lfParamsTabValue = 'LOAD_FLOW', @@ -103,6 +105,7 @@ const ParametersTabs: FunctionComponent = ({ view }) => { const voltageInitAvailability = useOptionalServiceStatus(OptionalServicesNames.VoltageInit); const shortCircuitAvailability = useOptionalServiceStatus(OptionalServicesNames.ShortCircuit); const stateEstimationAvailability = useOptionalServiceStatus(OptionalServicesNames.StateEstimation); + const pccMinAvailability = useOptionalServiceStatus(OptionalServicesNames.PccMin); const networkVisualizationsParameters = useSelector((state: AppState) => state.networkVisualizationsParameters); @@ -180,6 +183,7 @@ const ParametersTabs: FunctionComponent = ({ view }) => { ); const shortCircuitParameters = useGetShortCircuitParameters(); + const pccMinParameters = useGetPccMinParameters(); const voltageInitParameters = useGetVoltageInitParameters(); const useStateEstimationParameters = useGetStateEstimationParameters(); @@ -228,6 +232,7 @@ const ParametersTabs: FunctionComponent = ({ view }) => { (!enableDeveloperMode && (oldValue === TAB_VALUES.sensitivityAnalysisParamsTabValue || oldValue === TAB_VALUES.shortCircuitParamsTabValue || + oldValue === TAB_VALUES.pccMinTabValue || oldValue === TAB_VALUES.dynamicSimulationParamsTabValue || oldValue === TAB_VALUES.dynamicSecurityAnalysisParamsTabValue)) || oldValue === TAB_VALUES.stateEstimationTabValue @@ -286,6 +291,14 @@ const ParametersTabs: FunctionComponent = ({ view }) => { enableDeveloperMode={enableDeveloperMode} /> ); + case TAB_VALUES.pccMinTabValue: + return ( + + ); case TAB_VALUES.dynamicSimulationParamsTabValue: return ; case TAB_VALUES.dynamicSecurityAnalysisParamsTabValue: @@ -328,6 +341,7 @@ const ParametersTabs: FunctionComponent = ({ view }) => { currentRootNetworkUuid, sensitivityAnalysisBackend, shortCircuitParameters, + pccMinParameters, user, voltageInitParameters, useStateEstimationParameters, @@ -375,6 +389,13 @@ const ParametersTabs: FunctionComponent = ({ view }) => { label={} value={TAB_VALUES.shortCircuitParamsTabValue} /> + {enableDeveloperMode ? ( + } + value={TAB_VALUES.pccMinTabValue} + /> + ) : null} {enableDeveloperMode ? ( Date: Thu, 13 Nov 2025 20:58:42 +0100 Subject: [PATCH 2/2] fix Signed-off-by: SOUISSI Maissa (Externe) --- src/components/dialogs/parameters/use-get-pcc-min-parameters.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts b/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts index 5e5d2ba04e..1196750892 100644 --- a/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts +++ b/src/components/dialogs/parameters/use-get-pcc-min-parameters.ts @@ -28,8 +28,6 @@ export const useGetPccMinParameters = (): PccMinParameters | null => { const [pccMinParams, setPccMinParams] = useState(null); const pccMinAvailability = useOptionalServiceStatus(OptionalServicesNames.PccMin); - const pccMinAvailabilityRef = useRef(pccMinAvailability); - pccMinAvailabilityRef.current = pccMinAvailability; const fetchPccMinStudyParameters = useCallback( (studyUuid: UUID) => {