@gridsuite/commons-ui 0.193.0 → 0.195.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 (112) hide show
  1. package/dist/components/directoryItemSelector/DirectoryItemSelector.js +0 -1
  2. package/dist/components/dnd-table-v2/deletable-table-row.d.ts +7 -0
  3. package/dist/components/dnd-table-v2/deletable-table-row.js +37 -0
  4. package/dist/components/dnd-table-v2/dnd-table-add-rows-dialog.d.ts +13 -0
  5. package/dist/components/dnd-table-v2/dnd-table-add-rows-dialog.js +75 -0
  6. package/dist/components/dnd-table-v2/dnd-table-bottom-left-buttons.d.ts +17 -0
  7. package/dist/components/dnd-table-v2/dnd-table-bottom-left-buttons.js +48 -0
  8. package/dist/components/dnd-table-v2/dnd-table-bottom-right-buttons.d.ts +17 -0
  9. package/dist/components/dnd-table-v2/dnd-table-bottom-right-buttons.js +103 -0
  10. package/dist/components/dnd-table-v2/dnd-table-row.d.ts +23 -0
  11. package/dist/components/dnd-table-v2/dnd-table-row.js +183 -0
  12. package/dist/components/dnd-table-v2/dnd-table-utils.d.ts +2 -0
  13. package/dist/components/dnd-table-v2/dnd-table-utils.js +10 -0
  14. package/dist/components/dnd-table-v2/dnd-table.d.ts +32 -0
  15. package/dist/components/dnd-table-v2/dnd-table.js +381 -0
  16. package/dist/components/dnd-table-v2/dnd-table.type.d.ts +70 -0
  17. package/dist/components/dnd-table-v2/dnd-table.type.js +19 -0
  18. package/dist/components/dnd-table-v2/index.d.ts +12 -0
  19. package/dist/components/dnd-table-v2/index.js +16 -0
  20. package/dist/components/index.js +3 -8
  21. package/dist/components/inputs/reactHookForm/DirectoryItemsInput.d.ts +1 -2
  22. package/dist/components/inputs/reactHookForm/DirectoryItemsInput.js +2 -5
  23. package/dist/components/inputs/reactHookForm/booleans/BooleanInput.js +6 -4
  24. package/dist/components/inputs/reactQueryBuilder/OperatorSelector.js +0 -1
  25. package/dist/components/network-modifications/by-filter/assignment/assignment/assignment-form.js +72 -53
  26. package/dist/components/network-modifications/by-filter/assignment/assignment/assignment-utils.d.ts +1 -0
  27. package/dist/components/network-modifications/by-filter/assignment/assignment/assignment-utils.js +8 -5
  28. package/dist/components/network-modifications/by-filter/assignment/modificationByAssignment.utils.js +5 -5
  29. package/dist/components/parameters/common/contingency-table/columns-definitions.d.ts +4 -3
  30. package/dist/components/parameters/common/contingency-table/columns-definitions.js +23 -15
  31. package/dist/components/parameters/common/contingency-table/contingency-table.d.ts +2 -1
  32. package/dist/components/parameters/common/contingency-table/contingency-table.js +45 -44
  33. package/dist/components/parameters/common/contingency-table/index.js +2 -2
  34. package/dist/components/parameters/common/index.js +2 -2
  35. package/dist/components/parameters/common/parameter-field.js +2 -0
  36. package/dist/components/parameters/common/parameter-table/table-cell.js +1 -1
  37. package/dist/components/parameters/common/parameter-table-field/constants.d.ts +10 -0
  38. package/dist/components/parameters/common/parameter-table-field/constants.js +10 -0
  39. package/dist/components/parameters/common/{parameter-table → parameter-table-field}/index.d.ts +2 -3
  40. package/dist/components/parameters/common/parameter-table-field/index.js +9 -0
  41. package/dist/components/parameters/common/parameter-table-field/parameter-table-field.d.ts +11 -0
  42. package/dist/components/parameters/common/parameter-table-field/parameter-table-field.js +121 -0
  43. package/dist/components/parameters/common/parameters-edition-dialog-props.d.ts +1 -1
  44. package/dist/components/parameters/dynamic-margin-calculation/dynamic-margin-calculation-form.js +2 -0
  45. package/dist/components/parameters/dynamic-margin-calculation/dynamic-margin-calculation-inline.js +2 -0
  46. package/dist/components/parameters/dynamic-margin-calculation/loads-variations-parameters.js +7 -6
  47. package/dist/components/parameters/dynamic-margin-calculation/use-dynamic-margin-calculation-parameters-form.js +2 -0
  48. package/dist/components/parameters/dynamic-security-analysis/contingency-parameters.js +2 -0
  49. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis-inline.js +2 -0
  50. package/dist/components/parameters/dynamic-security-analysis/dynamic-security-analysis-parameters-form.js +2 -0
  51. package/dist/components/parameters/dynamic-security-analysis/use-dynamic-security-analysis-parameters-form.js +2 -0
  52. package/dist/components/parameters/dynamic-simulation/dynamic-simulation-inline.js +2 -0
  53. package/dist/components/parameters/dynamic-simulation/dynamic-simulation-parameters-form.js +2 -0
  54. package/dist/components/parameters/dynamic-simulation/mapping/mapping-parameters.js +0 -1
  55. package/dist/components/parameters/dynamic-simulation/use-dynamic-simulation-parameters-form.js +2 -0
  56. package/dist/components/parameters/index.js +3 -8
  57. package/dist/components/parameters/loadflow/load-flow-general-parameters.js +2 -0
  58. package/dist/components/parameters/loadflow/load-flow-parameters-content.js +2 -0
  59. package/dist/components/parameters/loadflow/load-flow-parameters-dialog.js +2 -0
  60. package/dist/components/parameters/loadflow/load-flow-parameters-header.js +2 -0
  61. package/dist/components/parameters/loadflow/load-flow-parameters-inline.js +3 -1
  62. package/dist/components/parameters/loadflow/load-flow-parameters-utils.js +2 -0
  63. package/dist/components/parameters/loadflow/use-load-flow-parameters-form.js +2 -0
  64. package/dist/components/parameters/network-visualizations/map-parameters.js +2 -0
  65. package/dist/components/parameters/network-visualizations/network-visualizations-form.js +2 -0
  66. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-inline.js +3 -1
  67. package/dist/components/parameters/network-visualizations/single-line-diagram-parameters.js +2 -0
  68. package/dist/components/parameters/pcc-min/pcc-min-parameters-form.js +2 -0
  69. package/dist/components/parameters/pcc-min/pcc-min-parameters-inline.js +3 -1
  70. package/dist/components/parameters/security-analysis/columns-definitions.js +2 -0
  71. package/dist/components/parameters/security-analysis/security-analysis-parameters-dialog.js +3 -1
  72. package/dist/components/parameters/security-analysis/security-analysis-parameters-form.js +5 -4
  73. package/dist/components/parameters/security-analysis/security-analysis-parameters-inline.js +2 -0
  74. package/dist/components/parameters/security-analysis/security-analysis-parameters-selector.js +2 -0
  75. package/dist/components/parameters/security-analysis/security-analysis-violations-hiding.js +2 -0
  76. package/dist/components/parameters/security-analysis/use-security-analysis-parameters-form.d.ts +1 -1
  77. package/dist/components/parameters/security-analysis/use-security-analysis-parameters-form.js +7 -3
  78. package/dist/components/parameters/sensi/columns-definitions.d.ts +7 -180
  79. package/dist/components/parameters/sensi/columns-definitions.js +81 -73
  80. package/dist/components/parameters/sensi/index.js +1 -6
  81. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-dialog.js +3 -1
  82. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-form.js +4 -2
  83. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-inline.js +2 -0
  84. package/dist/components/parameters/sensi/sensitivity-parameters-selector.js +52 -51
  85. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.d.ts +2 -2
  86. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.js +41 -61
  87. package/dist/components/parameters/sensi/utils.d.ts +4 -4
  88. package/dist/components/parameters/sensi/utils.js +8 -6
  89. package/dist/components/parameters/short-circuit/short-circuit-general-tab-panel.js +2 -0
  90. package/dist/components/parameters/short-circuit/short-circuit-parameters-content.js +2 -0
  91. package/dist/components/parameters/short-circuit/short-circuit-parameters-dialog.js +2 -0
  92. package/dist/components/parameters/short-circuit/short-circuit-parameters-inline.js +3 -1
  93. package/dist/components/parameters/short-circuit/short-circuit-parameters-utils.js +2 -0
  94. package/dist/components/parameters/short-circuit/short-circuit-power-electronics-tab-panel.js +2 -0
  95. package/dist/components/parameters/short-circuit/short-circuit-study-area-tab-panel.js +2 -0
  96. package/dist/components/parameters/short-circuit/use-short-circuit-parameters-form.js +2 -0
  97. package/dist/components/parameters/voltage-init/equipment-selection-parameters.js +2 -0
  98. package/dist/components/parameters/voltage-init/general-parameters.js +2 -0
  99. package/dist/components/parameters/voltage-init/voltage-init-parameters-form.js +2 -0
  100. package/dist/components/parameters/voltage-init/voltage-init-parameters-inline.js +3 -1
  101. package/dist/components/parameters/voltage-init/voltage-limits-parameters.js +17 -31
  102. package/dist/hooks/index.d.ts +0 -1
  103. package/dist/hooks/index.js +0 -2
  104. package/dist/index.js +3 -10
  105. package/package.json +1 -1
  106. package/dist/components/parameters/common/parameter-dnd-table-field.d.ts +0 -9
  107. package/dist/components/parameters/common/parameter-dnd-table-field.js +0 -86
  108. package/dist/components/parameters/common/parameter-table/index.js +0 -10
  109. package/dist/hooks/use-create-row-data.d.ts +0 -4
  110. package/dist/hooks/use-create-row-data.js +0 -19
  111. /package/dist/components/parameters/sensi/{sensitivity-Flow-parameters.d.ts → sensitivity-parameters-fields.d.ts} +0 -0
  112. /package/dist/components/parameters/sensi/{sensitivity-Flow-parameters.js → sensitivity-parameters-fields.js} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
