Skip to content

Commit 91b9aba

Browse files
duplicate permanent limit (#3327)
Signed-off-by: Mathieu DEHARBE <[email protected]>
1 parent 2e46738 commit 91b9aba

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/components/dialogs/limits/limits-groups-contextual-menu.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
*/
77

88
import {
9+
APPLICABIlITY,
10+
CURRENT_LIMITS,
911
ID,
12+
NAME,
1013
OPERATIONAL_LIMITS_GROUPS,
14+
PERMANENT_LIMIT,
1115
SELECTED_LIMITS_GROUP_1,
1216
SELECTED_LIMITS_GROUP_2,
1317
} from '../../utils/field-constants';
@@ -21,6 +25,7 @@ import { useIntl } from 'react-intl';
2125
import { PopoverProps } from '@mui/material/Popover';
2226
import { APPLICABILITY } from '../../network/constants';
2327
import { OperationalLimitsGroupFormInfos } from '../network-modifications/line/modification/line-modification-type';
28+
import { CurrentLimits } from '../../../services/network-modification-types';
2429

2530
export interface LimitsGroupsContextualMenuProps {
2631
parentFormName: string;
@@ -33,6 +38,7 @@ export interface LimitsGroupsContextualMenuProps {
3338
selectedLimitsGroups1: string;
3439
selectedLimitsGroups2: string;
3540
isModification: boolean;
41+
currentLimitsToModify: CurrentLimits[];
3642
}
3743

3844
export function LimitsGroupsContextualMenu({
@@ -46,6 +52,7 @@ export function LimitsGroupsContextualMenu({
4652
selectedLimitsGroups1,
4753
selectedLimitsGroups2,
4854
isModification,
55+
currentLimitsToModify,
4956
}: Readonly<LimitsGroupsContextualMenuProps>) {
5057
const intl = useIntl();
5158
const operationalLimitsGroupsFormName: string = `${parentFormName}.${OPERATIONAL_LIMITS_GROUPS}`;
@@ -89,6 +96,15 @@ export function LimitsGroupsContextualMenu({
8996
...duplicatedLimits1,
9097
[ID]: newName,
9198
};
99+
// if the permanent limit is undefined in the form we try to get the previous value of the corresponding current limit
100+
if (!newLimitsGroup1[CURRENT_LIMITS][PERMANENT_LIMIT]) {
101+
newLimitsGroup1[CURRENT_LIMITS][PERMANENT_LIMIT] =
102+
currentLimitsToModify.find(
103+
(cl: CurrentLimits) =>
104+
cl.id === duplicatedLimits1[NAME] && cl.applicability === duplicatedLimits1[APPLICABIlITY]
105+
)?.permanentLimit ?? null;
106+
}
107+
92108
appendToLimitsGroups(newLimitsGroup1);
93109
setIndexSelectedLimitSet(getValues(`${operationalLimitsGroupsFormName}`).length - 1);
94110
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@ import { styles } from '../dialog-utils';
2727
import AddIcon from '@mui/icons-material/ControlPoint';
2828
import { APPLICABILITY } from '../../network/constants';
2929
import { OperationalLimitsGroupFormInfos } from '../network-modifications/line/modification/line-modification-type';
30+
import { BranchInfos } from '../../../services/study/network-map.type';
3031

3132
export interface LimitsPaneProps {
3233
id?: string;
3334
currentNode?: CurrentTreeNode;
34-
equipmentToModify?: any;
35+
equipmentToModify?: BranchInfos | null;
3536
clearableFields?: boolean;
3637
}
3738

@@ -148,6 +149,7 @@ export function LimitsPane({
148149
setIndexSelectedLimitSet={setIndexSelectedLimitSet}
149150
checkLimitSetUnicity={checkLimitSetUnicity}
150151
isAModification={!!equipmentToModify}
152+
currentLimitsToModify={equipmentToModify?.currentLimits ?? []}
151153
/>
152154
</Grid>
153155
<Grid item xs={6} sx={tabStyles.parametersBox} marginLeft={2}>

src/components/dialogs/limits/operational-limits-groups-tabs.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import {
2323
TEMPORARY_LIMITS,
2424
} from '../../utils/field-constants';
2525
import { useFormContext, useWatch } from 'react-hook-form';
26-
import { OperationalLimitsGroup } from '../../../services/network-modification-types';
26+
import { CurrentLimits, OperationalLimitsGroup } from '../../../services/network-modification-types';
2727
import MenuIcon from '@mui/icons-material/Menu';
2828
import { LimitsGroupsContextualMenu } from './limits-groups-contextual-menu';
2929
import { isBlankOrEmpty } from '../../utils/validation-functions';
@@ -61,6 +61,7 @@ export interface OperationalLimitsGroupsTabsProps {
6161
setIndexSelectedLimitSet: React.Dispatch<React.SetStateAction<number | null>>;
6262
checkLimitSetUnicity: (editedLimitGroupName: string, newSelectedApplicability: string) => string;
6363
isAModification: boolean;
64+
currentLimitsToModify: CurrentLimits[];
6465
}
6566

6667
function generateUniqueId(baseName: string, names: string[]): string {
@@ -89,6 +90,7 @@ export const OperationalLimitsGroupsTabs = forwardRef<any, OperationalLimitsGrou
8990
indexSelectedLimitSet,
9091
checkLimitSetUnicity,
9192
isAModification,
93+
currentLimitsToModify,
9294
},
9395
ref
9496
) => {
@@ -364,6 +366,7 @@ export const OperationalLimitsGroupsTabs = forwardRef<any, OperationalLimitsGrou
364366
selectedLimitsGroups1={selectedLimitsGroups1}
365367
selectedLimitsGroups2={selectedLimitsGroups2}
366368
isModification={isAModification}
369+
currentLimitsToModify={currentLimitsToModify}
367370
/>
368371
</>
369372
);

0 commit comments

Comments
 (0)