Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
26 changes: 22 additions & 4 deletions src/components/network/selection-creation-panel/use-save-map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
* 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 { Equipment, snackWithFallback, useSnackMessage } from '@gridsuite/commons-ui';
import { useCallback, useState } from 'react';
import { Equipment, fetchAppsMetadata, snackWithFallback, useSnackMessage } from '@gridsuite/commons-ui';
import { useCallback, useEffect, useState } from 'react';
import { useIntl } from 'react-intl';
import { useSelector } from 'react-redux';
import { AppState } from 'redux/reducer.type';
Expand All @@ -30,6 +30,14 @@
const currentRootNetworkUuid = useSelector((state: AppState) => state.currentRootNetworkUuid);
const { snackInfo, snackError, snackWarning } = useSnackMessage();
const [pendingState, setPendingState] = useState(false);
const [busbarIdAsContingencyName, setBusbarIdAsContingencyName] = useState(false);

useEffect(() => {
fetchAppsMetadata().then((res) => {
const metadata = res.find((item) => item.name === 'Study');
setBusbarIdAsContingencyName(!!metadata?.useBusbarIdAsContingencyNameForPolygonCreation);

Check failure on line 38 in src/components/network/selection-creation-panel/use-save-map.ts

View workflow job for this annotation

GitHub Actions / build / build

Property 'useBusbarIdAsContingencyNameForPolygonCreation' does not exist on type 'Metadata'.
});
}, []);

const onSaveSelection = useCallback(
async (
Expand Down Expand Up @@ -83,7 +91,8 @@
currentNodeUuid,
currentRootNetworkUuid,
equipments,
nominalVoltages
nominalVoltages,
busbarIdAsContingencyName
);
snackInfo({
messageTxt: intl.formatMessage({
Expand All @@ -107,7 +116,16 @@
}
return true; // success
},
[currentNodeUuid, currentRootNetworkUuid, intl, snackError, snackInfo, snackWarning, studyUuid]
[
busbarIdAsContingencyName,
currentNodeUuid,
currentRootNetworkUuid,
intl,
snackError,
snackInfo,
snackWarning,
studyUuid,
]
);

return { pendingState, onSaveSelection };
Expand Down
12 changes: 8 additions & 4 deletions src/services/study/contingency-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ export interface ContingencyList {
type: string;
}

function createIdentifiersList(selectedEquipments: EquipmentInfos[]) {
function createIdentifiersList(selectedEquipments: EquipmentInfos[], equipmentIdAsContingencyName: boolean) {
const identifierLists = selectedEquipments.map((eq) => {
return {
type: 'LIST',
contingencyId: eq.name ? eq.name : eq.id,
contingencyId: equipmentIdAsContingencyName ? eq.id : (eq.name ?? eq.id),
identifierList: [
{
type: 'ID_BASED',
Expand All @@ -41,8 +41,12 @@ function createIdentifiersList(selectedEquipments: EquipmentInfos[]) {
return identifierLists;
}

export function createIdentifierContingencyList(contingencyListName: string, equipmentList: EquipmentInfos[]) {
const identifiersList = createIdentifiersList(equipmentList);
export function createIdentifierContingencyList(
contingencyListName: string,
equipmentList: EquipmentInfos[],
equipmentIdAsContingencyName: boolean
) {
const identifiersList = createIdentifiersList(equipmentList, equipmentIdAsContingencyName);
return {
identifierContingencyList: {
type: 'identifier',
Expand Down
31 changes: 16 additions & 15 deletions src/services/study/network-map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -249,13 +249,22 @@ export async function createMapContingencyList(
currentNodeUuid: UUID,
currentRootNetworkUuid: UUID,
selectedEquipments: EquipmentInfos[],
nominalVoltages: number[]
nominalVoltages: number[],
busbarIdAsContingencyName: boolean
) {
let equipmentContingencyList: ContingencyList;
// should be in the switch, but TS and eslint do not like fallthrough
let equipmentIdAsContingencyName =
equipmentType === EquipmentType.BUSBAR_SECTION ? busbarIdAsContingencyName : false;

switch (equipmentType) {
case EquipmentType.SUBSTATION:
case EquipmentType.LINE:
equipmentContingencyList = createIdentifierContingencyList(elementName, selectedEquipments);
equipmentContingencyList = createIdentifierContingencyList(
elementName,
selectedEquipments,
equipmentIdAsContingencyName
);

break;

Expand All @@ -279,7 +288,11 @@ export async function createMapContingencyList(
if (elementsIds?.length === 0) {
throw new Error('EmptySelection');
}
equipmentContingencyList = createIdentifierContingencyList(elementName, elementsIds);
equipmentContingencyList = createIdentifierContingencyList(
elementName,
elementsIds,
equipmentIdAsContingencyName
);
break;
}
if (
Expand All @@ -291,15 +304,3 @@ export async function createMapContingencyList(

return createContingencyList(equipmentContingencyList, elementName, '', destinationDirectoryId);
}

export function fetchAllNominalVoltages(studyUuid: UUID, currentNodeUuid: UUID, currentRootNetworkUuid: UUID) {
console.info(
`Fetching all nominal voltages of study '${studyUuid}', node '${currentNodeUuid}' and root network '${currentRootNetworkUuid}' ...`
);

const fetchNominalVoltagesUrl =
getStudyUrlWithNodeUuidAndRootNetworkUuid(studyUuid, currentNodeUuid, currentRootNetworkUuid) +
'/network-map/nominal-voltages?inUpstreamBuiltParentNode=true';
console.debug(fetchNominalVoltagesUrl);
return backendFetchJson(fetchNominalVoltagesUrl);
}
Loading