- import { useState, useCallback, useEffect } from "react";
2
+ import { useState, useCallback, useMemo, useEffect } from "react";
3
3
  import { useIntl, FormattedMessage } from "react-intl";
4
4
  import { Grid, Box, Tabs, Tab, Card, CardContent } from "@mui/material";
5
- import { SensiTabValues, SensiBranchesTabValues, SensiInjectionsSet, SensiInjection, SensiHvdcs, SensiPsts, SensiNodes, COLUMNS_DEFINITIONS_INJECTIONS_SET, COLUMNS_DEFINITIONS_INJECTIONS, COLUMNS_DEFINITIONS_HVDCS, COLUMNS_DEFINITIONS_PSTS, COLUMNS_DEFINITIONS_NODES } from "./columns-definitions.js";
5
+ import { SensiTabValues, SensiBranchesTabValues, COLUMNS_DEFINITIONS_INJECTIONS_SET, COLUMNS_DEFINITIONS_INJECTIONS, COLUMNS_DEFINITIONS_HVDCS, COLUMNS_DEFINITIONS_PSTS, COLUMNS_DEFINITIONS_NODES } from "./columns-definitions.js";
6
6
  import { TabPanel } from "../common/parameters.js";
7
7
  import "../../../utils/conversionUtils.js";
8
8
  import "../../../utils/types/equipmentType.js";
@@ -12,7 +12,6 @@ import "localized-countries";
12
12
  import "localized-countries/data/fr";
