@gridsuite/commons-ui 0.207.0 → 0.209.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/dialogs/modifyElementSelection/ModifyElementSelection.js +1 -1
  2. package/dist/components/directoryItemSelector/DirectoryItemSelector.js +1 -1
  3. package/dist/components/directoryItemSelector/utils.js +1 -1
  4. package/dist/components/index.js +12 -2
  5. package/dist/components/inputs/reactHookForm/DirectoryItemsInput.js +1 -1
  6. package/dist/components/inputs/reactHookForm/booleans/RadioInput.js +1 -1
  7. package/dist/components/network-modification-table/renderers/name-cell.d.ts +2 -1
  8. package/dist/components/network-modification-table/renderers/name-cell.js +136 -19
  9. package/dist/components/network-modifications/battery/creation/BatteryCreationForm.d.ts +4 -0
  10. package/dist/components/network-modifications/battery/creation/BatteryCreationForm.js +105 -0
  11. package/dist/components/network-modifications/battery/creation/batteryCreation.types.d.ts +26 -0
  12. package/dist/components/network-modifications/battery/creation/batteryCreation.types.js +1 -0
  13. package/dist/components/network-modifications/battery/creation/batteryCreation.utils.d.ts +79 -0
  14. package/dist/components/network-modifications/battery/creation/batteryCreation.utils.js +145 -0
  15. package/dist/components/network-modifications/battery/creation/index.d.ts +9 -0
  16. package/dist/components/network-modifications/battery/creation/index.js +9 -0
  17. package/dist/components/network-modifications/battery/index.d.ts +7 -0
  18. package/dist/components/network-modifications/battery/index.js +9 -0
  19. package/dist/components/network-modifications/common/index.js +5 -2
  20. package/dist/components/network-modifications/common/reactiveLimits/index.js +5 -2
  21. package/dist/components/network-modifications/common/reactiveLimits/reactiveCapabilityCurve/index.js +2 -1
  22. package/dist/components/network-modifications/common/reactiveLimits/reactiveCapabilityCurve/reactiveCapability.utils.d.ts +10 -1
  23. package/dist/components/network-modifications/common/reactiveLimits/reactiveCapabilityCurve/reactiveCapability.utils.js +26 -24
  24. package/dist/components/network-modifications/common/reactiveLimits/reactiveLimits.type.d.ts +3 -3
  25. package/dist/components/network-modifications/common/reactiveLimits/reactiveLimits.utils.d.ts +33 -0
  26. package/dist/components/network-modifications/common/reactiveLimits/reactiveLimits.utils.js +68 -34
  27. package/dist/components/network-modifications/index.d.ts +1 -0
  28. package/dist/components/network-modifications/index.js +12 -2
  29. package/dist/components/parameters/common/contingency-table/columns-definitions.d.ts +2 -2
  30. package/dist/components/parameters/common/contingency-table/columns-definitions.js +10 -8
  31. package/dist/components/parameters/common/contingency-table/contingency-table.js +4 -4
  32. package/dist/components/parameters/common/contingency-table/types.d.ts +6 -1
  33. package/dist/components/parameters/pcc-min/pcc-min-form-utils.d.ts +5 -4
  34. package/dist/components/parameters/pcc-min/pcc-min-form-utils.js +5 -1
  35. package/dist/components/parameters/pcc-min/pcc-min-parameters-inline.d.ts +2 -2
  36. package/dist/components/parameters/pcc-min/pcc-min-parameters-inline.js +3 -2
  37. package/dist/components/parameters/pcc-min/use-pcc-min-parameters-form.d.ts +2 -2
  38. package/dist/components/parameters/pcc-min/use-pcc-min-parameters-form.js +9 -7
  39. package/dist/components/parameters/security-analysis/columns-definitions.d.ts +2 -2
  40. package/dist/components/parameters/security-analysis/security-analysis-parameters-inline.js +3 -2
  41. package/dist/components/parameters/security-analysis/security-analysis-parameters-selector.d.ts +2 -2
  42. package/dist/components/parameters/security-analysis/types.d.ts +8 -3
  43. package/dist/components/parameters/security-analysis/types.js +42 -1
  44. package/dist/components/parameters/security-analysis/use-security-analysis-parameters-form.d.ts +4 -4
  45. package/dist/components/parameters/security-analysis/use-security-analysis-parameters-form.js +2 -1
  46. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-dialog.js +1 -1
  47. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-inline.js +6 -3
  48. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.d.ts +4 -4
  49. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.js +3 -2
  50. package/dist/hooks/use-unique-name-validation.js +1 -1
  51. package/dist/index.js +29 -4
  52. package/dist/services/directory.d.ts +2 -1
  53. package/dist/services/directory.js +11 -0
  54. package/dist/services/index.d.ts +1 -0
  55. package/dist/services/index.js +11 -1
  56. package/dist/services/pcc-min.d.ts +4 -7
  57. package/dist/services/pcc-min.js +8 -5
  58. package/dist/services/security-analysis.d.ts +5 -4
  59. package/dist/services/security-analysis.js +7 -4
  60. package/dist/services/sensitivity-analysis.d.ts +5 -6
  61. package/dist/services/sensitivity-analysis.js +13 -6
  62. package/dist/translations/en/networkModificationsEn.d.ts +10 -0
  63. package/dist/translations/en/networkModificationsEn.js +10 -0
  64. package/dist/translations/fr/networkModificationsFr.d.ts +10 -0
  65. package/dist/translations/fr/networkModificationsFr.js +10 -0
  66. package/dist/utils/index.js +6 -1
  67. package/dist/utils/types/index.d.ts +1 -0
  68. package/dist/utils/types/index.js +7 -2
  69. package/dist/utils/types/network-modification-metadata.d.ts +1 -0
  70. package/dist/utils/types/parameters.type.d.ts +3 -3
  71. package/dist/utils/types/pcc-min.type.d.ts +10 -0
  72. package/dist/utils/types/pcc-min.type.js +31 -0
  73. package/dist/utils/types/sensitivity-analysis.type.d.ts +28 -23
  74. package/dist/utils/types/sensitivity-analysis.type.js +136 -1
  75. package/package.json +1 -1
