@gridsuite/commons-ui 0.181.0 → 0.183.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/components/index.js +28 -1
  2. package/dist/components/inputs/index.js +4 -0
  3. package/dist/components/inputs/reactHookForm/index.d.ts +1 -0
  4. package/dist/components/inputs/reactHookForm/index.js +4 -0
  5. package/dist/components/inputs/reactHookForm/readOnly/ButtonReadOnlyInput.d.ts +7 -0
  6. package/dist/components/inputs/reactHookForm/readOnly/ButtonReadOnlyInput.js +50 -0
  7. package/dist/components/inputs/reactHookForm/readOnly/ReadOnlyInput.d.ts +12 -0
  8. package/dist/components/inputs/reactHookForm/readOnly/ReadOnlyInput.js +35 -0
  9. package/dist/components/inputs/reactHookForm/readOnly/index.d.ts +8 -0
  10. package/dist/components/inputs/reactHookForm/readOnly/index.js +6 -0
  11. package/dist/components/network-modifications/common/connectivity/connectivityForm.utils.js +2 -1
  12. package/dist/components/network-modifications/common/measurements/powerWithValidity.utils.js +2 -1
  13. package/dist/components/network-modifications/common/setpoints/setPoints.utils.js +3 -2
  14. package/dist/components/network-modifications/equipmentDeletion/EquipmentDeletionForm.d.ts +9 -0
  15. package/dist/components/network-modifications/equipmentDeletion/EquipmentDeletionForm.js +173 -0
  16. package/dist/components/network-modifications/equipmentDeletion/equipmentDeletion.types.d.ts +17 -0
  17. package/dist/components/network-modifications/equipmentDeletion/equipmentDeletion.types.js +1 -0
  18. package/dist/components/network-modifications/equipmentDeletion/equipmentDeletion.utils.d.ts +33 -0
  19. package/dist/components/network-modifications/equipmentDeletion/equipmentDeletion.utils.js +78 -0
  20. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/HvdcLccDeletionSpecificForm.d.ts +7 -0
  21. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/HvdcLccDeletionSpecificForm.js +43 -0
  22. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/ShuntCompensatorSelectionForm.d.ts +13 -0
  23. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/ShuntCompensatorSelectionForm.js +58 -0
  24. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/hvdcLccDeletion.utils.d.ts +21 -0
  25. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/hvdcLccDeletion.utils.js +22 -0
  26. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/index.d.ts +10 -0
  27. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/index.js +10 -0
  28. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/useHvdcLccDeletion.d.ts +8 -0
  29. package/dist/components/network-modifications/equipmentDeletion/hvdcLccDeletion/useHvdcLccDeletion.js +85 -0
  30. package/dist/components/network-modifications/equipmentDeletion/index.d.ts +10 -0
  31. package/dist/components/network-modifications/equipmentDeletion/index.js +18 -0
  32. package/dist/components/network-modifications/index.d.ts +1 -0
  33. package/dist/components/network-modifications/index.js +24 -1
  34. package/dist/components/network-modifications/load/creation/loadCreation.utils.js +3 -3
  35. package/dist/components/network-modifications/voltage-level/creation/voltageLevelCreation.utils.js +8 -8
  36. package/dist/components/network-modifications/voltage-level/index.d.ts +1 -0
  37. package/dist/components/network-modifications/voltage-level/index.js +8 -1
  38. package/dist/components/network-modifications/voltage-level/modification/VoltageLevelModificationForm.d.ts +5 -0
  39. package/dist/components/network-modifications/voltage-level/modification/VoltageLevelModificationForm.js +159 -0
  40. package/dist/components/network-modifications/voltage-level/modification/index.d.ts +9 -0
  41. package/dist/components/network-modifications/voltage-level/modification/index.js +9 -0
  42. package/dist/components/network-modifications/voltage-level/modification/voltageLevelModification.types.d.ts +35 -0
  43. package/dist/components/network-modifications/voltage-level/modification/voltageLevelModification.types.js +1 -0
  44. package/dist/components/network-modifications/voltage-level/modification/voltageLevelModification.utils.d.ts +36 -0
  45. package/dist/components/network-modifications/voltage-level/modification/voltageLevelModification.utils.js +75 -0
  46. package/dist/components/parameters/common/contingency-table/contingency-table.js +4 -1
  47. package/dist/components/parameters/loadflow/use-load-flow-parameters-form.js +11 -10
  48. package/dist/components/parameters/security-analysis/columns-definitions.js +1 -1
  49. package/dist/hooks/index.d.ts +1 -0
  50. package/dist/hooks/index.js +2 -0
  51. package/dist/hooks/useGetLabelEquipmentTypes.d.ts +2 -0
  52. package/dist/hooks/useGetLabelEquipmentTypes.js +20 -0
  53. package/dist/hooks/useModificationLabelComputer.js +2 -0
  54. package/dist/index.js +39 -2
  55. package/dist/translations/en/equipmentTypesEn.d.ts +30 -0
  56. package/dist/translations/en/equipmentTypesEn.js +27 -0
  57. package/dist/translations/en/index.d.ts +1 -0
  58. package/dist/translations/en/index.js +2 -0
  59. package/dist/translations/en/networkModificationsEn.d.ts +9 -0
  60. package/dist/translations/en/networkModificationsEn.js +12 -3
  61. package/dist/translations/fr/equipmentTypesFr.d.ts +30 -0
  62. package/dist/translations/fr/equipmentTypesFr.js +27 -0
  63. package/dist/translations/fr/index.d.ts +1 -0
  64. package/dist/translations/fr/index.js +2 -0
  65. package/dist/translations/fr/networkModificationsFr.d.ts +9 -0
  66. package/dist/translations/fr/networkModificationsFr.js +14 -5
  67. package/dist/utils/constants/fieldConstants.d.ts +7 -0
  68. package/dist/utils/constants/fieldConstants.js +7 -0
  69. package/dist/utils/constants/index.js +2 -1
  70. package/dist/utils/constants/translationKeys.d.ts +1 -0
  71. package/dist/utils/constants/translationKeys.js +2 -0
  72. package/dist/utils/index.js +6 -2
  73. package/dist/utils/ts-utils.d.ts +3 -0
  74. package/dist/utils/ts-utils.js +10 -0
  75. package/package.json +1 -1