13
13
  import "localized-countries/data/en";
14
14
  import "notistack";
15
- import { useCreateRowData } from "../../../hooks/use-create-row-data.js";
16
15
  import "react-hook-form";
17
16
  import "../../inputs/reactHookForm/provider/CustomFormProvider.js";
18
17
  import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
@@ -39,12 +38,12 @@ import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
39
38
  import "react-querybuilder";
40
39
  import "../common/widget/parameter-line-slider.js";
41
40
  import "../common/limitreductions/columns-definitions.js";
42
- import { ParameterTable } from "../common/parameter-table/parameter-table.js";
41
+ import { ParameterTableField } from "../common/parameter-table-field/parameter-table-field.js";
43
42
  import "../common/contingency-table/columns-definitions.js";
44
43
  import "@hookform/resolvers/yup";
45
44
  import "../../filter/HeaderFilterForm.js";
46
45
  import { SensitivityAnalysisParametersFactorCount } from "./sensitivity-analysis-parameters-factor-count.js";
47
- import { MAX_VARIABLES_COUNT, MAX_RESULTS_COUNT } from "./constants.js";
46
+ import { MAX_VARIABLES_COUNT, MAX_RESULTS_COUNT, PARAMETER_SENSI_INJECTIONS_SET, PARAMETER_SENSI_INJECTION, PARAMETER_SENSI_HVDC, PARAMETER_SENSI_PST, PARAMETER_SENSI_NODES } from "./constants.js";
48
47
  import { isValidSensiParameterRow } from "./utils.js";
49
48
  import { BuildStatusChip } from "../../node/build-status-chip.js";
50
49
  const styles = {
@@ -88,23 +87,37 @@ function SensitivityParametersSelector({
88
87
  },
89
88
  ...isDeveloperMode && [{ label: "SensitivityNodes" }] || []
90
89
  ];
91
- const [rowDataInjectionsSet, useFieldArrayOutputInjectionsSet] = useCreateRowData(SensiInjectionsSet);
92
- const [rowDataInjections, useFieldArrayOutputInjections] = useCreateRowData(SensiInjection);
93
- const [rowDataHvdc, useFieldArrayOutputHvdc] = useCreateRowData(SensiHvdcs);
94
- const [rowDataPst, useFieldArrayOutputPst] = useCreateRowData(SensiPsts);
95
- const [rowDataNodes, useFieldArrayOutputNodes] = useCreateRowData(SensiNodes);
96
90
  const getColumnsDefinition = useCallback(
97
91
  (sensiColumns) => {
98
92
  if (sensiColumns) {
99
- return sensiColumns.map((column) => ({
100
- ...column,
101
- label: intl.formatMessage({ id: column.label })
102
- }));
93
+ return sensiColumns.map(
94
+ (column) => ({
95
+ ...column,
96
+ label: intl.formatMessage({ id: column.label })
97
+ })
98
+ );
103
99
  }
104
100
  return [];
105
101
  },
106
102
  [intl]
107
103
  );
104
+ const columnsDefinitionInjectionsSet = useMemo(
105
+ () => getColumnsDefinition(COLUMNS_DEFINITIONS_INJECTIONS_SET),
106
+ [getColumnsDefinition]
107
+ );
108
+ const columnsDefinitionInjections = useMemo(
109
+ () => getColumnsDefinition(COLUMNS_DEFINITIONS_INJECTIONS),
110
+ [getColumnsDefinition]
111
+ );
112
+ const columnsDefinitionHvdc = useMemo(
113
+ () => getColumnsDefinition(COLUMNS_DEFINITIONS_HVDCS),
114
+ [getColumnsDefinition]
115
+ );
116
+ const columnsDefinitionPst = useMemo(() => getColumnsDefinition(COLUMNS_DEFINITIONS_PSTS), [getColumnsDefinition]);
117
+ const columnsDefinitionNodes = useMemo(
118
+ () => getColumnsDefinition(COLUMNS_DEFINITIONS_NODES),
119
+ [getColumnsDefinition]
120
+ );
108
121
  useEffect(() => {
109
122
  if (!isDeveloperMode) {
110
123
  setTabValue(SensiTabValues.SensitivityBranches);
@@ -193,66 +206,54 @@ function SensitivityParametersSelector({
193
206
  subTab.label
194
207
  )) }),
195
208
  /* @__PURE__ */ jsx(TabPanel, { index: SensiBranchesTabValues.SensiInjectionsSet, value: subTabValue, children: /* @__PURE__ */ jsx(
196
- ParameterTable,
209
+ ParameterTableField,
197
210
  {
198
- arrayFormName: `${SensiInjectionsSet.name}`,
199
- columnsDefinition: getColumnsDefinition(
200
- COLUMNS_DEFINITIONS_INJECTIONS_SET
201
- ),
202
- useFieldArrayOutput: useFieldArrayOutputInjectionsSet,
203
- createRows: rowDataInjectionsSet,
211
+ name: PARAMETER_SENSI_INJECTIONS_SET,
212
+ columnsDefinition: columnsDefinitionInjectionsSet,
204
213
  tableHeight: 300,
205
- onFormChanged,
206
- isValidParameterRow: isValidSensiParameterRow
214
+ onChange: onFormChanged,
215
+ isValidRow: isValidSensiParameterRow
207
216
  }
208
217
  ) }),
209
218
  /* @__PURE__ */ jsx(TabPanel, { index: SensiBranchesTabValues.SensiInjection, value: subTabValue, children: /* @__PURE__ */ jsx(
210
- ParameterTable,
219
+ ParameterTableField,
211
220
  {
212
- arrayFormName: `${SensiInjection.name}`,
213
- columnsDefinition: getColumnsDefinition(COLUMNS_DEFINITIONS_INJECTIONS),
214
- useFieldArrayOutput: useFieldArrayOutputInjections,
215
- createRows: rowDataInjections,
221
+ name: PARAMETER_SENSI_INJECTION,
222
+ columnsDefinition: columnsDefinitionInjections,
216
223
  tableHeight: 300,
217
- onFormChanged,
218
- isValidParameterRow: isValidSensiParameterRow
224
+ onChange: onFormChanged,
225
+ isValidRow: isValidSensiParameterRow
219
226
  }
220
227
  ) }),
221
228
  /* @__PURE__ */ jsx(TabPanel, { index: SensiBranchesTabValues.SensiHVDC, value: subTabValue, children: /* @__PURE__ */ jsx(
222
- ParameterTable,
229
+ ParameterTableField,
223
230
  {
224
- arrayFormName: `${SensiHvdcs.name}`,
225
- columnsDefinition: getColumnsDefinition(COLUMNS_DEFINITIONS_HVDCS),
226
- useFieldArrayOutput: useFieldArrayOutputHvdc,
227
- createRows: rowDataHvdc,
231
+ name: PARAMETER_SENSI_HVDC,
232
+ columnsDefinition: columnsDefinitionHvdc,
228
233
  tableHeight: 300,
229
- onFormChanged,
230
- isValidParameterRow: isValidSensiParameterRow
234
+ onChange: onFormChanged,
235
+ isValidRow: isValidSensiParameterRow
231
236
  }
232
237
  ) }),
233
238
  /* @__PURE__ */ jsx(TabPanel, { index: SensiBranchesTabValues.SensiPST, value: subTabValue, children: /* @__PURE__ */ jsx(
234
- ParameterTable,
239
+ ParameterTableField,
235
240
  {
236
- arrayFormName: `${SensiPsts.name}`,
237
- columnsDefinition: getColumnsDefinition(COLUMNS_DEFINITIONS_PSTS),
238
- useFieldArrayOutput: useFieldArrayOutputPst,
239
- createRows: rowDataPst,
241
+ name: PARAMETER_SENSI_PST,
242
+ columnsDefinition: columnsDefinitionPst,
240
243
  tableHeight: 300,
241
- onFormChanged,
242
- isValidParameterRow: isValidSensiParameterRow
244
+ onChange: onFormChanged,
245
+ isValidRow: isValidSensiParameterRow
243
246
  }
244
247
  ) })
245
248
  ] }),