@@ -0,0 +1,145 @@
1
+ import { object, number, string } from "yup";
2
+ import { FieldConstants } from "../../../../utils/constants/fieldConstants.js";
3
+ import { YUP_REQUIRED } from "../../../../utils/constants/translationKeys.js";
4
+ import "../../../../utils/conversionUtils.js";
5
+ import { UNDEFINED_CONNECTION_DIRECTION } from "../../../../utils/types/equipmentType.js";
6
+ import { ModificationType } from "../../../../utils/types/modificationType.js";
7
+ import "react/jsx-runtime";
8
+ import "@mui/icons-material";
9
+ import { sanitizeString } from "../../../../utils/ts-utils.js";
10
+ import "../../../../utils/yupConfig.js";
11
+ import { getConnectivityWithPositionSchema, getConnectivityWithPositionEmptyFormDataProps, getConnectivityFormDataProps } from "../../common/connectivity/connectivityForm.utils.js";
12
+ import "@mui/material";
13
+ import "react";
14
+ import "react-intl";
15
+ import "../../../overflowableText/OverflowableText.js";
16
+ import "react-hook-form";
17
+ import "localized-countries";
18
+ import "localized-countries/data/fr";
19
+ import "localized-countries/data/en";
20
+ import "notistack";
21
+ import "../../../inputs/reactHookForm/provider/CustomFormProvider.js";
22
+ import "../../../treeViewFinder/TreeViewFinder.js";
23
+ import "../../../inputs/reactHookForm/agGridTable/BottomRightButtons.js";
24
+ import "../../../customAGGrid/customAggrid.js";
25
+ import "ag-grid-community";
26
+ import "react-papaparse";
27
+ import "react-csv-downloader";
28
+ import "../../../inputs/reactHookForm/numbers/RangeInput.js";
29
+ import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
30
+ import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
31
+ import "@material-symbols/svg-400/outlined/arrows_input.svg?react";
32
+ import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
33
+ import "@material-symbols/svg-400/outlined/add_notes.svg?react";
34
+ import "../../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
35
+ import "../../../inputs/reactHookForm/expandableInput/ExpandableInput.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 { creationPropertiesSchema, getFilledPropertiesFromModification, toModificationProperties } from "../../common/properties/propertyUtils.js";
43
+ import { getSetPointsSchema, getSetPointsEmptyFormData } from "../../common/setpoints/setPoints.utils.js";
44
+ import { getActivePowerControlSchema, getActivePowerControlEmptyFormData } from "../../common/activePowerControl/activePowerControlForm.utils.js";
45
+ import { getShortCircuitFormSchema, getShortCircuitEmptyFormData, getShortCircuitFormData } from "../../common/shortCircuit/shortCircuitForm.utils.js";
46
+ import { getReactiveLimitsValidationSchema, getReactiveLimitsEmptyFormDataProps, getReactiveLimitsFormDataProps } from "../../common/reactiveLimits/reactiveLimits.utils.js";
47
+ const batteryCreationFormSchema = object().shape({
48
+ [FieldConstants.EQUIPMENT_ID]: string().required(YUP_REQUIRED),
49
+ [FieldConstants.EQUIPMENT_NAME]: string().nullable(),
50
+ [FieldConstants.MAXIMUM_ACTIVE_POWER]: number().nullable().required(YUP_REQUIRED).test("max-greater-than-min", "ActiveLimitsMinMaxInvalid", function checkMaxGreaterThanMin(value) {
51
+ const min = this.parent[FieldConstants.MINIMUM_ACTIVE_POWER];
52
+ if (value != null && min != null) {
53
+ return value >= min;
54
+ }
55
+ return true;
56
+ }),
57
+ [FieldConstants.MINIMUM_ACTIVE_POWER]: number().nullable().required(YUP_REQUIRED).test("min-less-than-max", "ActiveLimitsMinMaxInvalid", function checkMinLessThanMax(value) {
58
+ const max = this.parent[FieldConstants.MAXIMUM_ACTIVE_POWER];
59
+ if (value != null && max != null) {
60
+ return value <= max;
61
+ }
62
+ return true;
63
+ }),
64
+ [FieldConstants.CONNECTIVITY]: getConnectivityWithPositionSchema(false),
65
+ [FieldConstants.REACTIVE_LIMITS]: getReactiveLimitsValidationSchema(),
66
+ ...getSetPointsSchema(),
67
+ ...getActivePowerControlSchema(),
68
+ ...getShortCircuitFormSchema()
69
+ }).concat(creationPropertiesSchema).required(YUP_REQUIRED);
70
+ const batteryCreationEmptyFormData = {
71
+ equipmentID: "",
72
+ equipmentName: "",
73
+ maximumActivePower: null,
74
+ minimumActivePower: null,
75
+ connectivity: getConnectivityWithPositionEmptyFormDataProps(),
76
+ reactiveLimits: getReactiveLimitsEmptyFormDataProps(),
77
+ AdditionalProperties: [],
78
+ ...getSetPointsEmptyFormData(),
79
+ ...getActivePowerControlEmptyFormData(),
80
+ ...getShortCircuitEmptyFormData()
81
+ };
82
+ const batteryCreationDtoToForm = (dto) => {
83
+ return {
84
+ equipmentID: dto.equipmentId,
85
+ equipmentName: dto.equipmentName ?? "",
86
+ maximumActivePower: dto.maxP,
87
+ minimumActivePower: dto.minP,
88
+ activePowerSetpoint: dto.targetP,
89
+ reactivePowerSetpoint: dto.targetQ,
90
+ frequencyRegulation: dto.participate,
91
+ droop: dto.droop,
92
+ connectivity: getConnectivityFormDataProps({
93
+ voltageLevelId: dto.voltageLevelId,
94
+ busbarSectionId: dto.busOrBusbarSectionId,
95
+ connectionDirection: dto.connectionDirection,
96
+ connectionName: dto.connectionName,
97
+ connectionPosition: dto.connectionPosition,
98
+ terminalConnected: dto.terminalConnected
99
+ }),
100
+ reactiveLimits: getReactiveLimitsFormDataProps({
101
+ reactiveCapabilityCurveChoice: dto?.reactiveCapabilityCurve ? "CURVE" : "MINMAX",
102
+ minimumReactivePower: dto?.minQ,
103
+ maximumReactivePower: dto?.maxQ,
104
+ reactiveCapabilityCurvePoints: dto?.reactiveCapabilityCurve ? dto?.reactiveCapabilityCurvePoints : null
105
+ }),
106
+ AdditionalProperties: getFilledPropertiesFromModification(dto.properties),
107
+ ...getShortCircuitFormData({
108
+ directTransX: dto.directTransX,
109
+ stepUpTransformerX: dto.stepUpTransformerX
110
+ })
111
+ };
112
+ };
113
+ const batteryCreationFormToDto = (form) => {
114
+ const isReactiveCapabilityCurveOn = form.reactiveLimits.reactiveCapabilityCurveChoice === "CURVE";
115
+ return {
116
+ type: ModificationType.BATTERY_CREATION,
117
+ equipmentId: form.equipmentID,
118
+ equipmentName: sanitizeString(form.equipmentName),
119
+ voltageLevelId: form.connectivity.voltageLevel?.id ?? "",
120
+ busOrBusbarSectionId: form.connectivity.busOrBusbarSection?.id ?? "",
121
+ connectionDirection: form.connectivity.connectionDirection ?? UNDEFINED_CONNECTION_DIRECTION,
122
+ connectionName: sanitizeString(form.connectivity.connectionName),
123
+ connectionPosition: form.connectivity.connectionPosition,
124
+ terminalConnected: form.connectivity.terminalConnected,
125
+ properties: toModificationProperties(form),
126
+ minP: form.minimumActivePower,
127
+ maxP: form.maximumActivePower,
128
+ reactiveCapabilityCurve: isReactiveCapabilityCurveOn,
129
+ minQ: isReactiveCapabilityCurveOn ? null : form.reactiveLimits.minimumReactivePower ?? null,
130
+ maxQ: isReactiveCapabilityCurveOn ? null : form.reactiveLimits.maximumReactivePower ?? null,
131
+ reactiveCapabilityCurvePoints: isReactiveCapabilityCurveOn ? form.reactiveLimits.reactiveCapabilityCurveTable ?? null : null,
132
+ targetP: form.activePowerSetpoint ?? 0,
133
+ targetQ: form.reactivePowerSetpoint ?? 0,
134
+ participate: form.frequencyRegulation ?? null,
135
+ droop: form.droop ?? null,
136
+ directTransX: form.directTransX ?? null,
137
+ stepUpTransformerX: form.transformerReactance ?? null
138
+ };
139
+ };
140
+ export {
141
+ batteryCreationDtoToForm,
142
+ batteryCreationEmptyFormData,
143
+ batteryCreationFormSchema,
144
+ batteryCreationFormToDto
145
+ };
@@ -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 './batteryCreation.types';
8
+ export * from './batteryCreation.utils';
9
+ export * from './BatteryCreationForm';
@@ -0,0 +1,9 @@
1
+ import { batteryCreationDtoToForm, batteryCreationEmptyFormData, batteryCreationFormSchema, batteryCreationFormToDto } from "./batteryCreation.utils.js";
2
+ import { BatteryCreationForm } from "./BatteryCreationForm.js";
3
+ export {
4
+ BatteryCreationForm,
5
+ batteryCreationDtoToForm,
6
+ batteryCreationEmptyFormData,
7
+ batteryCreationFormSchema,
8
+ batteryCreationFormToDto
9
+ };
@@ -0,0 +1,7 @@
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 './creation';
@@ -0,0 +1,9 @@
1
+ import { batteryCreationDtoToForm, batteryCreationEmptyFormData, batteryCreationFormSchema, batteryCreationFormToDto } from "./creation/batteryCreation.utils.js";
2
+ import { BatteryCreationForm } from "./creation/BatteryCreationForm.js";
3
+ export {
4
+ BatteryCreationForm,
5
+ batteryCreationDtoToForm,
6
+ batteryCreationEmptyFormData,
7
+ batteryCreationFormSchema,
8
+ batteryCreationFormToDto
9
+ };
@@ -18,10 +18,10 @@ import { getActivePowerControlEmptyFormData, getActivePowerControlSchema } from
18
18
  import { ActivePowerControlForm } from "./activePowerControl/ActivePowerControlForm.js";
