diff --git a/src/components/dialogs/parameters/use-get-short-circuit-parameters.ts b/src/components/dialogs/parameters/use-get-short-circuit-parameters.ts deleted file mode 100644 index a4f2f17ca7..0000000000 --- a/src/components/dialogs/parameters/use-get-short-circuit-parameters.ts +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Copyright (c) 2025, 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, useState } from 'react'; -import { - useSnackMessage, - getStudyShortCircuitParameters, - NotificationsUrlKeys, - ShortCircuitParametersInfos, - useNotificationsListener, - ComputingType, -} from '@gridsuite/commons-ui'; -import { useSelector } from 'react-redux'; -import { OptionalServicesNames, OptionalServicesStatus } from '../../utils/optional-services'; -import { useOptionalServiceStatus } from '../../../hooks/use-optional-service-status'; -import { AppState } from 'redux/reducer'; -import type { UUID } from 'node:crypto'; -import { haveComputationParametersChanged } from './use-parameters-notification'; -import { isComputationParametersUpdatedNotification } from 'types/notification-types'; - -export const useGetShortCircuitParameters = (): ShortCircuitParametersInfos | null => { - const studyUuid = useSelector((state: AppState) => state.studyUuid); - const { snackError } = useSnackMessage(); - const [shortCircuitParams, setShortCircuitParams] = useState(null); - - const shortCircuitAvailability = useOptionalServiceStatus(OptionalServicesNames.ShortCircuit); - - const fetchShortCircuitParameters = useCallback( - (studyUuid: UUID) => { - getStudyShortCircuitParameters(studyUuid) - .then((params) => { - setShortCircuitParams(params); - }) - .catch((error) => { - snackError({ - messageTxt: error.message, - headerId: 'paramsRetrievingError', - }); - }); - }, - [snackError] - ); - - useEffect(() => { - if (studyUuid && shortCircuitAvailability === OptionalServicesStatus.Up) { - fetchShortCircuitParameters(studyUuid); - } - }, [shortCircuitAvailability, studyUuid, fetchShortCircuitParameters]); - - const shortCircuitParamsUpdated = useCallback( - (event: MessageEvent) => { - const eventData = JSON.parse(event.data); - if ( - studyUuid && - shortCircuitAvailability === OptionalServicesStatus.Up && - isComputationParametersUpdatedNotification(eventData) && - haveComputationParametersChanged(ComputingType.SHORT_CIRCUIT, eventData) - ) { - fetchShortCircuitParameters(studyUuid); - } - }, - [studyUuid, fetchShortCircuitParameters, shortCircuitAvailability] - ); - - useNotificationsListener(NotificationsUrlKeys.STUDY, { - listenerCallbackMessage: shortCircuitParamsUpdated, - }); - - return shortCircuitParams; -}; diff --git a/src/components/parameters-tabs.tsx b/src/components/parameters-tabs.tsx index 829cf2e6b1..048af5d00d 100644 --- a/src/components/parameters-tabs.tsx +++ b/src/components/parameters-tabs.tsx @@ -44,7 +44,6 @@ import { useGetStateEstimationParameters } from './dialogs/parameters/state-esti import DynamicSecurityAnalysisParameters from './dialogs/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters'; import { stylesLayout, tabStyles } from './utils/tab-utils'; import { useParameterState } from './dialogs/parameters/use-parameters-state'; -import { useGetShortCircuitParameters } from './dialogs/parameters/use-get-short-circuit-parameters'; import { cancelLeaveParametersTab, confirmLeaveParametersTab, setDirtyComputationParameters } from 'redux/actions'; import { StudyView, StudyViewType } from './utils/utils'; import { @@ -61,6 +60,11 @@ import { } from '@gridsuite/commons-ui'; import { useParametersNotification } from './dialogs/parameters/use-parameters-notification'; import { useGetVoltageInitParameters } from './dialogs/parameters/use-get-voltage-init-parameters'; +import { + getShortCircuitParameters, + getShortCircuitSpecificParametersDescription, + setShortCircuitParameters, +} from 'services/study/short-circuit-analysis'; enum TAB_VALUES { lfParamsTabValue = 'LOAD_FLOW', @@ -179,7 +183,21 @@ const ParametersTabs: FunctionComponent = ({ view }) => { sensitivityAnalysisBackend ); - const shortCircuitParameters = useGetShortCircuitParameters(); + const shortCircuitParametersBackend = useParametersBackend( + user, + studyUuid, + ComputingType.SHORT_CIRCUIT, + OptionalServicesStatus.Up, + null, + null, + null, + null, + getShortCircuitParameters, + setShortCircuitParameters, + getShortCircuitSpecificParametersDescription + ); + useParametersNotification(ComputingType.SHORT_CIRCUIT, OptionalServicesStatus.Up, shortCircuitParametersBackend); + const voltageInitParameters = useGetVoltageInitParameters(); const useStateEstimationParameters = useGetStateEstimationParameters(); @@ -282,7 +300,7 @@ const ParametersTabs: FunctionComponent = ({ view }) => { ); @@ -327,7 +345,7 @@ const ParametersTabs: FunctionComponent = ({ view }) => { currentNodeUuid, currentRootNetworkUuid, sensitivityAnalysisBackend, - shortCircuitParameters, + shortCircuitParametersBackend, user, voltageInitParameters, useStateEstimationParameters, diff --git a/src/services/study/short-circuit-analysis.ts b/src/services/study/short-circuit-analysis.ts index b293dcba63..4a0d0dae39 100644 --- a/src/services/study/short-circuit-analysis.ts +++ b/src/services/study/short-circuit-analysis.ts @@ -5,7 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -import { getStudyUrlWithNodeUuidAndRootNetworkUuid } from './index'; +import { getStudyUrl, getStudyUrlWithNodeUuidAndRootNetworkUuid } from './index'; import { getShortCircuitAnalysisTypeFromEnum, ShortCircuitAnalysisType, @@ -15,6 +15,12 @@ import type { UUID } from 'node:crypto'; import { GlobalFilters } from '../../components/results/common/global-filter/global-filter-types'; import { Selector } from 'components/results/common/utils'; +const PREFIX_SHORTCIRCUIT_SERVER_QUERIES = import.meta.env.VITE_API_GATEWAY + '/shortcircuit'; + +export function getShortCircuitUrl() { + return `${PREFIX_SHORTCIRCUIT_SERVER_QUERIES}/v1/`; +} + interface ShortCircuitAnalysisResult { studyUuid: UUID | null; currentNodeUuid?: UUID; @@ -207,3 +213,31 @@ export function downloadShortCircuitResultZippedCsv( body: JSON.stringify({ headersCsv, enumValueTranslations, language }), }); } + +export function setShortCircuitParameters(studyUuid: UUID, newParams: any) { + console.info('set short circuit parameters'); + const setShortCircuitParametersUrl = getStudyUrl(studyUuid) + '/short-circuit-analysis/parameters'; + console.debug(setShortCircuitParametersUrl); + return backendFetch(setShortCircuitParametersUrl, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: newParams ? JSON.stringify(newParams) : null, + }); +} + +export function getShortCircuitParameters(studyUuid: UUID) { + console.info('get short circuit parameters'); + const getScParams = getStudyUrl(studyUuid) + '/short-circuit-analysis/parameters'; + console.debug(getScParams); + return backendFetchJson(getScParams); +} + +export function getShortCircuitSpecificParametersDescription() { + console.info('get short circuit specific parameters description'); + const getShortCircuitSpecificParametersUrl = getShortCircuitUrl() + 'parameters/specific-parameters'; + console.debug(getShortCircuitSpecificParametersUrl); + return backendFetchJson(getShortCircuitSpecificParametersUrl); +}