246
249
  tabValue === SensiTabValues.SensitivityNodes && /* @__PURE__ */ jsx(
247
- ParameterTable,
250
+ ParameterTableField,
248
251
  {
249
- arrayFormName: `${SensiNodes.name}`,
250
- columnsDefinition: getColumnsDefinition(COLUMNS_DEFINITIONS_NODES),
251
- useFieldArrayOutput: useFieldArrayOutputNodes,
252
- createRows: rowDataNodes,
252
+ name: PARAMETER_SENSI_NODES,
253
+ columnsDefinition: columnsDefinitionNodes,
253
254
  tableHeight: 367,
254
- onFormChanged,
255
- isValidParameterRow: isValidSensiParameterRow
255
+ onChange: onFormChanged,
256
+ isValidRow: isValidSensiParameterRow
256
257
  }
257
258
  )
258
259
  ] }, tab.label))
@@ -1,7 +1,7 @@
1
1
  import { UseFormReturn } from 'react-hook-form';
2
2
  import { ObjectSchema } from 'yup';
3
3
  import { UUID } from 'node:crypto';
4
- import { ComputingType } from '../common';
4
+ import { ComputingType } from '../common/computing-type';
5
5
  import { FactorsCount, SensitivityAnalysisParametersInfos, UseParametersBackendReturnProps } from '../../../utils';
6
6
  import { BuildStatus } from '../../node';