19
19
  import { getShortCircuitEmptyFormData, getShortCircuitFormData, getShortCircuitFormSchema } from "./shortCircuit/shortCircuitForm.utils.js";
20
20
  import { ShortCircuitForm } from "./shortCircuit/ShortCircuitForm.js";
21
- import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./reactiveLimits/reactiveCapabilityCurve/reactiveCapability.utils.js";
21
+ import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getReactiveCapabilityCurveValidationSchemaArray, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./reactiveLimits/reactiveCapabilityCurve/reactiveCapability.utils.js";
22
22
  import { ReactiveCapabilityCurveRowForm } from "./reactiveLimits/reactiveCapabilityCurve/ReactiveCapabilityCurveRowForm.js";
23
23
  import { ReactiveCapabilityCurveTableForm } from "./reactiveLimits/reactiveCapabilityCurve/ReactiveCapabilityCurveTableForm.js";
24
- import { REACTIVE_LIMIT_TYPES, getReactiveLimitsEmptyFormData, getReactiveLimitsFormData, getReactiveLimitsSchema, getReactiveLimitsValidationSchema } from "./reactiveLimits/reactiveLimits.utils.js";
24
+ import { REACTIVE_LIMIT_TYPES, getReactiveLimitsEmptyFormData, getReactiveLimitsEmptyFormDataProps, getReactiveLimitsFormData, getReactiveLimitsFormDataProps, getReactiveLimitsSchema, getReactiveLimitsValidationSchema } from "./reactiveLimits/reactiveLimits.utils.js";
25
25
  import { ReactiveLimitsForm } from "./reactiveLimits/ReactiveLimitsForm.js";