@@ -0,0 +1,159 @@
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { TextField, Grid } from "@mui/material";
3
+ import { useWatch } from "react-hook-form";
4
+ import GridItem from "../../../grid/grid-item.js";
5
+ import GridSection from "../../../grid/grid-section.js";
6
+ import "react-intl";
7
+ import "../../../overflowableText/OverflowableText.js";
8
+ import { VoltageAdornment, KiloAmpereAdornment } from "../../../../utils/constants/adornments.js";
9
+ import { FieldConstants } from "../../../../utils/constants/fieldConstants.js";
10
+ import "../../../../utils/conversionUtils.js";
11
+ import "../../../../utils/types/equipmentType.js";
12
+ import "@mui/icons-material";
13
+ import "../../../../utils/yupConfig.js";
14
+ import "react";
15
+ import "localized-countries";
16
+ import "localized-countries/data/fr";
17
+ import "localized-countries/data/en";
18
+ import "notistack";
19
+ import "../../../inputs/reactHookForm/provider/CustomFormProvider.js";
20
+ import "yup";
21
+ import "../../../treeViewFinder/TreeViewFinder.js";
22
+ import "../../../inputs/reactHookForm/agGridTable/BottomRightButtons.js";
23
+ import "../../../customAGGrid/customAggrid.js";
24
+ import "ag-grid-community";
25
+ import "react-papaparse";
26
+ import "react-csv-downloader";
27
+ import { AutocompleteInput } from "../../../inputs/reactHookForm/autocompleteInputs/AutocompleteInput.js";
28
+ import { FloatInput } from "../../../inputs/reactHookForm/numbers/FloatInput.js";
29
+ import { TextInput } from "../../../inputs/reactHookForm/text/TextInput.js";
30
+ import "../../../inputs/reactHookForm/numbers/RangeInput.js";
31
+ import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
32
+ import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
33
+ import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
34
+ import "@material-symbols/svg-400/outlined/add_notes.svg?react";
35
+ import "../../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
36
+ import "@react-querybuilder/material";
37
+ import "../../../filter/expert/expertFilterConstants.js";
38
+ import "../../../inputs/reactQueryBuilder/CustomReactQueryBuilder.js";
39
+ import "uuid";
40
+ import "../../../inputs/reactQueryBuilder/PropertyValueEditor.js";
41
+ import "react-querybuilder";
42
+ import { PropertiesForm } from "../../common/properties/PropertiesForm.js";
43
+ import { filledTextField } from "../../common/form.utils.js";
44
+ import "../../common/properties/propertyUtils.js";
45
+ function VoltageLevelModificationForm({ voltageLevelToModify }) {
46
+ const equipmentId = useWatch({ name: FieldConstants.EQUIPMENT_ID });
47
+ const watchHideSubstationField = useWatch({ name: FieldConstants.HIDE_SUBSTATION_FIELD, defaultValue: true });
48
+ const voltageLevelIdField = /* @__PURE__ */ jsx(
49
+ TextField,
50
+ {
51
+ size: "small",
52
+ fullWidth: true,
53
+ label: "ID",
54
+ value: equipmentId ?? "",
55
+ InputProps: {
56
+ readOnly: true
57
+ },
58
+ disabled: true,
59
+ ...filledTextField
60
+ }
61
+ );
62
+ const voltageLevelNameField = /* @__PURE__ */ jsx(
63
+ TextInput,
64
+ {
65
+ name: FieldConstants.EQUIPMENT_NAME,
66
+ label: "Name",
67
+ formProps: filledTextField,
68
+ clearable: true,
69
+ previousValue: voltageLevelToModify?.name ?? void 0
70
+ }
71
+ );
72
+ const substationField = /* @__PURE__ */ jsx(
73
+ AutocompleteInput,
74
+ {
75
+ allowNewValue: true,
76
+ forcePopupIcon: true,
77
+ name: FieldConstants.SUBSTATION_ID,
78
+ label: "SUBSTATION",
79
+ options: [voltageLevelToModify?.substationId ?? ""],
80
+ inputTransform: (value) => value === null ? "" : value,
81
+ outputTransform: (value) => value,
82
+ size: "small",
83
+ formProps: filledTextField,
84
+ disabled: true
85
+ }
86
+ );
87
+ const nominalVoltageField = /* @__PURE__ */ jsx(
88
+ FloatInput,
89
+ {
90
+ name: FieldConstants.NOMINAL_V,
91
+ label: "NominalVoltage",
92
+ adornment: VoltageAdornment,
93
+ clearable: true,
94
+ previousValue: voltageLevelToModify?.nominalV
95
+ }
96
+ );
97
+ const lowVoltageLimitField = /* @__PURE__ */ jsx(
98
+ FloatInput,
99
+ {
100
+ name: FieldConstants.LOW_VOLTAGE_LIMIT,
101
+ label: "LowVoltageLimit",
102
+ adornment: VoltageAdornment,
103
+ clearable: true,
104
+ previousValue: voltageLevelToModify?.lowVoltageLimit ?? void 0
105
+ }
106
+ );
107
+ const highVoltageLimitField = /* @__PURE__ */ jsx(
108
+ FloatInput,
109
+ {
110
+ name: FieldConstants.HIGH_VOLTAGE_LIMIT,
111
+ label: "HighVoltageLimit",
112
+ adornment: VoltageAdornment,
113
+ clearable: true,
114
+ previousValue: voltageLevelToModify?.highVoltageLimit ?? void 0
115
+ }
116
+ );
117
+ const lowShortCircuitCurrentLimitField = /* @__PURE__ */ jsx(
118
+ FloatInput,
119
+ {
120
+ name: FieldConstants.LOW_SHORT_CIRCUIT_CURRENT_LIMIT,
121
+ label: "LowShortCircuitCurrentLimit",
122
+ adornment: KiloAmpereAdornment,
123
+ clearable: true,
124
+ previousValue: voltageLevelToModify?.identifiableShortCircuit?.ipMin ?? void 0
125
+ }
126
+ );
127
+ const highShortCircuitCurrentLimitField = /* @__PURE__ */ jsx(
128
+ FloatInput,
129
+ {
130
+ name: FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT,
131
+ label: "HighShortCircuitCurrentLimit",
132
+ adornment: KiloAmpereAdornment,
133
+ clearable: true,
134
+ previousValue: voltageLevelToModify?.identifiableShortCircuit?.ipMax ?? void 0
135
+ }
136
+ );
137
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
138
+ /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, children: [
139
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: voltageLevelIdField }),
140
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: voltageLevelNameField }),
141
+ !watchHideSubstationField && /* @__PURE__ */ jsx(GridItem, { size: 4, children: substationField })
142
+ ] }),
143
+ /* @__PURE__ */ jsx(GridSection, { title: "VoltageText" }),
144
+ /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, children: [
145
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: nominalVoltageField }),
146
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: lowVoltageLimitField }),
147
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: highVoltageLimitField })
148
+ ] }),
149
+ /* @__PURE__ */ jsx(GridSection, { title: "ShortCircuit" }),
150
+ /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, children: [
151
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: lowShortCircuitCurrentLimitField }),
152
+ /* @__PURE__ */ jsx(GridItem, { size: 4, children: highShortCircuitCurrentLimitField })
153
+ ] }),
154
+ /* @__PURE__ */ jsx(PropertiesForm, { networkElementType: "voltageLevel", isModification: true })
155
+ ] });
156
+ }
157
+ export {
158
+ VoltageLevelModificationForm
159
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) 2026, RTE (http://www.rte-france.com)
3
+ * This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
+ */
7
+ export * from './VoltageLevelModificationForm';
8
+ export * from './voltageLevelModification.types';
9
+ export * from './voltageLevelModification.utils';
@@ -0,0 +1,9 @@
1
+ import { VoltageLevelModificationForm } from "./VoltageLevelModificationForm.js";
2
+ import { voltageLevelModificationDtoToForm, voltageLevelModificationEmptyFormData, voltageLevelModificationFormSchema, voltageLevelModificationFormToDto } from "./voltageLevelModification.utils.js";
3
+ export {
4
+ VoltageLevelModificationForm,
5
+ voltageLevelModificationDtoToForm,
6
+ voltageLevelModificationEmptyFormData,
7
+ voltageLevelModificationFormSchema,
8
+ voltageLevelModificationFormToDto
9
+ };
@@ -0,0 +1,35 @@
1
+ import { UUID } from 'node:crypto';
2
+ import { AttributeModification, ModificationType } from '../../../../utils';
3
+ import { Property } from '../../common';
4
+ import { SwitchKind } from '../creation/voltageLevelCreation.types';
5
+ export interface IdentifiableShortCircuitDto {
6
+ ipMin: number | null;
7
+ ipMax: number | null;
8
+ }
9
+ export interface VoltageLevelDto {
10
+ id: string;
11
+ name: string | null;
12
+ topologyKind: string | null;
13
+ substationId: string | null;
14
+ nominalV: number;
15
+ lowVoltageLimit: number | null;
16
+ highVoltageLimit: number | null;
17
+ busbarCount: number | null;
18
+ sectionCount: number | null;
19
+ switchKinds: SwitchKind[] | null;
20
+ isSymmetrical: boolean | null;
21
+ identifiableShortCircuit: IdentifiableShortCircuitDto | null;
22
+ properties: Record<string, string> | null;
23
+ }
24
+ export interface VoltageLevelModificationDto {
25
+ uuid?: UUID;
26
+ equipmentId: string;
27
+ equipmentName?: AttributeModification<string> | null;
28
+ nominalV?: AttributeModification<number> | null;
29
+ lowVoltageLimit?: AttributeModification<number> | null;
30
+ highVoltageLimit?: AttributeModification<number> | null;
31
+ ipMin?: AttributeModification<number> | null;
32
+ ipMax?: AttributeModification<number> | null;
33
+ properties?: Property[] | null;
34
+ type?: ModificationType;
35
+ }
@@ -0,0 +1,36 @@
1
+ import { InferType } from 'yup';
2
+ import { VoltageLevelModificationDto } from './voltageLevelModification.types';
3
+ export declare const voltageLevelModificationFormSchema: import('yup').ObjectSchema<{
4
+ equipmentID: string;
5
+ equipmentName: string | null | undefined;
6
+ hideSubstationField: NonNullable<boolean | undefined>;
7
+ substationId: string | null | undefined;
8
+ nominalV: number | null | undefined;
9
+ lowVoltageLimit: number | null | undefined;
10
+ highVoltageLimit: number | null | undefined;
11
+ lowShortCircuitCurrentLimit: number | null | undefined;
12
+ highShortCircuitCurrentLimit: number | null | undefined;
13
+ } & {
14
+ AdditionalProperties: {
15
+ previousValue?: string | null | undefined;
16
+ value?: string | null | undefined;
17
+ added: NonNullable<boolean | undefined>;
18
+ deletionMark: NonNullable<boolean | undefined>;
19
+ name: string;
20
+ }[] | undefined;
21
+ }, import('yup').AnyObject, {
22
+ equipmentID: undefined;
23
+ equipmentName: undefined;
24
+ hideSubstationField: undefined;
25
+ substationId: undefined;
26
+ nominalV: undefined;
27
+ lowVoltageLimit: undefined;
28
+ highVoltageLimit: undefined;
29
+ lowShortCircuitCurrentLimit: undefined;
30
+ highShortCircuitCurrentLimit: undefined;
31
+ AdditionalProperties: "";
32
+ }, "">;
33
+ export type VoltageLevelModificationFormData = InferType<typeof voltageLevelModificationFormSchema>;
34
+ export declare const voltageLevelModificationEmptyFormData: VoltageLevelModificationFormData;
35
+ export declare const voltageLevelModificationFormToDto: (formData: VoltageLevelModificationFormData) => VoltageLevelModificationDto;
36
+ export declare const voltageLevelModificationDtoToForm: (voltageLevelDto: VoltageLevelModificationDto, includePreviousValues?: boolean) => VoltageLevelModificationFormData;
@@ -0,0 +1,75 @@
1
+ import { object, number, string, boolean, ref } from "yup";
2
+ import { modificationPropertiesSchema, toModificationProperties, getPropertiesFromModification } from "../../common/properties/propertyUtils.js";
3
+ import { toModificationOperation, convertInputValue, convertOutputValue } from "../../../../utils/conversionUtils.js";
4
+ import { FieldConstants } from "../../../../utils/constants/fieldConstants.js";
5
+ import { YUP_NOT_TYPE_NUMBER, YUP_REQUIRED } from "../../../../utils/constants/translationKeys.js";
6
+ import "../../../../utils/types/equipmentType.js";
7
+ import { ModificationType } from "../../../../utils/types/modificationType.js";
8
+ import { FieldType } from "../../../../utils/types/fieldType.js";
9
+ import "react/jsx-runtime";
10
+ import "@mui/icons-material";
11
+ import { sanitizeString } from "../../../../utils/ts-utils.js";
12
+ import "../../../../utils/yupConfig.js";
13
+ const voltageLevelModificationFormSchema = object().shape({
14
+ [FieldConstants.EQUIPMENT_ID]: string().required(YUP_REQUIRED),
15
+ [FieldConstants.EQUIPMENT_NAME]: string().nullable(),
16
+ [FieldConstants.HIDE_SUBSTATION_FIELD]: boolean().required(YUP_REQUIRED),
17
+ [FieldConstants.SUBSTATION_ID]: string().nullable(),
18
+ [FieldConstants.NOMINAL_V]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable().min(0, "mustBeGreaterOrEqualToZero"),
19
+ [FieldConstants.LOW_VOLTAGE_LIMIT]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable().min(0, "mustBeGreaterOrEqualToZero").when([FieldConstants.HIGH_VOLTAGE_LIMIT], {
20
+ is: (highVoltageLimit) => highVoltageLimit != null,
21
+ then: (schema) => schema.max(ref(FieldConstants.HIGH_VOLTAGE_LIMIT), "voltageLevelNominalVoltageMaxValueError")
22
+ }),
23
+ [FieldConstants.HIGH_VOLTAGE_LIMIT]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable().min(0, "mustBeGreaterOrEqualToZero"),
24
+ [FieldConstants.LOW_SHORT_CIRCUIT_CURRENT_LIMIT]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable().min(0, "ShortCircuitCurrentLimitMustBeGreaterOrEqualToZero").when([FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT], {
25
+ is: (highShortCircuitCurrentLimit) => highShortCircuitCurrentLimit != null,
26
+ then: (schema) => schema.max(
27
+ ref(FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT),
28
+ "ShortCircuitCurrentLimitMinMaxError"
29
+ )
30
+ }),
31
+ [FieldConstants.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT]: number().typeError(YUP_NOT_TYPE_NUMBER).nullable().min(0, "ShortCircuitCurrentLimitMustBeGreaterOrEqualToZero")
32
+ }).concat(modificationPropertiesSchema);
33
+ const voltageLevelModificationEmptyFormData = {
34
+ equipmentID: "",
35
+ equipmentName: "",
36
+ hideSubstationField: true,
37
+ nominalV: null,
38
+ lowVoltageLimit: null,
39
+ highVoltageLimit: null,
40
+ lowShortCircuitCurrentLimit: null,
41
+ highShortCircuitCurrentLimit: null,
42
+ AdditionalProperties: []
43
+ };
44
+ const voltageLevelModificationFormToDto = (formData) => ({
45
+ type: ModificationType.VOLTAGE_LEVEL_MODIFICATION,
46
+ equipmentId: formData.equipmentID,
47
+ equipmentName: toModificationOperation(sanitizeString(formData.equipmentName)),
48
+ nominalV: toModificationOperation(formData.nominalV ?? null),
49
+ lowVoltageLimit: toModificationOperation(formData.lowVoltageLimit ?? null),
50
+ highVoltageLimit: toModificationOperation(formData.highVoltageLimit ?? null),
51
+ ipMin: toModificationOperation(
52
+ convertOutputValue(FieldType.LOW_SHORT_CIRCUIT_CURRENT_LIMIT, formData.lowShortCircuitCurrentLimit)
53
+ ),
54
+ ipMax: toModificationOperation(
55
+ convertOutputValue(FieldType.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT, formData.highShortCircuitCurrentLimit)
56
+ ),
57
+ properties: toModificationProperties(formData)
58
+ });
59
+ const voltageLevelModificationDtoToForm = (voltageLevelDto, includePreviousValues = true) => ({
60
+ equipmentID: voltageLevelDto.equipmentId,
61
+ equipmentName: voltageLevelDto.equipmentName?.value ?? "",
62
+ hideSubstationField: true,
63
+ nominalV: voltageLevelDto.nominalV?.value ?? null,
64
+ lowVoltageLimit: voltageLevelDto.lowVoltageLimit?.value ?? null,
65
+ highVoltageLimit: voltageLevelDto.highVoltageLimit?.value ?? null,
66
+ lowShortCircuitCurrentLimit: convertInputValue(FieldType.LOW_SHORT_CIRCUIT_CURRENT_LIMIT, voltageLevelDto.ipMin?.value) ?? null,
67
+ highShortCircuitCurrentLimit: convertInputValue(FieldType.HIGH_SHORT_CIRCUIT_CURRENT_LIMIT, voltageLevelDto.ipMax?.value) ?? null,
68
+ ...getPropertiesFromModification(voltageLevelDto.properties, includePreviousValues)
69
+ });
70
+ export {
71
+ voltageLevelModificationDtoToForm,
72
+ voltageLevelModificationEmptyFormData,
73
+ voltageLevelModificationFormSchema,
74
+ voltageLevelModificationFormToDto
75
+ };
@@ -39,7 +39,10 @@ function ContingencyTable({
39
39
  );
40
40
  useEffect(() => {
41
41
  if (showContingencyCount) {
42
- if (!contingencyListsInfos || contingencyListsInfos.length === 0) {
42
+ const hasNoContingencies = !contingencyListsInfos || (contingencyListsInfos.length ?? 0) === 0 || contingencyListsInfos.every(
43
+ (contingencyList) => (contingencyList[CONTINGENCY_LISTS]?.length ?? 0) === 0
44
+ );
45
+ if (hasNoContingencies) {
43
46
  setSimulatedContingencyCount(null);
44
47
  return;
45
48
  }
@@ -203,6 +203,13 @@ const useLoadFlowParametersForm = (parametersBackend, isDeveloperMode, parameter
203
203
  [parametersUuid, formatNewParams, snackError]
204
204
  );
205
205
  const resetForm = useEffectEvent((_params) => {
206
+ previousWatchProviderRef.current = _params.provider;
207
+ setSpecificParametersDescriptionForProvider(specificParamsDescription?.[_params.provider] ?? []);
208
+ if (_params.provider === PARAM_PROVIDER_OPENLOADFLOW) {
209
+ setLimitReductionNumber(_params.limitReductions?.at(0)?.temporaryLimitReductions?.length ?? 0);
210
+ } else {
211
+ setLimitReductionNumber(0);
212
+ }
206
213
  reset(toLoadFlowFormValues(_params));
207
214
  });
208
215
  useEffect(() => {
@@ -215,21 +222,15 @@ const useLoadFlowParametersForm = (parametersBackend, isDeveloperMode, parameter
215
222
  if (!watchProvider || watchProvider === previousWatchProviderRef.current) {
216
223
  return;
217
224
  }
218
- if (previousWatchProviderRef.current) {
219
- setSpecificParameters(watchProvider, specificParamsDescription, formMethods);
220
- setLimitReductions(watchProvider, defaultLimitReductions, formMethods);
221
- }
225
+ setSpecificParameters(watchProvider, specificParamsDescription, formMethods);
226
+ setLimitReductions(watchProvider, defaultLimitReductions, formMethods);
222
227
  if (watchProvider === PARAM_PROVIDER_OPENLOADFLOW) {
223
- if (previousWatchProviderRef.current) {
224
- setLimitReductionNumber(defaultLimitReductions?.at(0)?.temporaryLimitReductions?.length ?? 0);
225
- } else {
226
- setLimitReductionNumber(params?.limitReductions?.at(0)?.temporaryLimitReductions?.length ?? 0);
227
- }
228
+ setLimitReductionNumber(defaultLimitReductions?.at(0)?.temporaryLimitReductions?.length ?? 0);
228
229
  } else {
229
230
  setLimitReductionNumber(0);
230
231
  }
231
232
  previousWatchProviderRef.current = watchProvider;
232
- }, [defaultLimitReductions, formMethods, params?.limitReductions, specificParamsDescription, watchProvider]);
233
+ }, [defaultLimitReductions, formMethods, specificParamsDescription, watchProvider]);
233
234
  return {
234
235
  formMethods,
235
236
  formSchema,
@@ -63,7 +63,7 @@ const getSAParametersFormSchema = (name, limitReductions) => {
63
63
  };
64
64
  const toFormValueSaParameters = (params) => ({
65
65
  [PARAM_SA_PROVIDER]: params[PARAM_SA_PROVIDER],
66
- ...toFormValuesContingencyListsInfos(params?.[CONTINGENCY_LISTS_INFOS]),
66
+ ...toFormValuesContingencyListsInfos(params?.[CONTINGENCY_LISTS_INFOS] ?? []),
67
67
  ...toFormValuesLimitReductions(params?.limitReductions),
68
68
  // SA specific form values
69
69
  [PARAM_SA_FLOW_PROPORTIONAL_THRESHOLD]: params[PARAM_SA_FLOW_PROPORTIONAL_THRESHOLD] * 100,
@@ -17,3 +17,4 @@ export * from './useFormatLabelWithUnit';
17
17
  export * from './useSelectAppearance';
18
18
  export * from './use-parameters-backend';
19
19
  export * from './use-create-row-data';
20
+ export * from './useGetLabelEquipmentTypes';
@@ -12,6 +12,7 @@ import { useFormatLabelWithUnit } from "./useFormatLabelWithUnit.js";
12
12
  import { useSelectAppearance } from "./useSelectAppearance.js";
13
13
  import { OptionalServicesStatus, useParametersBackend } from "./use-parameters-backend.js";
14
14
  import { useCreateRowData } from "./use-create-row-data.js";
15
+ import { useGetLabelEquipmentTypes } from "./useGetLabelEquipmentTypes.js";
15
16
  export {
16
17
  OptionalServicesStatus,
17
18
  getComputedLanguage,
@@ -20,6 +21,7 @@ export {
20
21
  useCreateRowData,
21
22
  useDebounce,
22
23
  useFormatLabelWithUnit,
24
+ useGetLabelEquipmentTypes,
23
25
  useIntlRef,
24
26
  useLocalizedCountries,
25
27
  useModificationLabelComputer,
@@ -0,0 +1,2 @@
1
+ import { Option } from '../utils';
2
+ export declare function useGetLabelEquipmentTypes(): (equipmentType: Option) => string;
@@ -0,0 +1,20 @@
1
+ import { useMemo } from "react";
2
+ import { useIntl } from "react-intl";
3
+ import "../utils/conversionUtils.js";
4
+ import { EquipmentType } from "../utils/types/equipmentType.js";
5
+ import "react/jsx-runtime";
6
+ import "@mui/icons-material";
7
+ import { getIdOrValue } from "../utils/ts-utils.js";
8
+ import "../utils/yupConfig.js";
9
+ function useGetLabelEquipmentTypes() {
10
+ const intl = useIntl();
11
+ return useMemo(
12
+ () => (equipmentType) => intl.formatMessage({
13
+ id: equipmentType === EquipmentType.HVDC_LINE ? "Hvdc" : getIdOrValue(equipmentType)
14
+ }),
15
+ [intl]
16
+ );
17
+ }
18
+ export {
19
+ useGetLabelEquipmentTypes
20
+ };
@@ -70,6 +70,8 @@ const useModificationLabelComputer = () => {
70
70
  return `: ${modificationMetadata.rootNetworkName} / ${modificationMetadata.nodeName} / ${computedDateFormatted}`;
71
71
  }
72
72
  return "";
73
+ case MODIFICATION_TYPES.COMPOSITE_MODIFICATION.type:
74
+ return modificationMetadata.name;
73
75
  default:
74
76
  return modificationMetadata.equipmentId || "";
75
77
  }
package/dist/index.js CHANGED
@@ -82,6 +82,8 @@ import { SliderInput } from "./components/inputs/reactHookForm/numbers/SliderInp
82
82
  import { isFloatNumber, isIntegerNumber } from "./components/inputs/reactHookForm/numbers/utils.js";
83
83
  import { CustomFormContext, CustomFormProvider } from "./components/inputs/reactHookForm/provider/CustomFormProvider.js";
84
84
  import { useCustomFormContext } from "./components/inputs/reactHookForm/provider/useCustomFormContext.js";
85
+ import { ReadOnlyInput } from "./components/inputs/reactHookForm/readOnly/ReadOnlyInput.js";
86
+ import { ButtonReadOnlyInput } from "./components/inputs/reactHookForm/readOnly/ButtonReadOnlyInput.js";
85
87
  import { CountriesInput } from "./components/inputs/reactHookForm/selectInputs/CountriesInput.js";
86
88
  import { InputWithPopupConfirmation } from "./components/inputs/reactHookForm/selectInputs/InputWithPopupConfirmation.js";
87
89
  import { MuiSelectInput } from "./components/inputs/reactHookForm/selectInputs/MuiSelectInput.js";
@@ -202,6 +204,12 @@ import { SetPointsForm } from "./components/network-modifications/common/setpoin
202
204
  import { createConnectivityData, getCon1andCon2WithPositionValidationSchema, getConnectivityBusBarSectionData, getConnectivityData, getConnectivityFormData, getConnectivityFormDataProps, getConnectivityPropertiesData, getConnectivityPropertiesEmptyFormData, getConnectivityPropertiesValidationSchema, getConnectivityVoltageLevelData, getConnectivityWithPositionEmptyFormData, getConnectivityWithPositionEmptyFormDataProps, getConnectivityWithPositionSchema, getConnectivityWithPositionValidationSchema, getConnectivityWithoutPositionEmptyFormData, getConnectivityWithoutPositionValidationSchema, getCont1Cont2WithPositionEmptyFormData, getNewVoltageLevelData } from "./components/network-modifications/common/connectivity/connectivityForm.utils.js";
203
205
  import { ConnectivityForm } from "./components/network-modifications/common/connectivity/ConnectivityForm.js";
204
206
  import { BranchConnectivityForm } from "./components/network-modifications/common/connectivity/BranchConnectivityForm.js";
207
+ import { getHvdcLccDeletionSchema } from "./components/network-modifications/equipmentDeletion/hvdcLccDeletion/hvdcLccDeletion.utils.js";
208
+ import { ShuntCompensatorSelectionForm } from "./components/network-modifications/equipmentDeletion/hvdcLccDeletion/ShuntCompensatorSelectionForm.js";
209
+ import { useHvdcLccDeletion } from "./components/network-modifications/equipmentDeletion/hvdcLccDeletion/useHvdcLccDeletion.js";
210
+ import { HvdcLccDeletionSpecificForm } from "./components/network-modifications/equipmentDeletion/hvdcLccDeletion/HvdcLccDeletionSpecificForm.js";
211
+ import { equipmentDeletionDtoToForm, equipmentDeletionEmptyFormData, equipmentDeletionFormSchema, equipmentDeletionFormToDto, newEquipmentDeletionDto } from "./components/network-modifications/equipmentDeletion/equipmentDeletion.utils.js";
212
+ import { EquipmentDeletionForm } from "./components/network-modifications/equipmentDeletion/EquipmentDeletionForm.js";
205
213
  import { SubstationCreationForm } from "./components/network-modifications/substation/creation/SubstationCreationForm.js";
206
214
  import { substationCreationDtoToForm, substationCreationEmptyFormData, substationCreationFormSchema, substationCreationFormToDto } from "./components/network-modifications/substation/creation/substationCreation.utils.js";
207
215
  import { SubstationModificationForm } from "./components/network-modifications/substation/modification/SubstationModificationForm.js";
@@ -213,6 +221,8 @@ import { CouplingOmnibusCreation } from "./components/network-modifications/volt
213
221
  import { VoltageLevelCreationForm } from "./components/network-modifications/voltage-level/creation/VoltageLevelCreationForm.js";
214
222
  import { SWITCH_TYPE, buildNewBusbarSections, getCreateSwitchesEmptyFormData, getCreateSwitchesValidationSchema, translateSwitchKinds, voltageLevelCreationDtoToForm, voltageLevelCreationEmptyFormData, voltageLevelCreationFormSchema, voltageLevelCreationFormToDto } from "./components/network-modifications/voltage-level/creation/voltageLevelCreation.utils.js";
215
223
  import { SwitchKind } from "./components/network-modifications/voltage-level/creation/voltageLevelCreation.types.js";
224
+ import { VoltageLevelModificationForm } from "./components/network-modifications/voltage-level/modification/VoltageLevelModificationForm.js";
225
+ import { voltageLevelModificationDtoToForm, voltageLevelModificationEmptyFormData, voltageLevelModificationFormSchema, voltageLevelModificationFormToDto } from "./components/network-modifications/voltage-level/modification/voltageLevelModification.utils.js";
216
226
  import { LoadDialogTab } from "./components/network-modifications/load/common/load.utils.js";
217
227
  import { LoadDialogTabs } from "./components/network-modifications/load/common/LoadDialogTabs.js";
218
228
  import { LoadDialogTabsContent } from "./components/network-modifications/load/common/LoadDialogTabsContent.js";
@@ -234,6 +244,7 @@ import { useFormatLabelWithUnit } from "./hooks/useFormatLabelWithUnit.js";
234
244
  import { useSelectAppearance } from "./hooks/useSelectAppearance.js";
235
245
  import { OptionalServicesStatus, useParametersBackend } from "./hooks/use-parameters-backend.js";
236
246
  import { useCreateRowData } from "./hooks/use-create-row-data.js";
247
+ import { useGetLabelEquipmentTypes } from "./hooks/useGetLabelEquipmentTypes.js";
237
248
  import { LOGOUT_ERROR, RESET_AUTHENTICATION_ROUTER_ERROR, SHOW_AUTH_INFO_LOGIN, SIGNIN_CALLBACK_ERROR, UNAUTHORIZED_USER_INFO, USER, USER_VALIDATION_ERROR, resetAuthenticationRouterError, setLoggedUser, setLogoutError, setShowAuthenticationRouterLogin, setSignInCallbackError, setUnauthorizedUserInfo, setUserValidationError } from "./redux/actions/authActions.js";
238
249
  import { getUserToken, setCommonStore } from "./redux/commonStore.js";
239
250
  import { fetchAppsMetadata, fetchBaseVoltages, fetchDefaultCountry, fetchEnv, fetchFavoriteAndDefaultCountries, fetchStudyMetadata, isExploreMetadata, isStudyMetadata } from "./services/appsMetadata.js";
@@ -260,7 +271,7 @@ import { MAX_CHAR_DESCRIPTION } from "./utils/constants/uiConstants.js";
260
271
  import { AMPERE, DEGREE, KILO_AMPERE, KILO_METER, KILO_VOLT, MEGA_VAR, MEGA_VOLT_AMPERE, MEGA_WATT, MICRO_SIEMENS, OHM, PERCENTAGE, SIEMENS } from "./utils/constants/unitsConstants.js";
261
272
  import { COMMON_APP_NAME, COMMON_CONFIG_PARAMS_NAMES, LAST_SELECTED_DIRECTORY, PARAM_DEVELOPER_MODE, PARAM_LANGUAGE, PARAM_THEME } from "./utils/constants/configConstants.js";
262
273
  import { FILTERS, FILTER_ID, FILTER_NAME, ID } from "./utils/constants/filterConstant.js";
263
- import { DUPLICATED_PROPS_ERROR, YUP_REQUIRED } from "./utils/constants/translationKeys.js";
274
+ import { DUPLICATED_PROPS_ERROR, YUP_NOT_TYPE_NUMBER, YUP_REQUIRED } from "./utils/constants/translationKeys.js";
264
275
  import { GRIDSUITE_DEFAULT_PRECISION, convertInputValue, convertOutputValue, isBlankOrEmpty, kiloUnitToUnit, microUnitToUnit, roundToDefaultPrecision, roundToPrecision, toModificationOperation, unitToKiloUnit, unitToMicroUnit } from "./utils/conversionUtils.js";
265
276
  import { catchErrorHandler, extractErrorMessageDescriptor, snackWithFallback } from "./utils/error.js";
266
277
  import { areArrayElementsUnique, arraysContainIdenticalStrings, isEmpty, isObjectEmpty, keyGenerator } from "./utils/functions.js";
@@ -285,7 +296,7 @@ import { SolverTypeInfos } from "./utils/types/dynamic-simulation.type.js";
285
296
  import { DistributionType, SensitivityType } from "./utils/types/sensitivity-analysis.type.js";
286
297
  import { CalculationType, LoadModelsRule } from "./utils/types/dynamic-margin-calculation.type.js";
287
298
  import { OperationType } from "./utils/types/network-modification-types.js";
288
- import { areIdsEqual, getIdOrSelf, getObjectId, notNull, notUndefined, parseIntData, removeNullFields, sanitizeString } from "./utils/ts-utils.js";
299
+ import { areIdsEqual, getIdOrSelf, getIdOrValue, getLabelOrValue, getObjectId, notNull, notUndefined, parseIntData, removeNullFields, richTypeEquals, sanitizeString } from "./utils/ts-utils.js";
289
300
  import { toNumber, validateValueIsANumber } from "./utils/validation-functions.js";
290
301
  import "./utils/yupConfig.js";
291
302
  import { cardErrorBoundaryEn } from "./translations/en/cardErrorBoundaryEn.js";
@@ -300,6 +311,7 @@ import { equipmentSearchEn } from "./translations/en/equipmentSearchEn.js";
300
311
  import { equipmentTagEn } from "./translations/en/equipmentTagEn.js";
301
312
  import { equipmentShortEn } from "./translations/en/equipmentShortEn.js";
302
313
  import { equipmentsEn } from "./translations/en/equipmentsEn.js";
314
+ import { equipmentTypesEn } from "./translations/en/equipmentTypesEn.js";
303
315
  import { errorsEn } from "./translations/en/errorsEn.js";
304
316
  import { filterEn } from "./translations/en/filterEn.js";
305
317
  import { filterExpertEn } from "./translations/en/filterExpertEn.js";
@@ -329,6 +341,7 @@ import { equipmentSearchFr } from "./translations/fr/equipmentSearchFr.js";
329
341
  import { equipmentTagFr } from "./translations/fr/equipmentTagFr.js";
330
342
  import { equipmentShortFr } from "./translations/fr/equipmentShortFr.js";
331
343
  import { equipmentsFr } from "./translations/fr/equipmentsFr.js";
344
+ import { equipmentTypesFr } from "./translations/fr/equipmentTypesFr.js";
332
345
  import { errorsFr } from "./translations/fr/errorsFr.js";
333
346
  import { filterExpertFr } from "./translations/fr/filterExpertFr.js";
334
347
  import { filterFr } from "./translations/fr/filterFr.js";
@@ -376,6 +389,7 @@ export {
376
389
  BranchActiveReactivePowerMeasurementsForm,
377
390
  BranchConnectivityForm,
378
391
  BusBar,
392
+ ButtonReadOnlyInput,
379
393
  CALCULATION_TYPE,
380
394
  CENTER_LABEL,
381
395
  COLUMNS_DEFINITIONS_CONTINGENCY_LISTS_INFOS,
@@ -481,6 +495,7 @@ export {
481
495
  ElementType,
482
496
  ElementValueEditor,
483
497
  EnumInput,
498
+ EquipmentDeletionForm,
484
499
  EquipmentItem,
485
500
  EquipmentType,
486
501
  EquipmentsSelectionType,
@@ -524,6 +539,7 @@ export {
524
539
  HVDC_EQUIPMENT_TYPES,
525
540
  HelperPreviousValue,
526
541
  Hvdc,
542
+ HvdcLccDeletionSpecificForm,
527
543
  HvdcType,
528
544
  ID,
529
545
  IGNORE_SIGNAL,
@@ -700,6 +716,7 @@ export {
700
716
  RangeType,
701
717
  RawReadOnlyInput,
702
718
  ReactivePowerAdornment,
719
+ ReadOnlyInput,
703
720
  RemoveButton,
704
721
  ResizeHandle,
705
722
  RuleValueEditor,
@@ -756,6 +773,7 @@ export {
756
773
  ShortCircuitParametersEditionDialog,
757
774
  ShortCircuitParametersInLine,
758
775
  ShuntCompensator,
776
+ ShuntCompensatorSelectionForm,
759
777
  SignInCallbackHandler,
760
778
  SilentRenewCallbackHandler,
761
779
  SliderInput,
@@ -818,7 +836,9 @@ export {
818
836
  VoltageInitTabValues,
819
837
  VoltageLevel,
820
838
  VoltageLevelCreationForm,
839
+ VoltageLevelModificationForm,
821
840
  WRITE_SLACK_BUS,
841
+ YUP_NOT_TYPE_NUMBER,
822
842
  YUP_REQUIRED,
823
843
  alertThresholdMarks,
824
844
  areArrayElementsUnique,
@@ -863,6 +883,10 @@ export {
863
883
  elementSearchFr,
864
884
  emptyProperties,
865
885
  equalsArray,
886
+ equipmentDeletionDtoToForm,
887
+ equipmentDeletionEmptyFormData,
888
+ equipmentDeletionFormSchema,
889
+ equipmentDeletionFormToDto,
866
890
  equipmentSearchEn,
867
891
  equipmentSearchFr,
868
892
  equipmentShortEn,
@@ -870,7 +894,9 @@ export {
870
894
  equipmentStyles,
871
895
  equipmentTagEn,
872
896
  equipmentTagFr,
897
+ equipmentTypesEn,
873
898
  equipmentTypesForPredefinedPropertiesMapper,
899
+ equipmentTypesFr,
874
900
  equipmentsEn,
875
901
  equipmentsFr,
876
902
  errorsEn,
@@ -957,13 +983,16 @@ export {
957
983
  getExplicitNamingFilterEmptyFormData,
958
984
  getFileIcon,
959
985
  getFilledPropertiesFromModification,
986
+ getHvdcLccDeletionSchema,
960
987
  getIdOrSelf,
988
+ getIdOrValue,
961
989
  getInjectionActiveReactivePowerEditData,
962
990
  getInjectionActiveReactivePowerEditDataProperties,
963
991
  getInjectionActiveReactivePowerEmptyFormData,
964
992
  getInjectionActiveReactivePowerEmptyFormDataProperties,
965
993
  getInjectionActiveReactivePowerValidationSchema,
966
994
  getInjectionActiveReactivePowerValidationSchemaProperties,
995
+ getLabelOrValue,
967
996
  getLimitReductionsFormSchema,
968
997
  getLoadFlowDefaultLimitReductions,
969
998
  getLoadFlowProviders,
@@ -1047,6 +1076,7 @@ export {
1047
1076
  multipleSelectionDialogFr,
1048
1077
  networkModificationsEn,
1049
1078
  networkModificationsFr,
1079
+ newEquipmentDeletionDto,
1050
1080
  notNull,
1051
1081
  notUndefined,
1052
1082
  onlyStartedGeneratorsOptions,
@@ -1060,6 +1090,7 @@ export {
1060
1090
  reportViewerEn,
1061
1091
  reportViewerFr,
1062
1092
  resetAuthenticationRouterError,
1093
+ richTypeEquals,
1063
1094
  roundToDefaultPrecision,
1064
1095
  roundToPrecision,
1065
1096
  safeEncodeURIComponent,
@@ -1125,7 +1156,9 @@ export {
1125
1156
  useDebounce,
1126
1157
  useElementSearch,
1127
1158
  useFormatLabelWithUnit,
1159
+ useGetLabelEquipmentTypes,
1128
1160
  useGlobalAnnouncement,
1161
+ useHvdcLccDeletion,
1129
1162
  useIntlRef,
1130
1163
  useListenerManager,
1131
1164
  useLocalizedCountries,
@@ -1146,5 +1179,9 @@ export {
1146
1179
  voltageLevelCreationEmptyFormData,
1147
1180
  voltageLevelCreationFormSchema,
1148
1181
  voltageLevelCreationFormToDto,
1182
+ voltageLevelModificationDtoToForm,
1183
+ voltageLevelModificationEmptyFormData,
1184
+ voltageLevelModificationFormSchema,
1185
+ voltageLevelModificationFormToDto,
1149
1186
  yup as yupConfig
1150
1187
  };