Skip to content

Commit 8a61a28

Browse files
authored
Merge branch 'main' into limitsProperties
2 parents 50d17ca + f1dbb9b commit 8a61a28

File tree

72 files changed

+1135
-464
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+1135
-464
lines changed

package-lock.json

Lines changed: 32 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gridstudy-app",
3-
"version": "2.25.0-SNAPSHOT",
3+
"version": "2.26.0-SNAPSHOT",
44
"license": "MPL-2.0",
55
"private": true,
66
"type": "module",
@@ -11,15 +11,15 @@
1111
"dependencies": {
1212
"@emotion/react": "^11.14.0",
1313
"@emotion/styled": "^11.14.1",
14-
"@gridsuite/commons-ui": "0.131.0",
14+
"@gridsuite/commons-ui": "0.132.0",
1515
"@hello-pangea/dnd": "^18.0.1",
1616
"@hookform/resolvers": "^4.1.3",
1717
"@mui/icons-material": "^5.18.0",
1818
"@mui/lab": "5.0.0-alpha.175",
1919
"@mui/material": "^5.18.0",
2020
"@mui/x-charts": "^7.29.1",
2121
"@mui/x-tree-view": "^7.29.1",
22-
"@powsybl/network-viewer": "1.12.0",
22+
"@powsybl/network-viewer": "2.0.0",
2323
"@reduxjs/toolkit": "^2.9.0",
2424
"@svgdotjs/svg.js": "^3.2.4",
2525
"@xyflow/react": "^12.8.4",

src/components/dialogs/import-modification-dialog.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ const ImportModificationDialog: FunctionComponent<ImportModificationDialogProps>
3333
const currentNode = useSelector((state: AppState) => state.currentTreeNode);
3434

3535
const processSelectedElements = (selectedElements: TreeViewFinderNodeProps[]) => {
36-
const copyInfos = {
37-
copyType: NetworkModificationCopyType.INSERT,
38-
};
3936
const modificationUuidList = selectedElements.map((e) => e.id);
4037
// import selected modifications
4138
if (modificationUuidList.length > 0 && studyUuid && currentNode) {
39+
const copyInfos = {
40+
copyType: NetworkModificationCopyType.INSERT,
41+
originStudyUuid: studyUuid,
42+
originNodeUuid: currentNode.id,
43+
};
4244
copyOrMoveModifications(studyUuid, currentNode.id, modificationUuidList, copyInfos).catch((errmsg) => {
4345
snackError({
4446
messageTxt: errmsg,

src/components/dialogs/limits/limits-pane-utils.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,11 @@ export const combineFormAndMapServerLimitsGroups = (
291291
return updatedOpLG;
292292
};
293293

294+
export const getOpLimitsGroupInfosFromBranchModification = (
295+
formBranchModification: LineModificationFormInfos
296+
): OperationalLimitsGroupFormInfos[] => {
297+
return formBranchModification?.limits?.operationalLimitsGroups ?? [];
298+
};
294299
export const addModificationTypeToTemporaryLimits = (
295300
formTemporaryLimits: TemporaryLimitFormInfos[]
296301
): TemporaryLimit[] => {

src/components/dialogs/limits/limits-pane.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,17 @@ export function LimitsPane({
7070
return null;
7171
};
7272

73+
const getCurrentLimitsIgnoreApplicability = (
74+
equipmentToModify: any,
75+
operationalLimitsGroupName: string
76+
): CurrentLimits | null => {
77+
if (equipmentToModify?.currentLimits) {
78+
return equipmentToModify.currentLimits.find(
79+
(currentLimit: CurrentLimits) => currentLimit.id === operationalLimitsGroupName
80+
);
81+
}
82+
return null;
83+
};
7384
/**
7485
* returns an error message id if :
7586
* - there are more than 2 limit sets with the same name
@@ -201,7 +212,11 @@ export function LimitsPane({
201212
clearableFields={clearableFields}
202213
permanentCurrentLimitPreviousValue={
203214
getCurrentLimits(equipmentToModify, operationalLimitsGroup.id)
204-
?.permanentLimit
215+
?.permanentLimit ??
216+
getCurrentLimitsIgnoreApplicability(
217+
equipmentToModify,
218+
operationalLimitsGroup.name
219+
)?.permanentLimit
205220
}
206221
temporaryLimitsPreviousValues={
207222
getCurrentLimits(equipmentToModify, operationalLimitsGroup.id)

src/components/dialogs/network-modifications/limit-sets/limit-sets-modification-dialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export function LimitSetsModificationDialog({
100100
modificationType,
101101
modifications,
102102
modificationUuid: editData?.uuid,
103-
type: ModificationType.LIMIT_SETS_TABULAR_MODIFICATION,
103+
tabularType: ModificationType.LIMIT_SETS_TABULAR_MODIFICATION,
104104
csvFilename: formData[CSV_FILENAME],
105105
}).catch((error) => {
106106
snackError({

src/components/dialogs/network-modifications/line/modification/line-modification-dialog.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import {
6262
getAllLimitsFormData,
6363
getLimitsEmptyFormData,
6464
getLimitsValidationSchema,
65+
getOpLimitsGroupInfosFromBranchModification,
6566
} from '../../../limits/limits-pane-utils';
6667
import {
6768
getCharacteristicsEmptyFormData,
@@ -318,10 +319,9 @@ const LineModificationDialog = ({
318319
...{
319320
[LIMITS]: {
320321
[ENABLE_OLG_MODIFICATION]: formValues.limits[ENABLE_OLG_MODIFICATION],
321-
[OPERATIONAL_LIMITS_GROUPS]: combineFormAndMapServerLimitsGroups(
322-
formValues,
323-
line
324-
),
322+
[OPERATIONAL_LIMITS_GROUPS]: formValues.limits[ENABLE_OLG_MODIFICATION]
323+
? getOpLimitsGroupInfosFromBranchModification(formValues)
324+
: combineFormAndMapServerLimitsGroups(formValues, line),
325325
},
326326
},
327327
[ADDITIONAL_PROPERTIES]: getConcatenatedProperties(line, getValues),

src/components/dialogs/network-modifications/tabular/tabular-common.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,14 @@ import {
3636
import yup from 'components/utils/yup-config';
3737
import type { UUID } from 'node:crypto';
3838

39-
type TabularModificationCommonType = {
39+
export type TabularModificationEditDataType = {
4040
uuid: UUID;
41+
type: ModificationType.TABULAR_MODIFICATION | ModificationType.TABULAR_CREATION;
4142
properties: TabularProperty[];
4243
csvFilename: string;
43-
};
44-
export type TabularModificationModificationType = TabularModificationCommonType & {
45-
type: 'TABULAR_MODIFICATION';
4644
modificationType: ModificationType;
4745
modifications: Modification[];
4846
};
49-
export type TabularModificationCreationType = TabularModificationCommonType & {
50-
type: 'TABULAR_CREATION';
51-
creationType: ModificationType;
52-
creations: Modification[];
53-
};
54-
export type TabularModificationEditDataType = TabularModificationModificationType | TabularModificationCreationType;
5547

5648
export enum TabularModificationType {
5749
CREATION = 'creation',

src/components/dialogs/network-modifications/tabular/tabular-dialog.tsx

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { useOpenShortWaitFetching } from 'components/dialogs/commons/handle-modi
1313
import { FORM_LOADING_DELAY } from 'components/network/constants.js';
1414
import { TABULAR_PROPERTIES, MODIFICATIONS_TABLE, CSV_FILENAME, TYPE } from 'components/utils/field-constants.js';
1515
import { ModificationDialog } from 'components/dialogs/commons/modificationDialog.js';
16-
import { createTabularCreation, createTabularModification } from 'services/study/network-modifications.js';
16+
import { createTabularModification } from 'services/study/network-modifications.js';
1717
import { FetchStatus } from 'services/utils.type';
1818
import {
1919
convertGeneratorOrBatteryModificationFromBackToFront,
@@ -32,9 +32,7 @@ import {
3232
Modification,
3333
tabularFormSchema,
3434
TabularFormType,
35-
TabularModificationCreationType,
3635
TabularModificationEditDataType,
37-
TabularModificationModificationType,
3836
TabularModificationType,
3937
transformProperties,
4038
} from './tabular-common.js';
@@ -51,12 +49,12 @@ import { NetworkModificationDialogProps } from '../../../graph/menus/network-mod
5149
function convertCreations(creations: Modification[]): Modification[] {
5250
return creations.map((creat: Modification) => {
5351
let creation: Modification = {};
54-
Object.keys(formatModification(creat)).forEach((key) => {
52+
for (const key of Object.keys(formatModification(creat))) {
5553
const entry = convertCreationFieldFromBackToFront(key, creat[key]);
56-
(Array.isArray(entry) ? entry : [entry]).forEach((item) => {
54+
for (const item of Array.isArray(entry) ? entry : [entry]) {
5755
creation[item.key] = item.value;
58-
});
59-
});
56+
}
57+
}
6058
creation = addPropertiesFromBack(creation, creat?.[TABULAR_PROPERTIES]);
6159
return creation;
6260
});
@@ -98,7 +96,7 @@ export function TabularDialog({
9896
const disableSave = Object.keys(errors).length > 0;
9997

10098
const initTabularModificationData = useCallback(
101-
(editData: TabularModificationModificationType) => {
99+
(editData: TabularModificationEditDataType) => {
102100
const modificationType = editData.modificationType;
103101
const modifications = editData.modifications.map((modif: Modification) => {
104102
let modification = formatModification(modif);
@@ -108,9 +106,9 @@ export function TabularDialog({
108106
) {
109107
modification = convertGeneratorOrBatteryModificationFromBackToFront(modification);
110108
} else {
111-
Object.keys(modification).forEach((key) => {
109+
for (const key of Object.keys(modification)) {
112110
modification[key] = convertInputValues(getFieldType(modificationType, key), modif[key]);
113-
});
111+
}
114112
}
115113
modification = addPropertiesFromBack(modification, modif?.[TABULAR_PROPERTIES]);
116114
return modification;
@@ -126,9 +124,9 @@ export function TabularDialog({
126124
);
127125

128126
const initTabularCreationData = useCallback(
129-
(editData: TabularModificationCreationType) => {
130-
const equipmentType = getEquipmentTypeFromCreationType(editData?.creationType);
131-
const creations = convertCreations(editData?.creations);
127+
(editData: TabularModificationEditDataType) => {
128+
const equipmentType = getEquipmentTypeFromCreationType(editData?.modificationType);
129+
const creations = convertCreations(editData?.modifications);
132130
reset({
133131
[TYPE]: equipmentType,
134132
[MODIFICATIONS_TABLE]: creations,
@@ -142,9 +140,9 @@ export function TabularDialog({
142140
useEffect(() => {
143141
if (editData) {
144142
if (dialogMode === TabularModificationType.CREATION) {
145-
initTabularCreationData(editData as TabularModificationCreationType);
143+
initTabularCreationData(editData);
146144
} else {
147-
initTabularModificationData(editData as TabularModificationModificationType);
145+
initTabularModificationData(editData);
148146
}
149147
}
150148
}, [editData, dialogMode, initTabularCreationData, initTabularModificationData]);
@@ -162,7 +160,7 @@ export function TabularDialog({
162160
modificationType,
163161
modifications,
164162
modificationUuid: editData?.uuid,
165-
type: ModificationType.TABULAR_MODIFICATION,
163+
tabularType: ModificationType.TABULAR_MODIFICATION,
166164
csvFilename: formData[CSV_FILENAME],
167165
properties: formData[TABULAR_PROPERTIES],
168166
}).catch((error) => {
@@ -177,21 +175,24 @@ export function TabularDialog({
177175

178176
const submitTabularCreation = useCallback(
179177
(formData: TabularFormType) => {
180-
const creationType = TABULAR_CREATION_TYPES[formData[TYPE]];
181-
const creations = formData[MODIFICATIONS_TABLE]?.map((row) => {
178+
const modificationType = TABULAR_CREATION_TYPES[formData[TYPE]];
179+
const modifications = formData[MODIFICATIONS_TABLE]?.map((row) => {
182180
const creation: Modification = {
183-
type: creationType,
181+
type: modificationType,
184182
};
185183
// first transform and clean "property_*" fields
186184
const propertiesModifications = transformProperties(row);
187185

188186
// then transform all other fields
189-
Object.keys(row).forEach((key) => {
187+
for (const key of Object.keys(row)) {
190188
const entry = convertCreationFieldFromFrontToBack(key, row[key]);
191189
creation[entry.key] = entry.value;
192-
});
190+
}
193191
// For now, we do not manage reactive limits by diagram
194-
if (creationType === 'GENERATOR_CREATION' || creationType === 'BATTERY_CREATION') {
192+
if (
193+
modificationType === ModificationType.GENERATOR_CREATION ||
194+
modificationType === ModificationType.BATTERY_CREATION
195+
) {
195196
convertReactiveCapabilityCurvePointsFromFrontToBack(creation);
196197
}
197198

@@ -200,12 +201,13 @@ export function TabularDialog({
200201
}
201202
return creation;
202203
});
203-
createTabularCreation({
204+
createTabularModification({
204205
studyUuid,
205206
nodeUuid: currentNodeUuid,
206-
creationType,
207-
creations,
207+
modificationType,
208+
modifications,
208209
modificationUuid: editData?.uuid,
210+
tabularType: ModificationType.TABULAR_CREATION,
209211
csvFilename: formData[CSV_FILENAME],
210212
properties: formData[TABULAR_PROPERTIES],
211213
}).catch((error) => {

src/components/dialogs/network-modifications/two-windings-transformer/modification/two-windings-transformer-modification-dialog.jsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,12 @@ import {
9191
import {
9292
addModificationTypeToOpLimitsGroups,
9393
addOperationTypeToSelectedOpLG,
94+
combineFormAndMapServerLimitsGroups,
9495
formatOpLimitGroupsToFormInfos,
9596
getAllLimitsFormData,
9697
getLimitsEmptyFormData,
9798
getLimitsValidationSchema,
98-
combineFormAndMapServerLimitsGroups,
99+
getOpLimitsGroupInfosFromBranchModification,
99100
} from '../../../limits/limits-pane-utils';
100101
import { useOpenShortWaitFetching } from 'components/dialogs/commons/handle-modification-form';
101102
import TwoWindingsTransformerModificationDialogHeader from './two-windings-transformer-modification-dialog-header';
@@ -659,10 +660,9 @@ const TwoWindingsTransformerModificationDialog = ({
659660
...{
660661
[LIMITS]: {
661662
[ENABLE_OLG_MODIFICATION]: formValues.limits[ENABLE_OLG_MODIFICATION],
662-
[OPERATIONAL_LIMITS_GROUPS]: combineFormAndMapServerLimitsGroups(
663-
formValues,
664-
twt
665-
),
663+
[OPERATIONAL_LIMITS_GROUPS]: formValues.limits[ENABLE_OLG_MODIFICATION]
664+
? getOpLimitsGroupInfosFromBranchModification(formValues)
665+
: combineFormAndMapServerLimitsGroups(formValues, twt),
666666
},
667667
},
668668
...getRatioTapChangerFormData({

0 commit comments

Comments
 (0)