26
26
  export {
27
27
  ActivePowerControlForm,
@@ -88,8 +88,11 @@ export {
88
88
  getPropertiesFromModification,
89
89
  getPropertyValue,
90
90
  getReactiveCapabilityCurveValidationSchema,
91
+ getReactiveCapabilityCurveValidationSchemaArray,
91
92
  getReactiveLimitsEmptyFormData,
93
+ getReactiveLimitsEmptyFormDataProps,
92
94
  getReactiveLimitsFormData,
95
+ getReactiveLimitsFormDataProps,
93
96
  getReactiveLimitsSchema,
94
97
  getReactiveLimitsValidationSchema,
95
98
  getReactivePowerSetPointSchema,
@@ -1,7 +1,7 @@
1
- import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./reactiveCapabilityCurve/reactiveCapability.utils.js";
1
+ import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getReactiveCapabilityCurveValidationSchemaArray, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./reactiveCapabilityCurve/reactiveCapability.utils.js";
2
2
  import { ReactiveCapabilityCurveRowForm } from "./reactiveCapabilityCurve/ReactiveCapabilityCurveRowForm.js";
3
3
  import { ReactiveCapabilityCurveTableForm } from "./reactiveCapabilityCurve/ReactiveCapabilityCurveTableForm.js";
4
- import { REACTIVE_LIMIT_TYPES, getReactiveLimitsEmptyFormData, getReactiveLimitsFormData, getReactiveLimitsSchema, getReactiveLimitsValidationSchema } from "./reactiveLimits.utils.js";
4
+ import { REACTIVE_LIMIT_TYPES, getReactiveLimitsEmptyFormData, getReactiveLimitsEmptyFormDataProps, getReactiveLimitsFormData, getReactiveLimitsFormDataProps, getReactiveLimitsSchema, getReactiveLimitsValidationSchema } from "./reactiveLimits.utils.js";
5
5
  import { ReactiveLimitsForm } from "./ReactiveLimitsForm.js";
6
6
  export {
7
7
  INSERT,
@@ -11,8 +11,11 @@ export {
11
11
  ReactiveCapabilityCurveTableForm,
12
12
  ReactiveLimitsForm,
13
13
  getReactiveCapabilityCurveValidationSchema,
14
+ getReactiveCapabilityCurveValidationSchemaArray,
14
15
  getReactiveLimitsEmptyFormData,
16
+ getReactiveLimitsEmptyFormDataProps,
15
17
  getReactiveLimitsFormData,
18
+ getReactiveLimitsFormDataProps,
16
19
  getReactiveLimitsSchema,
17
20
  getReactiveLimitsValidationSchema,
18
21
  getRowEmptyFormData,
@@ -1,4 +1,4 @@
1
- import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./reactiveCapability.utils.js";
1
+ import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getReactiveCapabilityCurveValidationSchemaArray, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./reactiveCapability.utils.js";
2
2
  import { ReactiveCapabilityCurveRowForm } from "./ReactiveCapabilityCurveRowForm.js";
3
3
  import { ReactiveCapabilityCurveTableForm } from "./ReactiveCapabilityCurveTableForm.js";
4
4
  export {
@@ -7,6 +7,7 @@ export {
7
7
  ReactiveCapabilityCurveRowForm,
8
8
  ReactiveCapabilityCurveTableForm,
9
9
  getReactiveCapabilityCurveValidationSchema,
10
+ getReactiveCapabilityCurveValidationSchemaArray,
10
11
  getRowEmptyFormData,
11
12
  setCurrentReactiveCapabilityCurveTable,
12
13
  setSelectedReactiveLimits,
@@ -11,8 +11,17 @@ export declare const getRowEmptyFormData: () => {
11
11
  maxQ: null;
12
12
  minQ: null;
13
13
  };
14
+ export declare const getReactiveCapabilityCurveValidationSchemaArray: (positiveAndNegativePExist?: boolean) => import('yup').ArraySchema<{
15
+ minQ: number | null;
16
+ maxQ: number | null;
17
+ p: number | null;
18
+ }[] | null | undefined, import('yup').AnyObject, "", "">;
14
19
  export declare const getReactiveCapabilityCurveValidationSchema: (id?: FieldConstants, positiveAndNegativePExist?: boolean) => {
15
- [x: string]: import('yup').ArraySchema<any[] | null | undefined, import('yup').AnyObject, undefined, "">;
20
+ [x: string]: import('yup').ArraySchema<{
21
+ minQ: number | null;
22
+ maxQ: number | null;
23
+ p: number | null;
24
+ }[] | null | undefined, import('yup').AnyObject, "", "">;
16
25
  };
17
26
  export declare function setSelectedReactiveLimits(id: string, minMaxReactiveLimits: number, setValue: UseFormSetValue<FieldValues>): void;
18
27
  export declare function setCurrentReactiveCapabilityCurveTable(previousReactiveCapabilityCurveTable: ReactiveCapabilityCurve, fieldKey: string, setValue: UseFormSetValue<FieldValues>): void;
@@ -67,33 +67,34 @@ function ifOneFieldThenAllFields(values, context) {
67
67
  });
68
68
  return errors.length === 0 ? true : new ValidationError(errors);
69
69
  }
70
- const getReactiveCapabilityCurveValidationSchema = (id = FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE, positiveAndNegativePExist = false) => ({
71
- [id]: array().nullable().when([FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE], {
72
- is: "CURVE",
73
- then: (schema) => {
74
- let resultSchema = schema.of(getCreationRowSchema());
75
- if (positiveAndNegativePExist) {
76
- resultSchema = resultSchema.test(
77
- "checkATLeastThereIsOneNegativeP",
78
- "ReactiveCapabilityCurveCreationErrorMissingNegativeP",
79
- hasAtLeastOneNegativeP
80
- ).test(
81
- "checkATLeastThereIsOnePositiveP",
82
- "ReactiveCapabilityCurveCreationErrorMissingPositiveP",
83
- hasAtLeastOnePositiveP
84
- );
85
- }
86
- return resultSchema.min(2, "ReactiveCapabilityCurveCreationErrorMissingPoints").test("ifOneFieldThenAllFields", "", ifOneFieldThenAllFields).test(
87
- "checkAllValuesAreUnique",
88
- "ReactiveCapabilityCurveCreationErrorPInvalid",
89
- checkAllPValuesAreUnique
70
+ const getReactiveCapabilityCurveValidationSchemaArray = (positiveAndNegativePExist = false) => array().of(getCreationRowSchema()).nullable().when([FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE], {
71
+ is: "CURVE",
72
+ then: (schema) => {
73
+ let resultSchema = schema;
74
+ if (positiveAndNegativePExist) {
75
+ resultSchema = resultSchema.test(
76
+ "checkATLeastThereIsOneNegativeP",
77
+ "ReactiveCapabilityCurveCreationErrorMissingNegativeP",
78
+ hasAtLeastOneNegativeP
90
79
  ).test(
91
- "checkAllValuesBetweenMinMax",
92
- "ReactiveCapabilityCurveCreationErrorPOutOfRange",
93
- checkAllPValuesBetweenMinMax
80
+ "checkATLeastThereIsOnePositiveP",
81
+ "ReactiveCapabilityCurveCreationErrorMissingPositiveP",
82
+ hasAtLeastOnePositiveP
94
83
  );
95
84
  }
96
- })
85
+ return resultSchema.min(2, "ReactiveCapabilityCurveCreationErrorMissingPoints").test("ifOneFieldThenAllFields", "", ifOneFieldThenAllFields).test(
86
+ "checkAllValuesAreUnique",
87
+ "ReactiveCapabilityCurveCreationErrorPInvalid",
88
+ checkAllPValuesAreUnique
89
+ ).test(
90
+ "checkAllValuesBetweenMinMax",
91
+ "ReactiveCapabilityCurveCreationErrorPOutOfRange",
92
+ checkAllPValuesBetweenMinMax
93
+ );
94
+ }
95
+ });
96
+ const getReactiveCapabilityCurveValidationSchema = (id = FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE, positiveAndNegativePExist = false) => ({
97
+ [id]: getReactiveCapabilityCurveValidationSchemaArray(positiveAndNegativePExist)
97
98
  });
98
99
  function setSelectedReactiveLimits(id, minMaxReactiveLimits, setValue) {
99
100
  setValue(id, minMaxReactiveLimits ? "MINMAX" : "CURVE");
@@ -144,6 +145,7 @@ export {
144
145
  INSERT,
145
146
  REMOVE,
146
147
  getReactiveCapabilityCurveValidationSchema,
148
+ getReactiveCapabilityCurveValidationSchemaArray,
147
149
  getRowEmptyFormData,
148
150
  setCurrentReactiveCapabilityCurveTable,
149
151
  setSelectedReactiveLimits,
@@ -5,9 +5,9 @@
5
5
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
6
  */
7
7
  export interface ReactiveCapabilityCurvePoints {
8
- p?: number | null;
9
- maxQ?: number | null;
10
- minQ?: number | null;
8
+ p: number | null;
9
+ maxQ: number | null;
10
+ minQ: number | null;
11
11
  }
12
12
  export interface MinMaxReactiveLimitsFormInfos {
13
13
  minQ?: number | null;
@@ -7,6 +7,17 @@ export declare const REACTIVE_LIMIT_TYPES: readonly [{
7
7
  readonly id: "CURVE";
8
8
  readonly label: "ReactiveLimitsKindCurve";
9
9
  }];
10
+ export declare const getReactiveLimitsFormDataProps: ({ reactiveCapabilityCurveChoice, minimumReactivePower, maximumReactivePower, reactiveCapabilityCurvePoints, }: {
11
+ reactiveCapabilityCurveChoice: string;
12
+ minimumReactivePower?: number | null;
13
+ maximumReactivePower?: number | null;
14
+ reactiveCapabilityCurvePoints?: ReactiveCapabilityCurvePoints[] | null;
15
+ }) => {
16
+ reactiveCapabilityCurveChoice: string;
17
+ minimumReactivePower: number | null;
18
+ maximumReactivePower: number | null;
19
+ reactiveCapabilityCurveTable: ReactiveCapabilityCurvePoints[];
20
+ };
10
21
  export declare const getReactiveLimitsFormData: ({ id, reactiveCapabilityCurveChoice, minimumReactivePower, maximumReactivePower, reactiveCapabilityCurvePoints, }: {
11
22
  id?: string;
12
23
  reactiveCapabilityCurveChoice: string;
@@ -21,6 +32,16 @@ export declare const getReactiveLimitsFormData: ({ id, reactiveCapabilityCurveCh
21
32
  reactiveCapabilityCurveTable: ReactiveCapabilityCurvePoints[];
22
33
  };
23
34
  };
35
+ export declare const getReactiveLimitsEmptyFormDataProps: () => {
36
+ reactiveCapabilityCurveChoice: string;
37
+ minimumReactivePower: null;
38
+ maximumReactivePower: null;
39
+ reactiveCapabilityCurveTable: {
40
+ p: null;
41
+ maxQ: null;
42
+ minQ: null;
43
+ }[];
44
+ };
24
45
  export declare const getReactiveLimitsEmptyFormData: (id?: FieldConstants) => {
25
46
  [x: string]: {
26
47
  reactiveCapabilityCurveChoice: string;
@@ -37,19 +58,31 @@ export declare const getReactiveLimitsValidationSchema: (isEquipmentModification
37
58
  reactiveCapabilityCurveChoice: string;
38
59
  minimumReactivePower: number | null | undefined;
39
60
  maximumReactivePower: number | null | undefined;
61
+ reactiveCapabilityCurveTable: {
62
+ minQ: number | null;
63
+ maxQ: number | null;
64
+ p: number | null;
65
+ }[] | null | undefined;
40
66
  }, import('yup').AnyObject, {
41
67
  reactiveCapabilityCurveChoice: undefined;
42
68
  minimumReactivePower: undefined;
43
69
  maximumReactivePower: undefined;
70
+ reactiveCapabilityCurveTable: "";
44
71
  }, "">;
45
72
  export declare const getReactiveLimitsSchema: (isEquipmentModification?: boolean, positiveAndNegativePExist?: boolean, id?: FieldConstants) => {
46
73
  [x: string]: import('yup').ObjectSchema<{
47
74
  reactiveCapabilityCurveChoice: string;
48
75
  minimumReactivePower: number | null | undefined;
49
76
  maximumReactivePower: number | null | undefined;
77
+ reactiveCapabilityCurveTable: {
78
+ minQ: number | null;
79
+ maxQ: number | null;
80
+ p: number | null;
81
+ }[] | null | undefined;
50
82
  }, import('yup').AnyObject, {
51
83
  reactiveCapabilityCurveChoice: undefined;
52
84
  minimumReactivePower: undefined;
53
85
  maximumReactivePower: undefined;
86
+ reactiveCapabilityCurveTable: "";
54
87
  }, "">;
55
88
  };
@@ -1,5 +1,5 @@
1
1
  import { object, number, string } from "yup";
2
- import { getRowEmptyFormData, getReactiveCapabilityCurveValidationSchema } from "./reactiveCapabilityCurve/reactiveCapability.utils.js";
2
+ import { getRowEmptyFormData, getReactiveCapabilityCurveValidationSchemaArray } from "./reactiveCapabilityCurve/reactiveCapability.utils.js";
3
3
  import { FieldConstants } from "../../../../utils/constants/fieldConstants.js";
4
4
  import { YUP_REQUIRED } from "../../../../utils/constants/translationKeys.js";
5
5
  import "../../../../utils/conversionUtils.js";
@@ -11,6 +11,20 @@ const REACTIVE_LIMIT_TYPES = [
11
11
  { id: "MINMAX", label: "ReactiveLimitsKindMinMax" },
12
12
  { id: "CURVE", label: "ReactiveLimitsKindCurve" }
13
13
  ];
14
+ const getReactiveLimitsFormDataProps = ({
15
+ reactiveCapabilityCurveChoice,
16
+ minimumReactivePower,
17
+ maximumReactivePower,
18
+ reactiveCapabilityCurvePoints
19
+ }) => ({
20
+ [FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE]: reactiveCapabilityCurveChoice,
21
+ [FieldConstants.MINIMUM_REACTIVE_POWER]: minimumReactivePower ?? null,
22
+ [FieldConstants.MAXIMUM_REACTIVE_POWER]: maximumReactivePower ?? null,
23
+ [FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE]: reactiveCapabilityCurvePoints ?? [
24
+ getRowEmptyFormData(),
25
+ getRowEmptyFormData()
26
+ ]
27
+ });
14
28
  const getReactiveLimitsFormData = ({
15
29
  id = FieldConstants.REACTIVE_LIMITS,
16
30
  reactiveCapabilityCurveChoice,
@@ -18,49 +32,69 @@ const getReactiveLimitsFormData = ({
18
32
  maximumReactivePower,
19
33
  reactiveCapabilityCurvePoints
20
34
  }) => ({
21
- [id]: {
22
- [FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE]: reactiveCapabilityCurveChoice,
23
- [FieldConstants.MINIMUM_REACTIVE_POWER]: minimumReactivePower ?? null,
24
- [FieldConstants.MAXIMUM_REACTIVE_POWER]: maximumReactivePower ?? null,
25
- [FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE]: reactiveCapabilityCurvePoints ?? [
26
- getRowEmptyFormData(),
27
- getRowEmptyFormData()
28
- ]
29
- }
35
+ [id]: getReactiveLimitsFormDataProps({
36
+ reactiveCapabilityCurveChoice,
37
+ minimumReactivePower,
38
+ maximumReactivePower,
39
+ reactiveCapabilityCurvePoints
40
+ })
41
+ });
42
+ const getReactiveLimitsEmptyFormDataProps = () => ({
43
+ [FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE]: "MINMAX",
44
+ [FieldConstants.MINIMUM_REACTIVE_POWER]: null,
45
+ [FieldConstants.MAXIMUM_REACTIVE_POWER]: null,
46
+ [FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE]: [getRowEmptyFormData(), getRowEmptyFormData()]
30
47
  });
31
48
  const getReactiveLimitsEmptyFormData = (id = FieldConstants.REACTIVE_LIMITS) => ({
32
- [id]: {
33
- [FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE]: "MINMAX",
34
- [FieldConstants.MINIMUM_REACTIVE_POWER]: null,
35
- [FieldConstants.MAXIMUM_REACTIVE_POWER]: null,
36
- [FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE]: [getRowEmptyFormData(), getRowEmptyFormData()]
37
- }
49
+ [id]: getReactiveLimitsEmptyFormDataProps()
50
+ });
51
+ const getReactiveLimitsValidationSchema = (isEquipmentModification = false, positiveAndNegativePExist = false) => object().shape({
52
+ [FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE]: string().nullable().required(YUP_REQUIRED),
53
+ [FieldConstants.MINIMUM_REACTIVE_POWER]: number().nullable().test(
54
+ "min-reactive-power-required",
55
+ "MinReactivePowerRequired",
56
+ function validateMinReactivePowerRequired(value) {
57
+ const { reactiveCapabilityCurveChoice, maximumReactivePower } = this.parent;
58
+ if (reactiveCapabilityCurveChoice === "MINMAX" && !isEquipmentModification && maximumReactivePower != null && value == null) {
59
+ return false;
60
+ }
61
+ return true;
62
+ }
63
+ ).test("min-less-than-max", "ReactiveLimitsMinMaxInvalid", function checkMinLessThanMax(value) {
64
+ const { reactiveCapabilityCurveChoice, maximumReactivePower } = this.parent;
65
+ if (reactiveCapabilityCurveChoice === "MINMAX" && value != null && maximumReactivePower != null) {
66
+ return value <= maximumReactivePower;
67
+ }
68
+ return true;
69
+ }),
70
+ [FieldConstants.MAXIMUM_REACTIVE_POWER]: number().nullable().test(
71
+ "max-reactive-power-required",
72
+ "MaxReactivePowerRequired",
73
+ function validateMaxReactivePowerRequired(value) {
74
+ const { reactiveCapabilityCurveChoice, minimumReactivePower } = this.parent;
75
+ if (reactiveCapabilityCurveChoice === "MINMAX" && !isEquipmentModification && minimumReactivePower != null && value == null) {
76
+ return false;
77
+ }
78
+ return true;
79
+ }
80
+ ).test("max-greater-than-min", "ReactiveLimitsMinMaxInvalid", function checkMaxGreaterThanMin(value) {
81
+ const { reactiveCapabilityCurveChoice, minimumReactivePower } = this.parent;
82
+ if (reactiveCapabilityCurveChoice === "MINMAX" && value != null && minimumReactivePower != null) {
83
+ return value >= minimumReactivePower;
84
+ }
85
+ return true;
86
+ }),
87
+ [FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE]: getReactiveCapabilityCurveValidationSchemaArray(positiveAndNegativePExist)
38
88
  });
39
- const getReactiveLimitsValidationSchema = (isEquipmentModification = false, positiveAndNegativePExist = false) => object().shape(
40
- {
41
- [FieldConstants.REACTIVE_CAPABILITY_CURVE_CHOICE]: string().nullable().required(YUP_REQUIRED),
42
- [FieldConstants.MINIMUM_REACTIVE_POWER]: number().nullable().when([FieldConstants.MAXIMUM_REACTIVE_POWER], {
43
- is: (maximumReactivePower) => !isEquipmentModification && maximumReactivePower != null,
44
- then: (schema) => schema.required(YUP_REQUIRED)
45
- }),
46
- [FieldConstants.MAXIMUM_REACTIVE_POWER]: number().nullable().when([FieldConstants.MINIMUM_REACTIVE_POWER], {
47
- is: (minimumReactivePower) => !isEquipmentModification && minimumReactivePower != null,
48
- then: (schema) => schema.required(YUP_REQUIRED)
49
- }),
50
- ...getReactiveCapabilityCurveValidationSchema(
51
- FieldConstants.REACTIVE_CAPABILITY_CURVE_TABLE,
52
- positiveAndNegativePExist
53
- )
54
- },
55
- [FieldConstants.MAXIMUM_REACTIVE_POWER, FieldConstants.MINIMUM_REACTIVE_POWER]
56
- );
57
89
  const getReactiveLimitsSchema = (isEquipmentModification = false, positiveAndNegativePExist = false, id = FieldConstants.REACTIVE_LIMITS) => ({
58
90
  [id]: getReactiveLimitsValidationSchema(isEquipmentModification, positiveAndNegativePExist)
59
91
  });
60
92
  export {
61
93
  REACTIVE_LIMIT_TYPES,
62
94
  getReactiveLimitsEmptyFormData,
95
+ getReactiveLimitsEmptyFormDataProps,
63
96
  getReactiveLimitsFormData,
97
+ getReactiveLimitsFormDataProps,
64
98
  getReactiveLimitsSchema,
65
99
  getReactiveLimitsValidationSchema
66
100
  };
@@ -12,3 +12,4 @@ export * from './voltageLevel';
12
12
  export * from './load';
13
13
  export * from './by-filter';
14
14
  export * from './generator';
15
+ export * from './battery';
@@ -18,10 +18,10 @@ import { getActivePowerControlEmptyFormData, getActivePowerControlSchema } from
18
18
  import { ActivePowerControlForm } from "./common/activePowerControl/ActivePowerControlForm.js";
19
19
  import { getShortCircuitEmptyFormData, getShortCircuitFormData, getShortCircuitFormSchema } from "./common/shortCircuit/shortCircuitForm.utils.js";
20
20
  import { ShortCircuitForm } from "./common/shortCircuit/ShortCircuitForm.js";
21
- import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./common/reactiveLimits/reactiveCapabilityCurve/reactiveCapability.utils.js";
21
+ import { INSERT, REMOVE, getReactiveCapabilityCurveValidationSchema, getReactiveCapabilityCurveValidationSchemaArray, getRowEmptyFormData, setCurrentReactiveCapabilityCurveTable, setSelectedReactiveLimits, toReactiveCapabilityCurveChoiceForGeneratorCreation, toReactiveCapabilityCurveChoiceForGeneratorModification } from "./common/reactiveLimits/reactiveCapabilityCurve/reactiveCapability.utils.js";
22
22
  import { ReactiveCapabilityCurveRowForm } from "./common/reactiveLimits/reactiveCapabilityCurve/ReactiveCapabilityCurveRowForm.js";
23
23
  import { ReactiveCapabilityCurveTableForm } from "./common/reactiveLimits/reactiveCapabilityCurve/ReactiveCapabilityCurveTableForm.js";
24
- import { REACTIVE_LIMIT_TYPES, getReactiveLimitsEmptyFormData, getReactiveLimitsFormData, getReactiveLimitsSchema, getReactiveLimitsValidationSchema } from "./common/reactiveLimits/reactiveLimits.utils.js";
24
+ import { REACTIVE_LIMIT_TYPES, getReactiveLimitsEmptyFormData, getReactiveLimitsEmptyFormDataProps, getReactiveLimitsFormData, getReactiveLimitsFormDataProps, getReactiveLimitsSchema, getReactiveLimitsValidationSchema } from "./common/reactiveLimits/reactiveLimits.utils.js";
25
25
  import { ReactiveLimitsForm } from "./common/reactiveLimits/ReactiveLimitsForm.js";
26
26
  import { getHvdcLccDeletionSchema } from "./equipmentDeletion/hvdcLccDeletion/hvdcLccDeletion.utils.js";
27
27
  import { ShuntCompensatorSelectionForm } from "./equipmentDeletion/hvdcLccDeletion/ShuntCompensatorSelectionForm.js";
@@ -88,9 +88,12 @@ import { EQUIPMENT_TYPE_ORDER, byFilterDeletionDtoToForm, byFilterDeletionFormSc
88
88
  import { ModificationByAssignmentForm } from "./by-filter/assignment/modification-by-assignment-form.js";
89
89
  import { emptyModificationByAssignmentFormData, modificationByAssignmentDtoToForm, modificationByAssignmentFormSchema, modificationByAssignmentFormToDto } from "./by-filter/assignment/modificationByAssignment.utils.js";
90
90
  import { DataType } from "./by-filter/assignment/assignment/assignment.type.js";
91
+ import { batteryCreationDtoToForm, batteryCreationEmptyFormData, batteryCreationFormSchema, batteryCreationFormToDto } from "./battery/creation/batteryCreation.utils.js";
92
+ import { BatteryCreationForm } from "./battery/creation/BatteryCreationForm.js";
91
93
  export {
92
94
  ActivePowerControlForm,
93
95
  DataType as AssignmentDataType,
96
+ BatteryCreationForm,
94
97
  BranchActiveReactivePowerMeasurementsForm,
95
98
  BranchConnectivityForm,
96
99
  ByFilterDeletionForm,
@@ -126,6 +129,10 @@ export {
126
129
  VoltageLevelConnectivityForm,
127
130
  VoltageLevelCreationForm,
128
131
  VoltageLevelModificationForm,
132
+ batteryCreationDtoToForm,
133
+ batteryCreationEmptyFormData,
134
+ batteryCreationFormSchema,
135
+ batteryCreationFormToDto,
129
136
  buildNewBusbarSections,
130
137
  byFilterDeletionDtoToForm,
131
138
  byFilterDeletionFormSchema,
@@ -186,8 +193,11 @@ export {
186
193
  getPropertiesFromModification,
187
194
  getPropertyValue,
188
195
  getReactiveCapabilityCurveValidationSchema,
196
+ getReactiveCapabilityCurveValidationSchemaArray,
189
197
  getReactiveLimitsEmptyFormData,
198
+ getReactiveLimitsEmptyFormDataProps,
190
199
  getReactiveLimitsFormData,
200
+ getReactiveLimitsFormDataProps,
191
201
  getReactiveLimitsSchema,
192
202
  getReactiveLimitsValidationSchema,
193
203
  getReactivePowerSetPointSchema,
@@ -1,6 +1,6 @@
1
1
  import { FieldValues } from 'react-hook-form';
2
2
  import { default as yup } from '../../../../utils/yupConfig';
3
- import { ContingencyListsInfos } from './types';
3
+ import { ContingencyListsInfosEnriched } from './types';
4
4
  import { DndColumn } from '../../../dnd-table';
5
5
  export declare const COLUMNS_DEFINITIONS_CONTINGENCY_LISTS_INFOS: DndColumn[];
6
6
  export declare const getContingencyListsInfosFormSchema: () => yup.ObjectSchema<{
@@ -15,7 +15,7 @@ export declare const getContingencyListsInfosFormSchema: () => yup.ObjectSchema<
15
15
  }, yup.AnyObject, {
16
16
  contingencyListsInfos: "";
17
17
  }, "">;
18
- export declare const toFormValuesContingencyListsInfos: (contingencyListsInfos: ContingencyListsInfos[]) => {
18
+ export declare const toFormValuesContingencyListsInfos: (contingencyListsInfos: ContingencyListsInfosEnriched[]) => {
19
19
  contingencyListsInfos: {
20
20
  contingencyLists: {
21
21
  name: string;