7
7
  export interface UseSensitivityAnalysisParametersReturn {
@@ -14,7 +14,7 @@ export interface UseSensitivityAnalysisParametersReturn {
14
14
  fromSensitivityAnalysisParamsDataToFormValues: (parameters: SensitivityAnalysisParametersInfos) => any;
15
15
  formatNewParams: (formData: Record<string, any>) => SensitivityAnalysisParametersInfos;
16
16
  params: SensitivityAnalysisParametersInfos | null;
17
- paramsLoaded: boolean;
17
+ paramsFormInitialized: boolean;
18
18
  isStudyLinked: boolean;
19
19
  onSaveInline: (formData: Record<string, any>) => void;
20
20
  onSaveDialog: (formData: Record<string, any>) => void;
@@ -1,29 +1,36 @@
1
1
  import { useForm } from "react-hook-form";
2
2
  import { yupResolver } from "@hookform/resolvers/yup";
3
3
  import { useState, useMemo, useCallback, useEffect } from "react";
4
- import { PROVIDER, CONTINGENCIES } from "../common/constants.js";
5
- import "react/jsx-runtime";
6
- import "@mui/material";
7
- import "react-intl";
8
4
  import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
9
5
  import "../../../utils/conversionUtils.js";
10
6
  import { snackWithFallback } from "../../../utils/error.js";
11
7
  import { ElementType } from "../../../utils/types/elementType.js";
12
8
  import "../../../utils/types/equipmentType.js";
9
+ import "react/jsx-runtime";
13
10
  import "@mui/icons-material";
14
11
  import "../../../utils/yupConfig.js";
12
+ import { getFormSchema, getSensiNodesformatNewParams, getSensiPstformatNewParams, getSensiHvdcformatNewParams, getSensiInjectionsformatNewParams, getSensiInjectionsSetformatNewParams, filterSensiParameterRows } from "./utils.js";
13
+ import { DEFAULT_FACTOR_COUNT, PARAMETER_SENSI_NODES, PARAMETER_SENSI_PST, PARAMETER_SENSI_HVDC, PARAMETER_SENSI_INJECTION, PARAMETER_SENSI_INJECTIONS_SET, FLOW_VOLTAGE_SENSITIVITY_VALUE_THRESHOLD, ANGLE_FLOW_SENSITIVITY_VALUE_THRESHOLD, FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD, CONTAINER_NAME, CONTAINER_ID, EQUIPMENTS_IN_VOLTAGE_REGULATION, SUPERVISED_VOLTAGE_LEVELS, SENSITIVITY_TYPE, PSTS, MONITORED_BRANCHES, HVDC_LINES, INJECTIONS, DISTRIBUTION_TYPE, MAX_RESULTS_COUNT, MAX_VARIABLES_COUNT } from "./constants.js";
14
+ import { getSensitivityAnalysisFactorsCount, setSensitivityAnalysisParameters } from "../../../services/sensitivity-analysis.js";
15
15
  import { DEFAULT_TIMEOUT_MS, IGNORE_SIGNAL } from "../../../services/utils.js";
16
16
  import { updateParameter } from "../../../services/explore.js";
17
+ import "react-intl";
18
+ import "@mui/material";
17
19
  import "localized-countries";
18
20
  import "localized-countries/data/fr";
19
21
  import "localized-countries/data/en";
20
22
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
21
23
  import "../../inputs/reactHookForm/provider/CustomFormProvider.js";
22
- import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
23
- import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
24
- import "../../treeViewFinder/TreeViewFinder.js";
25
- import "../../overflowableText/OverflowableText.js";
26
24
  import "yup";
25
+ import "../../filter/HeaderFilterForm.js";
26
+ import { getNameElementEditorEmptyFormData } from "../common/name-element-editor/name-element-editor-utils.js";
27
+ import { BuildStatus } from "../../node/constant.js";
28
+ import { PROVIDER, CONTINGENCIES } from "../common/constants.js";
29
+ import { ACTIVATED } from "../common/parameter-table-field/constants.js";
30
+ import "react-dom";
31
+ import "@hello-pangea/dnd";
32
+ import "../../overflowableText/OverflowableText.js";
33
+ import "../../treeViewFinder/TreeViewFinder.js";
27
34
  import "../../inputs/reactHookForm/agGridTable/BottomRightButtons.js";
28
35
  import "../../customAGGrid/customAggrid.js";
29
36
  import "ag-grid-community";
@@ -34,6 +41,7 @@ import "@material-symbols/svg-400/outlined/left_panel_open.svg?react";
34
41
  import "@material-symbols/svg-400/outlined/arrows_output.svg?react";
35
42
  import "@material-symbols/svg-400/outlined/left_panel_close.svg?react";
36
43
  import "@material-symbols/svg-400/outlined/add_notes.svg?react";
44
+ import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
37
45
  import "../../inputs/reactHookForm/expandableInput/ExpandableInput.js";
38
46
  import "@react-querybuilder/material";
39
47
  import "../../filter/expert/expertFilterConstants.js";
@@ -41,16 +49,6 @@ import "../../inputs/reactQueryBuilder/CustomReactQueryBuilder.js";
41
49
  import "uuid";
42
50
  import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
43
51
  import "react-querybuilder";
44
- import "../common/widget/parameter-line-slider.js";
45
- import "../common/limitreductions/columns-definitions.js";
46
- import { ACTIVATED } from "../common/parameter-table/constants.js";
47
- import "../common/contingency-table/columns-definitions.js";
48
- import "../../filter/HeaderFilterForm.js";
49
- import { getNameElementEditorEmptyFormData } from "../common/name-element-editor/name-element-editor-utils.js";
50
- import { getFormSchema, getSensiNodesformatNewParams, getSensiPstformatNewParams, getSensiHvdcformatNewParams, getSensiInjectionsformatNewParams, getSensiInjectionsSetformatNewParams, filterSensiParameterRows } from "./utils.js";
51
- import { DEFAULT_FACTOR_COUNT, PARAMETER_SENSI_NODES, PARAMETER_SENSI_PST, PARAMETER_SENSI_HVDC, PARAMETER_SENSI_INJECTION, PARAMETER_SENSI_INJECTIONS_SET, FLOW_VOLTAGE_SENSITIVITY_VALUE_THRESHOLD, ANGLE_FLOW_SENSITIVITY_VALUE_THRESHOLD, FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD, CONTAINER_NAME, CONTAINER_ID, EQUIPMENTS_IN_VOLTAGE_REGULATION, SUPERVISED_VOLTAGE_LEVELS, SENSITIVITY_TYPE, PSTS, MONITORED_BRANCHES, HVDC_LINES, INJECTIONS, DISTRIBUTION_TYPE, MAX_RESULTS_COUNT, MAX_VARIABLES_COUNT } from "./constants.js";
52
- import { getSensitivityAnalysisFactorsCount, setSensitivityAnalysisParameters } from "../../../services/sensitivity-analysis.js";
53
- import { BuildStatus } from "../../node/constant.js";
54
52
  const useSensitivityAnalysisParametersForm = ({
55
53
  studyUuid,
56
54
  currentNodeUuid,
@@ -63,12 +61,11 @@ const useSensitivityAnalysisParametersForm = ({
63
61
  isRootNode
64
62
  }) => {
65
63
  const { providers, params, updateParameters } = parametersBackend;
66
- const [sensitivityAnalysisParams, setSensitivityAnalysisParams] = useState(params);
67
64
  const { snackError } = useSnackMessage();
68
65
  const [factorsCount, setFactorsCount] = useState(DEFAULT_FACTOR_COUNT);
66
+ const [factorCountRefreshTrigger, setFactorCountRefreshTrigger] = useState(0);
69
67
  const [isLoading, setIsLoading] = useState(false);
70
- const [isSubmitAction, setIsSubmitAction] = useState(false);
71
- const [factorCountParams, setFactorCountParams] = useState(null);
68
+ const [paramsFormInitialized, setParamsFormInitialized] = useState(false);
72
69
  const emptyFormData = useMemo(() => {
73
70
  return {
74
71
  ...getNameElementEditorEmptyFormData(name, description),
@@ -114,11 +111,17 @@ const useSensitivityAnalysisParametersForm = ({
114
111
  const resetFactorsCount = useCallback(() => {
115
112
  setIsLoading(false);
116
113
  setFactorsCount(DEFAULT_FACTOR_COUNT);
117
- setFactorCountParams(null);
118
114
  }, []);
119
- const updateFactorCount = useCallback(() => {
120
- if (!currentNodeUuid || !currentRootNetworkUuid) {
121
- return;
115
+ useEffect(() => {
116
+ let active = true;
117
+ if (!currentNodeUuid || !currentRootNetworkUuid || !paramsFormInitialized) {
118
+ return () => {
119
+ };
120
+ }
121
+ if (globalBuildStatus === BuildStatus.NOT_BUILT || globalBuildStatus === BuildStatus.BUILDING || isRootNode) {
122
+ setFactorsCount(DEFAULT_FACTOR_COUNT);
123
+ return () => {
124
+ };
122
125
  }
123
126
  const formValues = getValues();
124
127
  const filteredInjectionsSet = filterSensiParameterRows(formValues[PARAMETER_SENSI_INJECTIONS_SET]);
@@ -129,7 +132,8 @@ const useSensitivityAnalysisParametersForm = ({
129
132
  const hasAnyEntries = filteredInjectionsSet.length > 0 || filteredInjection.length > 0 || filteredHvdc.length > 0 || filteredPst.length > 0 || filteredNodes.length > 0;
130
133
  if (!hasAnyEntries) {
131
134
  resetFactorsCount();
132
- return;
135
+ return () => {
136
+ };
133
137
  }
134
138
  const filteredFormValues = {
135
139
  ...formValues,
@@ -139,19 +143,7 @@ const useSensitivityAnalysisParametersForm = ({
139
143
  [PARAMETER_SENSI_PST]: filteredPst,
140
144
  [PARAMETER_SENSI_NODES]: filteredNodes
141
145
  };
142
- setFactorCountParams(formatNewParams(filteredFormValues));
143
- }, [currentNodeUuid, currentRootNetworkUuid, formatNewParams, getValues, resetFactorsCount]);
144
- useEffect(() => {
145
- let active = true;
146
- if (!factorCountParams || !currentNodeUuid || !currentRootNetworkUuid) {
147
- return () => {
148
- };
149
- }
150
- if (globalBuildStatus === BuildStatus.NOT_BUILT || globalBuildStatus === BuildStatus.BUILDING || isRootNode) {
151
- setFactorsCount(DEFAULT_FACTOR_COUNT);
152
- return () => {
153
- };
154
- }
146
+ const factorCountParams = formatNewParams(filteredFormValues);
155
147
  let loadingTimeoutId;
156
148
  const controller = new AbortController();
157
149
  const abortSignal = AbortSignal.any([controller.signal, AbortSignal.timeout(DEFAULT_TIMEOUT_MS)]);
@@ -187,13 +179,17 @@ const useSensitivityAnalysisParametersForm = ({
187
179
  studyUuid,
188
180
  currentRootNetworkUuid,
189
181
  currentNodeUuid,
190
- factorCountParams,
182
+ factorCountRefreshTrigger,
183
+ getValues,
184
+ formatNewParams,
185
+ resetFactorsCount,
186
+ paramsFormInitialized,
191
187
  globalBuildStatus,
192
188
  isRootNode
193
189
  ]);
194
190
  const onFormChanged = useCallback(() => {
195
- updateFactorCount();
196
- }, [updateFactorCount]);
191
+ setFactorCountRefreshTrigger((prevState) => prevState + 1);
192
+ }, []);
197
193
  const fromSensitivityAnalysisParamsDataToFormValues = useCallback(
198
194
  (parameters) => {
199
195
  return {
@@ -325,16 +321,14 @@ const useSensitivityAnalysisParametersForm = ({
325
321
  );
326
322
  const onSaveInline = useCallback(
327
323
  (newParams) => {
328
- setIsSubmitAction(true);
329
324
  setSensitivityAnalysisParameters(studyUuid, formatNewParams(newParams)).then(() => {
330
325
  const formattedParams = formatNewParams(newParams);
331
- setSensitivityAnalysisParams(formattedParams);
332
326
  updateParameters(formattedParams);
333
327
  }).catch((error) => {
334
328
  snackWithFallback(snackError, error, { headerId: "updateSensitivityAnalysisParametersError" });
335
329
  });
336
330
  },
337
- [setSensitivityAnalysisParams, snackError, studyUuid, formatNewParams, updateParameters]
331
+ [snackError, studyUuid, formatNewParams, updateParameters]
338
332
  );
339
333
  const onSaveDialog = useCallback(
340
334
  (formData) => {
@@ -352,23 +346,10 @@ const useSensitivityAnalysisParametersForm = ({
352
346
  },
353
347
  [parametersUuid, formatNewParams, snackError]
354
348
  );
355
- useEffect(() => {
356
- if (sensitivityAnalysisParams) {
357
- reset(fromSensitivityAnalysisParamsDataToFormValues(sensitivityAnalysisParams));
358
- if (!isSubmitAction) {
359
- onFormChanged();
360
- }
361
- }
362
- }, [
363
- fromSensitivityAnalysisParamsDataToFormValues,
364
- sensitivityAnalysisParams,
365
- isSubmitAction,
366
- reset,
367
- onFormChanged
368
- ]);
369
349
  useEffect(() => {
370
350
  if (params) {
371
351
  reset(fromSensitivityAnalysisParamsDataToFormValues(params));
352
+ setParamsFormInitialized(true);
372
353
  }
373
354
  }, [params, reset, fromSensitivityAnalysisParamsDataToFormValues]);
374
355
  const isMaxResultsReached = useMemo(
@@ -379,7 +360,6 @@ const useSensitivityAnalysisParametersForm = ({
379
360
  () => factorsCount.variableCount !== null && factorsCount.variableCount > MAX_VARIABLES_COUNT,
380
361
  [factorsCount]
381
362
  );
382
- const paramsLoaded = useMemo(() => !!params, [params]);
383
363
  return {
384
364
  formMethods,
385
365
  formSchema,
@@ -387,7 +367,7 @@ const useSensitivityAnalysisParametersForm = ({
387
367
  fromSensitivityAnalysisParamsDataToFormValues,
388
368
  formatNewParams,
389
369
  params,
390
- paramsLoaded,
370
+ paramsFormInitialized,
391
371
  isStudyLinked,
392
372
  onSaveInline,
393
373
  onSaveDialog,
@@ -211,10 +211,10 @@ export declare const getSensiPstformatNewParams: (newParams: SensitivityAnalysis
211
211
  }[] | undefined;
212
212
  };
213
213
  export declare const hasVariables: (row: any) => boolean;
214
- export declare const hasMonitoredEquipments: (row: any) => boolean;
215
- export declare const isActivatedSensiParameterRow: (entry: FieldValues) => any;
216
- export declare const isValidSensiParameterRow: (entry: FieldValues) => any;
217
- export declare const filterSensiParameterRows: (entries?: FieldValues[]) => FieldValues[];
214
+ export declare const hasMonitoredEquipments: (row: FieldValues) => boolean;
215
+ export declare const isActivatedSensiParameterRow: (row: FieldValues) => any;
216
+ export declare const isValidSensiParameterRow: (row: FieldValues) => any;
217
+ export declare const filterSensiParameterRows: (rows?: FieldValues[]) => FieldValues[];
218
218
  export declare const formSchema: yup.ObjectSchema<{
219
219
  sensitivityNodes: {
220
220
  contingencies?: {
@@ -41,7 +41,9 @@ import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
41
41
  import "react-querybuilder";
42
42
  import "../common/widget/parameter-line-slider.js";
43
43
  import "../common/limitreductions/columns-definitions.js";
44
- import { ACTIVATED } from "../common/parameter-table/constants.js";
44
+ import { ACTIVATED } from "../common/parameter-table-field/constants.js";
45
+ import "react-dom";
46
+ import "@hello-pangea/dnd";
45
47
  import "../common/contingency-table/columns-definitions.js";
46
48
  import "@hookform/resolvers/yup";
47
49
  import "../../filter/HeaderFilterForm.js";
@@ -326,13 +328,13 @@ const hasVariables = (row) => {
326
328
  const hasMonitoredEquipments = (row) => {
327
329
  return row[MONITORED_BRANCHES]?.length > 0 || row[SUPERVISED_VOLTAGE_LEVELS]?.length > 0;
328
330
  };
329
- const isActivatedSensiParameterRow = (entry) => {
330
- return entry[ACTIVATED];
331
+ const isActivatedSensiParameterRow = (row) => {
332
+ return row[ACTIVATED];
331
333
  };
332
- const isValidSensiParameterRow = (entry) => {
333
- return isActivatedSensiParameterRow(entry) && hasMonitoredEquipments(entry) && hasVariables(entry);
334
+ const isValidSensiParameterRow = (row) => {
335
+ return isActivatedSensiParameterRow(row) && hasMonitoredEquipments(row) && hasVariables(row);
334
336
  };
335
- const filterSensiParameterRows = (entries) => (entries ?? []).filter((entry) => isValidSensiParameterRow(entry));
337
+ const filterSensiParameterRows = (rows) => (rows ?? []).filter((row) => isValidSensiParameterRow(row));
336
338
  const formSchema = yup.object().shape({
337
339
  [PROVIDER]: yup.string().required(),
338
340
  [FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD]: yup.number().required(),
@@ -48,6 +48,8 @@ import { TabPanel } from "../common/parameters.js";
48
48
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
49
49
  import "../common/widget/parameter-line-slider.js";
50
50
  import "../common/limitreductions/columns-definitions.js";
51
+ import "react-dom";
52
+ import "@hello-pangea/dnd";
51
53
  import "../common/contingency-table/columns-definitions.js";
52
54
  import "@hookform/resolvers/yup";
53
55
  import "../../filter/HeaderFilterForm.js";
@@ -42,6 +42,8 @@ import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
42
42
  import "react-querybuilder";
43
43
  import "../common/widget/parameter-line-slider.js";
44
44
  import "../common/limitreductions/columns-definitions.js";
45
+ import "react-dom";
46
+ import "@hello-pangea/dnd";
45
47
  import "../common/contingency-table/columns-definitions.js";
46
48
  import "@hookform/resolvers/yup";
47
49
  import "../../filter/HeaderFilterForm.js";
@@ -44,6 +44,8 @@ import { ShortCircuitParametersForm } from "./short-circuit-parameters-form.js";
44
44
  import { ComputingType } from "../common/computing-type.js";
45
45
  import "../common/widget/parameter-line-slider.js";
46
46
  import "../common/limitreductions/columns-definitions.js";
47
+ import "react-dom";
48
+ import "@hello-pangea/dnd";
47
49
  import "../common/contingency-table/columns-definitions.js";
48
50
  import "@hookform/resolvers/yup";
49
51
  function ShortCircuitParametersEditionDialog({
@@ -13,8 +13,8 @@ import "localized-countries";
13
13
  import "localized-countries/data/fr";
14
14
  import "localized-countries/data/en";
15
15
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
16
- import "react-hook-form";
17
16
  import "../../overflowableText/OverflowableText.js";
17
+ import "react-hook-form";
18
18
  import "../../inputs/reactHookForm/provider/CustomFormProvider.js";
19
19
  import { SubmitButton } from "../../inputs/reactHookForm/utils/SubmitButton.js";
20
20
  import "yup";
@@ -42,6 +42,8 @@ import { LabelledButton } from "../common/parameters.js";
42
42
  import { CreateParameterDialog } from "../common/parameters-creation-dialog.js";
43
43
  import "../common/widget/parameter-line-slider.js";
44
44
  import "../common/limitreductions/columns-definitions.js";
45
+ import "react-dom";
46
+ import "@hello-pangea/dnd";
45
47
  import "../common/contingency-table/columns-definitions.js";
46
48
  import "@hookform/resolvers/yup";
47
49
  import "../../filter/HeaderFilterForm.js";
@@ -41,6 +41,8 @@ import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
41
41
  import "react-querybuilder";
42
42
  import "../common/widget/parameter-line-slider.js";
43
43
  import "../common/limitreductions/columns-definitions.js";
44
+ import "react-dom";
45
+ import "@hello-pangea/dnd";
44
46
  import "../common/contingency-table/columns-definitions.js";
45
47
  import "@hookform/resolvers/yup";
46
48
  import "../../filter/HeaderFilterForm.js";
@@ -41,6 +41,8 @@ import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
41
41
  import "react-querybuilder";
42
42
  import "../common/widget/parameter-line-slider.js";
43
43
  import "../common/limitreductions/columns-definitions.js";
44
+ import "react-dom";
45
+ import "@hello-pangea/dnd";
44
46
  import "../common/contingency-table/columns-definitions.js";
45
47
  import "@hookform/resolvers/yup";
46
48
  import "../../filter/HeaderFilterForm.js";
@@ -45,6 +45,8 @@ import "../../inputs/reactQueryBuilder/PropertyValueEditor.js";
45
45
  import "react-querybuilder";
46
46
  import "../common/widget/parameter-line-slider.js";
47
47
  import "../common/limitreductions/columns-definitions.js";
48
+ import "react-dom";
49
+ import "@hello-pangea/dnd";
48
50
  import "../common/contingency-table/columns-definitions.js";
49
51
  import "@hookform/resolvers/yup";
50
52
  import "../../filter/HeaderFilterForm.js";
@@ -45,6 +45,8 @@ import { SPECIFIC_PARAMETERS, COMMON_PARAMETERS, VERSION_PARAMETER, PROVIDER } f
45
45
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
46
46
  import "../common/widget/parameter-line-slider.js";
47
47
  import "../common/limitreductions/columns-definitions.js";
48
+ import "react-dom";
49
+ import "@hello-pangea/dnd";
48
50
  import "../common/contingency-table/columns-definitions.js";
49
51
  import { ShortCircuitParametersTabValues, getDefaultShortCircuitSpecificParamsValues, getSpecificShortCircuitParametersFormSchema, getCommonShortCircuitParametersFormSchema, getShortCircuitSpecificParametersValues, formatShortCircuitSpecificParameters } from "./short-circuit-parameters-utils.js";
50
52
  const useShortCircuitParametersForm = ({
@@ -40,6 +40,8 @@ import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
40
40
  import { ParameterLineDirectoryItemsInput } from "../common/widget/parameter-line-directory-items-input.js";
41
41
  import "../common/widget/parameter-line-slider.js";
42
42
  import "../common/limitreductions/columns-definitions.js";
43
+ import "react-dom";
44
+ import "@hello-pangea/dnd";
43
45
  import "../common/contingency-table/columns-definitions.js";
44
46
  import "@hookform/resolvers/yup";
45
47
  import "../../filter/HeaderFilterForm.js";
@@ -42,6 +42,8 @@ import { ParameterFloat } from "../common/widget/parameter-float.js";
42
42
  import "../common/widget/parameter-line-slider.js";
43
43
  import { ParameterSwitch } from "../common/widget/parameter-switch.js";
44
44
  import "../common/limitreductions/columns-definitions.js";
45
+ import "react-dom";
46
+ import "@hello-pangea/dnd";
45
47
  import "../common/contingency-table/columns-definitions.js";
46
48
  import "@hookform/resolvers/yup";
47
49
  import "../../filter/HeaderFilterForm.js";
@@ -38,6 +38,8 @@ import { TabPanel } from "../common/parameters.js";
38
38
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
39
39
  import "../common/widget/parameter-line-slider.js";
40
40
  import "../common/limitreductions/columns-definitions.js";
41
+ import "react-dom";
42
+ import "@hello-pangea/dnd";
41
43
  import "../common/contingency-table/columns-definitions.js";
42
44
  import "@hookform/resolvers/yup";
43
45
  import "../../filter/HeaderFilterForm.js";
@@ -14,8 +14,8 @@ import "localized-countries";
14
14
  import "localized-countries/data/fr";
15
15
  import "localized-countries/data/en";
16
16
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
17
- import "react-hook-form";
18
17
  import "../../overflowableText/OverflowableText.js";
18
+ import "react-hook-form";
19
19
  import "../../inputs/reactHookForm/provider/CustomFormProvider.js";
20
20
  import { SubmitButton } from "../../inputs/reactHookForm/utils/SubmitButton.js";
21
21
  import "yup";
@@ -43,6 +43,8 @@ import { LabelledButton } from "../common/parameters.js";
43
43
  import { CreateParameterDialog } from "../common/parameters-creation-dialog.js";
44
44
  import "../common/widget/parameter-line-slider.js";
45
45
  import "../common/limitreductions/columns-definitions.js";
46
+ import "react-dom";
47
+ import "@hello-pangea/dnd";
46
48
  import "../common/contingency-table/columns-definitions.js";
47
49
  import "@hookform/resolvers/yup";
48
50
  import "../../filter/HeaderFilterForm.js";