@gridsuite/commons-ui 0.137.0 → 0.139.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 (88) hide show
  1. package/README.md +1 -1
  2. package/dist/components/cardErrorBoundary/CardErrorBoundary.d.ts +1 -1
  3. package/dist/components/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js +2 -6
  4. package/dist/components/directoryItemSelector/DirectoryItemSelector.js +2 -4
  5. package/dist/components/elementSearch/hooks/useElementSearch.js +2 -4
  6. package/dist/components/filter/FilterCreationDialog.js +3 -16
  7. package/dist/components/filter/expert/ExpertFilterEditionDialog.js +4 -23
  8. package/dist/components/filter/expert/expertFilterUtils.d.ts +0 -1
  9. package/dist/components/filter/expert/expertFilterUtils.js +0 -11
  10. package/dist/components/filter/expert/index.js +1 -2
  11. package/dist/components/filter/explicitNaming/ExplicitNamingFilterEditionDialog.js +3 -7
  12. package/dist/components/filter/explicitNaming/ExplicitNamingFilterForm.js +2 -4
  13. package/dist/components/filter/index.js +1 -2
  14. package/dist/components/filter/utils/filterApi.js +1 -1
  15. package/dist/components/index.js +4 -7
  16. package/dist/components/inputs/reactHookForm/DirectoryItemsInput.js +7 -4
  17. package/dist/components/inputs/reactHookForm/OverflowableChipWithHelperText.js +1 -1
  18. package/dist/components/parameters/common/parameters-creation-dialog.js +4 -9
  19. package/dist/components/parameters/common/widget/parameter-line-directory-items-input.d.ts +2 -1
  20. package/dist/components/parameters/common/widget/parameter-line-directory-items-input.js +4 -2
  21. package/dist/components/parameters/index.d.ts +1 -0
  22. package/dist/components/parameters/index.js +3 -5
  23. package/dist/components/parameters/loadflow/load-flow-parameters-inline.js +3 -6
  24. package/dist/components/parameters/loadflow/use-load-flow-parameters-form.js +3 -5
  25. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-inline.js +2 -5
  26. package/dist/components/parameters/network-visualizations/use-network-visualizations-parameters-form.js +4 -12
  27. package/dist/components/parameters/pcc-min/index.d.ts +7 -0
  28. package/dist/components/parameters/pcc-min/index.js +4 -0
  29. package/dist/components/parameters/pcc-min/pcc-min-form-utils.d.ts +4 -0
  30. package/dist/components/parameters/pcc-min/pcc-min-form-utils.js +54 -0
  31. package/dist/components/parameters/pcc-min/pcc-min-parameters-form.d.ts +29 -0
  32. package/dist/components/parameters/pcc-min/pcc-min-parameters-form.js +114 -0
  33. package/dist/components/parameters/pcc-min/pcc-min-parameters-inline.d.ts +7 -0
  34. package/dist/components/parameters/pcc-min/pcc-min-parameters-inline.js +98 -0
  35. package/dist/components/parameters/pcc-min/use-pcc-min-parameters-form.d.ts +19 -0
  36. package/dist/components/parameters/pcc-min/use-pcc-min-parameters-form.js +104 -0
  37. package/dist/components/parameters/security-analysis/security-analysis-parameters-inline.js +2 -5
  38. package/dist/components/parameters/security-analysis/use-security-analysis-parameters-form.js +3 -5
  39. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-inline.js +3 -9
  40. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.js +4 -12
  41. package/dist/components/parameters/sensi/utils.d.ts +1 -1
  42. package/dist/components/parameters/sensi/utils.js +1 -3
  43. package/dist/components/parameters/short-circuit/short-circuit-parameters-inline.js +2 -5
  44. package/dist/components/parameters/short-circuit/use-short-circuit-parameters-form.js +5 -16
  45. package/dist/components/parameters/voltage-init/constants.d.ts +0 -4
  46. package/dist/components/parameters/voltage-init/constants.js +0 -8
  47. package/dist/components/parameters/voltage-init/index.js +1 -5
  48. package/dist/components/parameters/voltage-init/use-voltage-init-parameters-form.js +6 -13
  49. package/dist/components/parameters/voltage-init/voltage-init-form-utils.js +2 -1
  50. package/dist/components/parameters/voltage-init/voltage-init-parameters-inline.js +3 -8
  51. package/dist/components/parameters/voltage-init/voltage-init.type.d.ts +2 -6
  52. package/dist/components/parameters/voltage-init/voltage-limits-parameters.js +2 -1
  53. package/dist/hooks/use-parameters-backend.js +10 -20
  54. package/dist/hooks/usePredefinedProperties.js +2 -3
  55. package/dist/hooks/useSnackMessage.d.ts +1 -2
  56. package/dist/index.js +16 -5
  57. package/dist/services/index.d.ts +1 -1
  58. package/dist/services/index.js +4 -4
  59. package/dist/services/pcc-min.d.ts +7 -0
  60. package/dist/services/pcc-min.js +25 -0
  61. package/dist/services/utils.d.ts +0 -1
  62. package/dist/services/utils.js +7 -10
  63. package/dist/translations/en/businessErrorsEn.d.ts +18 -0
  64. package/dist/translations/en/businessErrorsEn.js +19 -1
  65. package/dist/translations/en/equipmentShortEn.js +3 -3
  66. package/dist/translations/en/parameters.d.ts +3 -0
  67. package/dist/translations/en/parameters.js +4 -1
  68. package/dist/translations/fr/businessErrorsFr.d.ts +18 -0
  69. package/dist/translations/fr/businessErrorsFr.js +19 -1
  70. package/dist/translations/fr/equipmentShortFr.js +3 -3
  71. package/dist/translations/fr/parameters.d.ts +3 -0
  72. package/dist/translations/fr/parameters.js +4 -1
  73. package/dist/utils/constants/filterConstant.d.ts +9 -0
  74. package/dist/utils/constants/filterConstant.js +10 -0
  75. package/dist/utils/constants/index.d.ts +1 -0
  76. package/dist/utils/constants/index.js +5 -0
  77. package/dist/utils/error.d.ts +4 -0
  78. package/dist/utils/error.js +28 -0
  79. package/dist/utils/index.d.ts +2 -0
  80. package/dist/utils/index.js +14 -0
  81. package/dist/utils/labelUtils.d.ts +8 -0
  82. package/dist/utils/labelUtils.js +17 -0
  83. package/dist/{services/businessErrorCode.d.ts → utils/types/CustomError.d.ts} +3 -1
  84. package/dist/utils/types/CustomError.js +20 -0
  85. package/dist/utils/types/index.d.ts +1 -0
  86. package/dist/utils/types/index.js +3 -0
  87. package/package.json +1 -1
  88. package/dist/services/businessErrorCode.js +0 -10
package/README.md CHANGED
@@ -46,7 +46,7 @@ Only in this case, you need to follow the steps below:
46
46
  - [Make a release action](https://github.com/gridsuite/commons-ui/actions/workflows/release.yml)
47
47
  - In the 'run workflow' combobox select, let the branch on main
48
48
  - Enter the type of evolution (major | minor | patch)
49
- - Enter your NPM access token (it must be an **automation** access token to bypass 2FA, see the [access token documentation](https://docs.npmjs.com/creating-and-viewing-access-tokens) for details)
49
+ - Enter your NPM access token (check the **Bypass two-factor authentication** checkbox to bypass 2FA, see the [access token documentation](https://docs.npmjs.com/creating-and-viewing-access-tokens) for details)
50
50
  - Click 'run workflow'
51
51
 
52
52
  Otherwise ask someone who has the permission.
@@ -22,6 +22,6 @@ export declare class CardErrorBoundary extends Component<PropsWithChildren<{}>,
22
22
  componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
23
23
  private handleExpandClick;
24
24
  private handleReloadClick;
25
- render(): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<import('react').ReactNode> | null | undefined;
25
+ render(): string | number | boolean | Iterable<import('react').ReactNode> | import("react/jsx-runtime").JSX.Element | null | undefined;
26
26
  }
27
27
  export {};
@@ -9,6 +9,7 @@ import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
9
9
  import { CustomMuiDialog } from "../customMuiDialog/CustomMuiDialog.js";
10
10
  import { ExpandingTextField } from "../../inputs/reactHookForm/text/ExpandingTextField.js";
11
11
  import { MAX_CHAR_DESCRIPTION } from "../../../utils/constants/uiConstants.js";
12
+ import { snackWithFallback } from "../../../utils/error.js";
12
13
  import * as yup from "yup";
13
14
  const schema = yup.object().shape({
14
15
  [FieldConstants.DESCRIPTION]: yup.string().max(MAX_CHAR_DESCRIPTION, "descriptionLimitError")
@@ -40,12 +41,7 @@ function DescriptionModificationDialog({
40
41
  updateElement(elementUuid, {
41
42
  [FieldConstants.DESCRIPTION]: data[FieldConstants.DESCRIPTION]?.trim() ?? ""
42
43
  }).catch((error) => {
43
- if (error instanceof Object && "message" in error && typeof error.message === "string") {
44
- snackError({
45
- messageTxt: error.message,
46
- headerId: "descriptionModificationError"
47
- });
48
- }
44
+ snackWithFallback(snackError, error, { headerId: "descriptionModificationError" });
49
45
  });
50
46
  },
51
47
  [elementUuid, updateElement, snackError]
@@ -7,6 +7,7 @@ import { useSnackMessage } from "../../hooks/useSnackMessage.js";
7
7
  import { fetchElementsInfos } from "../../services/explore.js";
8
8
  import { fetchRootFolders, fetchDirectoryContent } from "../../services/directory.js";
9
9
  import { getExpansionPathsForSelected, fetchChildrenForExpandedNodes, initializeFromLastSelected, saveLastSelectedDirectoryFromNode } from "./utils.js";
10
+ import { snackWithFallback } from "../../utils/error.js";
10
11
  const styles = {
11
12
  icon: (theme) => ({
12
13
  marginRight: theme.spacing(1),
@@ -168,10 +169,7 @@ function DirectoryItemSelector({
168
169
  nodeMap.current = mdr;
169
170
  setData(convertRoots(nrs));
170
171
  }).catch((error) => {
171
- snackError({
172
- messageTxt: error.message,
173
- headerId: "DirectoryItemSelector"
174
- });
172
+ snackWithFallback(snackError, error, { headerId: "DirectoryItemSelector" });
175
173
  }).finally(() => {
176
174
  setIsRootsLoaded(true);
177
175
  });
@@ -1,6 +1,7 @@
1
1
  import { useState, useRef, useCallback } from "react";
2
2
  import { useDebounce } from "../../../hooks/useDebounce.js";
3
3
  import { useSnackMessage } from "../../../hooks/useSnackMessage.js";
4
+ import { snackWithFallback } from "../../../utils/error.js";
4
5
  const SEARCH_FETCH_TIMEOUT_MILLIS = 1e3;
5
6
  const useElementSearch = (props) => {
6
7
  const { fetchElements } = props;
@@ -32,10 +33,7 @@ const useElementSearch = (props) => {
32
33
  setElementsFound([]);
33
34
  setTotalElements(0);
34
35
  setIsLoading(false);
35
- snackError({
36
- messageTxt: error.message,
37
- headerId: "equipmentsSearchingError"
38
- });
36
+ snackWithFallback(snackError, error, { headerId: "equipmentsSearchingError" });
39
37
  }
40
38
  });
41
39
  },
@@ -14,10 +14,7 @@ import { FilterType } from "./constants/FilterConstants.js";
14
14
  import { MAX_CHAR_DESCRIPTION } from "../../utils/constants/uiConstants.js";
15
15
  import { EXPERT_FILTER_QUERY } from "./expert/expertFilterConstants.js";
16
16
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from "./explicitNaming/ExplicitNamingFilterConstants.js";
17
- import { CustomError } from "../../services/businessErrorCode.js";
18
- import "../../utils/conversionUtils.js";
19
- import "@mui/icons-material";
20
- import "../../utils/types/equipmentType.js";
17
+ import { snackWithFallback } from "../../utils/error.js";
21
18
  import * as yup from "yup";
22
19
  const emptyFormData = {
23
20
  [FieldConstants.NAME]: "",
@@ -63,9 +60,7 @@ function FilterCreationDialog({
63
60
  filterForm[FieldConstants.DESCRIPTION],
64
61
  null,
65
62
  (error) => {
66
- snackError({
67
- messageTxt: error.message
68
- });
63
+ snackWithFallback(snackError, error);
69
64
  },
70
65
  onClose,
71
66
  activeDirectory
@@ -81,15 +76,7 @@ function FilterCreationDialog({
81
76
  activeDirectory,
82
77
  onClose,
83
78
  (error) => {
84
- if (error instanceof CustomError && error.businessErrorCode != null) {
85
- snackError({
86
- messageId: error.businessErrorCode
87
- });
88
- } else {
89
- snackError({
90
- messageTxt: error.message
91
- });
92
- }
79
+ snackWithFallback(snackError, error);
93
80
  }
94
81
  );
95
82
  }
@@ -13,12 +13,8 @@ import { saveExpertFilter } from "../utils/filterApi.js";
13
13
  import { expertFilterSchema } from "./ExpertFilterForm.js";
14
14
  import { importExpertRules } from "./expertFilterUtils.js";
15
15
  import { HeaderFilterSchema } from "../HeaderFilterForm.js";
16
- import { catchErrorHandler } from "../../../services/utils.js";
17
- import "../../../utils/conversionUtils.js";
18
- import "@mui/icons-material";
19
- import "../../../utils/types/equipmentType.js";
20
- import { CustomError } from "../../../services/businessErrorCode.js";
21
16
  import { EXPERT_FILTER_QUERY } from "./expertFilterConstants.js";
17
+ import { snackWithFallback } from "../../../utils/error.js";
22
18
  import * as yup from "yup";
23
19
  const formSchema = yup.object().shape({
24
20
  ...HeaderFilterSchema,
@@ -61,13 +57,8 @@ function ExpertFilterEditionDialog({
61
57
  [EXPERT_FILTER_QUERY]: importExpertRules(response[EXPERT_FILTER_QUERY])
62
58
  });
63
59
  }).catch((error) => {
64
- catchErrorHandler(error, (message) => {
65
- setDataFetchStatus(FetchStatus.FETCH_ERROR);
66
- snackError({
67
- messageTxt: message,
68
- headerId: "cannotRetrieveFilter"
69
- });
70
- });
60
+ setDataFetchStatus(FetchStatus.FETCH_ERROR);
61
+ snackWithFallback(snackError, error, { headerId: "cannotRetrieveFilter" });
71
62
  });
72
63
  }
73
64
  }, [id, name, open, reset, snackError, getFilterById, description]);
@@ -83,17 +74,7 @@ function ExpertFilterEditionDialog({
83
74
  null,
84
75
  onClose,
85
76
  (error) => {
86
- if (error instanceof CustomError && error.businessErrorCode != null) {
87
- snackError({
88
- messageId: error.businessErrorCode,
89
- headerId: "cannotSaveFilter"
90
- });
91
- } else {
92
- snackError({
93
- messageTxt: error.message,
94
- headerId: "cannotSaveFilter"
95
- });
96
- }
77
+ snackWithFallback(snackError, error, { headerId: "cannotSaveFilter" });
97
78
  }
98
79
  );
99
80
  if (itemSelectionForCopy.sourceItemUuid === id) {
@@ -12,4 +12,3 @@ export declare const queryValidator: QueryValidator;
12
12
  export declare const testQuery: (check: string, query: RuleGroupTypeAny) => boolean;
13
13
  export declare function getNumberOfSiblings(path: number[], query: RuleGroupTypeAny): number;
14
14
  export declare function recursiveRemove(query: RuleGroupTypeAny, path: number[]): RuleGroupTypeAny;
15
- export declare function getFilterEquipmentTypeLabel(equipmentType: string | undefined): string;
@@ -4,10 +4,6 @@ import { DataType } from "./expertFilter.type.js";
4
4
  import { OPERATOR_OPTIONS, RULES, FIELDS_OPTIONS } from "./expertFilterConstants.js";
5
5
  import { isBlankOrEmpty, convertOutputValue, convertInputValue } from "../../../utils/conversionUtils.js";
6
6
  import { FieldType } from "../../../utils/types/fieldType.js";
7
- import "react/jsx-runtime";
8
- import "@mui/icons-material";
9
- import { ALL_EQUIPMENTS } from "../../../utils/types/equipmentType.js";
10
- import "../../../utils/yupConfig.js";
11
7
  const searchTree = (tree, key, value) => {
12
8
  const stack = Object.values(tree);
13
9
  while (stack.length) {
@@ -361,16 +357,9 @@ function recursiveRemove(query, path) {
361
357
  }
362
358
  return remove(query, path);
363
359
  }
364
- function getFilterEquipmentTypeLabel(equipmentType) {
365
- if (!equipmentType) {
366
- return "";
367
- }
368
- return ALL_EQUIPMENTS[equipmentType]?.label ?? "";
369
- }
370
360
  export {
371
361
  countRules,
372
362
  exportExpertRules,
373
- getFilterEquipmentTypeLabel,
374
363
  getNumberOfSiblings,
375
364
  getOperators,
376
365
  importExpertRules,
@@ -2,7 +2,7 @@ import { ExpertFilterEditionDialog } from "./ExpertFilterEditionDialog.js";
2
2
  import { ExpertFilterForm, expertFilterSchema, getExpertFilterEmptyFormData } from "./ExpertFilterForm.js";
3
3
  import { CombinatorType, DataType, OperatorType } from "./expertFilter.type.js";
4
4
  import { COMBINATOR_OPTIONS, CONVERTERS_MODE_OPTIONS, ENERGY_SOURCE_OPTIONS, EXPERT_FILTER_EQUIPMENTS, EXPERT_FILTER_FIELDS, EXPERT_FILTER_QUERY, FIELDS_OPTIONS, LOAD_TYPE_OPTIONS, OPERATOR_OPTIONS, PHASE_REGULATION_MODE_OPTIONS, RATIO_REGULATION_MODE_OPTIONS, REGULATION_TYPE_OPTIONS, RULES, SHUNT_COMPENSATOR_TYPE_OPTIONS, SVAR_REGULATION_MODE_OPTIONS } from "./expertFilterConstants.js";
5
- import { countRules, exportExpertRules, getFilterEquipmentTypeLabel, getNumberOfSiblings, getOperators, importExpertRules, queryValidator, recursiveRemove, testQuery } from "./expertFilterUtils.js";
5
+ import { countRules, exportExpertRules, getNumberOfSiblings, getOperators, importExpertRules, queryValidator, recursiveRemove, testQuery } from "./expertFilterUtils.js";
6
6
  export {
7
7
  COMBINATOR_OPTIONS,
8
8
  CONVERTERS_MODE_OPTIONS,
@@ -28,7 +28,6 @@ export {
28
28
  expertFilterSchema,
29
29
  exportExpertRules,
30
30
  getExpertFilterEmptyFormData,
31
- getFilterEquipmentTypeLabel,
32
31
  getNumberOfSiblings,
33
32
  getOperators,
34
33
  importExpertRules,
@@ -15,6 +15,7 @@ import { FilterForm } from "../FilterForm.js";
15
15
  import { NO_ITEM_SELECTION_FOR_COPY, FilterType } from "../constants/FilterConstants.js";
16
16
  import { HeaderFilterSchema } from "../HeaderFilterForm.js";
17
17
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from "./ExplicitNamingFilterConstants.js";
18
+ import { snackWithFallback } from "../../../utils/error.js";
18
19
  import * as yup from "yup";
19
20
  const formSchema = yup.object().shape({
20
21
  ...HeaderFilterSchema,
@@ -61,10 +62,7 @@ function ExplicitNamingFilterEditionDialog({
61
62
  });
62
63
  }).catch((error) => {
63
64
  setDataFetchStatus(FetchStatus.FETCH_ERROR);
64
- snackError({
65
- messageTxt: error.message,
66
- headerId: "cannotRetrieveFilter"
67
- });
65
+ snackWithFallback(snackError, error, { headerId: "cannotRetrieveFilter" });
68
66
  });
69
67
  }
70
68
  }, [id, name, open, reset, snackError, getFilterById, description]);
@@ -78,9 +76,7 @@ function ExplicitNamingFilterEditionDialog({
78
76
  filterForm[FieldConstants.DESCRIPTION] ?? "",
79
77
  id,
80
78
  (error) => {
81
- snackError({
82
- messageTxt: error.message
83
- });
79
+ snackWithFallback(snackError, error);
84
80
  },
85
81
  onClose
86
82
  );
@@ -23,6 +23,7 @@ import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialo
23
23
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
24
24
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from "./ExplicitNamingFilterConstants.js";
25
25
  import { filterStyles } from "../HeaderFilterForm.js";
26
+ import { snackWithFallback } from "../../../utils/error.js";
26
27
  import * as yup from "yup";
27
28
  function isGeneratorOrLoad(equipmentType) {
28
29
  return equipmentType === Generator.type || equipmentType === Load.type;
@@ -147,10 +148,7 @@ function ExplicitNamingFilterForm({ sourceFilterForExplicitNamingConversion }) {
147
148
  }))
148
149
  );
149
150
  }).catch(
150
- (error) => snackError({
151
- messageTxt: error.message,
152
- headerId: "convertIntoExplicitNamingFilterError"
153
- })
151
+ (error) => snackWithFallback(snackError, error, { headerId: "convertIntoExplicitNamingFilterError" })
154
152
  );
155
153
  };
156
154
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -5,7 +5,7 @@ import { ExpertFilterEditionDialog } from "./expert/ExpertFilterEditionDialog.js
5
5
  import { ExpertFilterForm, expertFilterSchema, getExpertFilterEmptyFormData } from "./expert/ExpertFilterForm.js";
6
6
  import { CombinatorType, DataType, OperatorType } from "./expert/expertFilter.type.js";
7
7
  import { COMBINATOR_OPTIONS, CONVERTERS_MODE_OPTIONS, ENERGY_SOURCE_OPTIONS, EXPERT_FILTER_EQUIPMENTS, EXPERT_FILTER_FIELDS, EXPERT_FILTER_QUERY, FIELDS_OPTIONS, LOAD_TYPE_OPTIONS, OPERATOR_OPTIONS, PHASE_REGULATION_MODE_OPTIONS, RATIO_REGULATION_MODE_OPTIONS, REGULATION_TYPE_OPTIONS, RULES, SHUNT_COMPENSATOR_TYPE_OPTIONS, SVAR_REGULATION_MODE_OPTIONS } from "./expert/expertFilterConstants.js";
8
- import { countRules, exportExpertRules, getFilterEquipmentTypeLabel, getNumberOfSiblings, getOperators, importExpertRules, queryValidator, recursiveRemove, testQuery } from "./expert/expertFilterUtils.js";
8
+ import { countRules, exportExpertRules, getNumberOfSiblings, getOperators, importExpertRules, queryValidator, recursiveRemove, testQuery } from "./expert/expertFilterUtils.js";
9
9
  import { ExplicitNamingFilterEditionDialog } from "./explicitNaming/ExplicitNamingFilterEditionDialog.js";
10
10
  import { ExplicitNamingFilterForm, explicitNamingFilterSchema, getExplicitNamingFilterEmptyFormData } from "./explicitNaming/ExplicitNamingFilterForm.js";
11
11
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from "./explicitNaming/ExplicitNamingFilterConstants.js";
@@ -48,7 +48,6 @@ export {
48
48
  exportExpertRules,
49
49
  getExpertFilterEmptyFormData,
50
50
  getExplicitNamingFilterEmptyFormData,
51
- getFilterEquipmentTypeLabel,
52
51
  getNumberOfSiblings,
53
52
  getOperators,
54
53
  importExpertRules,
@@ -3,8 +3,8 @@ import { Generator, Load } from "../../../utils/types/equipmentTypes.js";
3
3
  import { exportExpertRules } from "../expert/expertFilterUtils.js";
4
4
  import { DISTRIBUTION_KEY, FilterType } from "../constants/FilterConstants.js";
5
5
  import { createFilter, saveFilter } from "../../../services/explore.js";
6
- import { catchErrorHandler } from "../../../services/utils.js";
7
6
  import "../../../utils/conversionUtils.js";
7
+ import { catchErrorHandler } from "../../../utils/error.js";
8
8
  import "react/jsx-runtime";
9
9
  import "@mui/icons-material";
10
10
  import "../../../utils/types/equipmentType.js";
@@ -43,7 +43,7 @@ import { ExpertFilterEditionDialog } from "./filter/expert/ExpertFilterEditionDi
43
43
  import { ExpertFilterForm, expertFilterSchema, getExpertFilterEmptyFormData } from "./filter/expert/ExpertFilterForm.js";
44
44
  import { CombinatorType, DataType, OperatorType } from "./filter/expert/expertFilter.type.js";
45
45
  import { COMBINATOR_OPTIONS, CONVERTERS_MODE_OPTIONS, ENERGY_SOURCE_OPTIONS, EXPERT_FILTER_EQUIPMENTS, EXPERT_FILTER_FIELDS, EXPERT_FILTER_QUERY, FIELDS_OPTIONS, LOAD_TYPE_OPTIONS, OPERATOR_OPTIONS, PHASE_REGULATION_MODE_OPTIONS, RATIO_REGULATION_MODE_OPTIONS, REGULATION_TYPE_OPTIONS, RULES, SHUNT_COMPENSATOR_TYPE_OPTIONS, SVAR_REGULATION_MODE_OPTIONS } from "./filter/expert/expertFilterConstants.js";
46
- import { countRules, exportExpertRules, getFilterEquipmentTypeLabel, getNumberOfSiblings, getOperators, importExpertRules, queryValidator, recursiveRemove, testQuery } from "./filter/expert/expertFilterUtils.js";
46
+ import { countRules, exportExpertRules, getNumberOfSiblings, getOperators, importExpertRules, queryValidator, recursiveRemove, testQuery } from "./filter/expert/expertFilterUtils.js";
47
47
  import { ExplicitNamingFilterEditionDialog } from "./filter/explicitNaming/ExplicitNamingFilterEditionDialog.js";
48
48
  import { ExplicitNamingFilterForm, explicitNamingFilterSchema, getExplicitNamingFilterEmptyFormData } from "./filter/explicitNaming/ExplicitNamingFilterForm.js";
49
49
  import { FILTER_EQUIPMENTS_ATTRIBUTES } from "./filter/explicitNaming/ExplicitNamingFilterConstants.js";
@@ -160,10 +160,11 @@ import { LoadFlowParametersEditionDialog } from "./parameters/loadflow/load-flow
160
160
  import { InitialVoltage, PredefinedParameters, SHORT_CIRCUIT_INITIAL_VOLTAGE_PROFILE_MODE, SHORT_CIRCUIT_PREDEFINED_PARAMS, SHORT_CIRCUIT_WITH_FEEDER_RESULT, SHORT_CIRCUIT_WITH_LOADS, SHORT_CIRCUIT_WITH_NEUTRAL_POSITION, SHORT_CIRCUIT_WITH_SHUNT_COMPENSATORS, SHORT_CIRCUIT_WITH_VSC_CONVERTER_STATIONS, intlInitialVoltageProfileMode, intlPredefinedParametersOptions } from "./parameters/short-circuit/constants.js";
161
161
  import { ShortCircuitParametersInLine } from "./parameters/short-circuit/short-circuit-parameters-inline.js";
162
162
  import { ShortCircuitParametersEditionDialog } from "./parameters/short-circuit/short-circuit-parameters-dialog.js";
163
- import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, FILTERS, FILTER_ID, FILTER_NAME, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, ID, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./parameters/voltage-init/constants.js";
163
+ import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./parameters/voltage-init/constants.js";
164
164
  import { EquipmentsSelectionType } from "./parameters/voltage-init/voltage-init.type.js";
165
165
  import { VoltageInitParametersEditionDialog } from "./parameters/voltage-init/voltage-init-parameters-dialog.js";
166
166
  import { VoltageInitParametersInLine } from "./parameters/voltage-init/voltage-init-parameters-inline.js";
167
+ import { PccMinParametersInLine } from "./parameters/pcc-min/pcc-min-parameters-inline.js";
167
168
  import { SecurityAnalysisParametersInline } from "./parameters/security-analysis/security-analysis-parameters-inline.js";
168
169
  import { SecurityAnalysisParametersDialog } from "./parameters/security-analysis/security-analysis-parameters-dialog.js";
169
170
  import { SensitivityAnalysisParametersInline } from "./parameters/sensi/sensitivity-analysis-parameters-inline.js";
@@ -270,11 +271,8 @@ export {
270
271
  ExplicitNamingFilterForm,
271
272
  ExportCsvButton,
272
273
  FIELDS_OPTIONS,
273
- FILTERS,
274
274
  FILTER_EQUIPMENTS,
275
275
  FILTER_EQUIPMENTS_ATTRIBUTES,
276
- FILTER_ID,
277
- FILTER_NAME,
278
276
  FieldErrorAlert,
279
277
  FieldLabel,
280
278
  FilterCreationDialog,
@@ -291,7 +289,6 @@ export {
291
289
  HVDC_AC_EMULATION,
292
290
  HVDC_EQUIPMENT_TYPES,
293
291
  HelperPreviousValue,
294
- ID,
295
292
  INJECTIONS_EQUIPMENT_TYPES,
296
293
  INJECTION_DISTRIBUTION_TYPES,
297
294
  INTL_LINE_FLOW_MODE_OPTIONS,
@@ -380,6 +377,7 @@ export {
380
377
  ParameterLineDirectoryItemsInput,
381
378
  ParameterLineSlider,
382
379
  ParameterSwitch,
380
+ PccMinParametersInLine,
383
381
  PhotoLibraryIcon,
384
382
  PopupConfirmationDialog,
385
383
  PredefinedParameters,
@@ -489,7 +487,6 @@ export {
489
487
  generateTreeViewFinderClass,
490
488
  getExpertFilterEmptyFormData,
491
489
  getExplicitNamingFilterEmptyFormData,
492
- getFilterEquipmentTypeLabel,
493
490
  getLimitReductionsFormSchema,
494
491
  getNumberOfSiblings,
495
492
  getOperators,
@@ -10,7 +10,7 @@ import "./provider/CustomFormProvider.js";
10
10
  import { useCustomFormContext } from "./provider/useCustomFormContext.js";
11
11
  import { ErrorInput } from "./errorManagement/ErrorInput.js";
12
12
  import { MidFormError } from "./errorManagement/MidFormError.js";
13
- import { ALL_EQUIPMENTS } from "../../../utils/types/equipmentType.js";
13
+ import "../../../utils/types/equipmentType.js";
14
14
  import { fetchDirectoryElementPath } from "../../../services/directory.js";
15
15
  import "localized-countries";
16
16
  import "localized-countries/data/fr";
@@ -20,6 +20,7 @@ import { DirectoryItemSelector } from "../../directoryItemSelector/DirectoryItem
20
20
  import "../../../utils/conversionUtils.js";
21
21
  import { mergeSx } from "../../../utils/styles.js";
22
22
  import { ArrayAction } from "../../../utils/types/types.js";
23
+ import { getEquipmentTypeShortLabel } from "../../../utils/labelUtils.js";
23
24
  import "../../../utils/yupConfig.js";
24
25
  import { NAME } from "./constants.js";
25
26
  import { OverflowableChip } from "./OverflowableChip.js";
@@ -187,7 +188,9 @@ function DirectoryItemsInput({
187
188
  ),
188
189
  elements?.length > 0 && /* @__PURE__ */ jsx(FormControl, { sx: styles.formDirectoryElements2, children: elements.map((item, index) => {
189
190
  const elementName = watchedElements?.[index]?.[NAME] ?? getValues(`${name}.${index}.${NAME}`) ?? item?.[NAME];
190
- const equipmentTypeTagLabel = item?.specificMetadata?.equipmentType && ALL_EQUIPMENTS[item.specificMetadata.equipmentType]?.shortLabel || "";
191
+ const equipmentTypeShortLabel = getEquipmentTypeShortLabel(
192
+ item?.specificMetadata?.equipmentType
193
+ );
191
194
  const { sx: chipSx, ...otherChipProps } = chipProps ?? {};
192
195
  return /* @__PURE__ */ jsx(
193
196
  ChipComponent,
@@ -195,9 +198,9 @@ function DirectoryItemsInput({
195
198
  onDelete: () => removeElements(index),
196
199
  onClick: () => handleChipClick(index),
197
200
  label: elementName ? /* @__PURE__ */ jsx(RawReadOnlyInput, { name: `${name}.${index}.${NAME}` }) : intl.formatMessage({ id: "elementNotFound" }),
198
- ...equipmentTypeTagLabel && {
201
+ ...equipmentTypeShortLabel && {
199
202
  helperText: intl.formatMessage({
200
- id: equipmentTypeTagLabel
203
+ id: equipmentTypeShortLabel
201
204
  })
202
205
  },
203
206
  sx: mergeSx(
@@ -7,7 +7,7 @@ function OverflowableChipWithHelperText({
7
7
  }) {
8
8
  return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "left", flexDirection: "column" }, children: [
9
9
  /* @__PURE__ */ jsx(OverflowableChip, { ...otherProps }),
10
- helperText && /* @__PURE__ */ jsx(FormHelperText, { sx: { paddingLeft: 1.5, fontSize: "x-small" }, children: helperText })
10
+ helperText && /* @__PURE__ */ jsx(FormHelperText, { sx: { fontSize: "x-small" }, children: helperText })
11
11
  ] });
12
12
  }
13
13
  export {
@@ -4,6 +4,7 @@ import "react-intl";
4
4
  import "../../../utils/types/equipmentType.js";
5
5
  import { createParameter, updateParameter } from "../../../services/explore.js";
6
6
  import "../../../utils/conversionUtils.js";
7
+ import { snackWithFallback } from "../../../utils/error.js";
7
8
  import "@mui/icons-material";
8
9
  import "../../../utils/yupConfig.js";
9
10
  import "@mui/material";
@@ -41,11 +42,7 @@ function CreateParameterDialog({
41
42
  }
42
43
  });
43
44
  }).catch((error) => {
44
- console.error(error);
45
- snackError({
46
- messageTxt: error.message,
47
- headerId: "paramsCreatingError"
48
- });
45
+ snackWithFallback(snackError, error, { headerId: "paramsCreatingError" });
49
46
  });
50
47
  },
51
48
  [parameterFormatter, parameterType, parameterValues, snackError, snackInfo]
@@ -59,10 +56,8 @@ function CreateParameterDialog({
59
56
  }
60
57
  });
61
58
  }).catch((error) => {
62
- console.error(error);
63
- snackError({
64
- messageTxt: error.message,
65
- headerId: "paramsUpdatingError",
59
+ snackWithFallback(snackError, error, {
60
+ headerId: "paramsUpdateError",
66
61
  headerValues: {
67
62
  item: elementFullPath
68
63
  }
@@ -10,6 +10,7 @@ type DirectoryItemsInputLineProps = {
10
10
  equipmentTypes?: string[];
11
11
  elementType: string;
12
12
  hideErrorMessage: boolean;
13
+ allowMultiSelect?: boolean;
13
14
  };
14
- export declare function ParameterLineDirectoryItemsInput({ label, name, equipmentTypes, elementType, hideErrorMessage, }: Readonly<DirectoryItemsInputLineProps>): import("react/jsx-runtime").JSX.Element;
15
+ export declare function ParameterLineDirectoryItemsInput({ label, name, equipmentTypes, elementType, hideErrorMessage, allowMultiSelect, }: Readonly<DirectoryItemsInputLineProps>): import("react/jsx-runtime").JSX.Element;
15
16
  export {};
@@ -33,7 +33,8 @@ function ParameterLineDirectoryItemsInput({
33
33
  name,
34
34
  equipmentTypes,
35
35
  elementType,
36
- hideErrorMessage
36
+ hideErrorMessage,
37
+ allowMultiSelect = true
37
38
  }) {
38
39
  return /* @__PURE__ */ jsxs(Grid, { item: true, container: true, spacing: 1, paddingTop: 1, paddingBottom: 1, children: [
39
40
  /* @__PURE__ */ jsx(Grid, { item: true, xs: 7, sx: parametersStyles.parameterName, children: /* @__PURE__ */ jsx(FormattedMessage, { id: label }) }),
@@ -46,7 +47,8 @@ function ParameterLineDirectoryItemsInput({
46
47
  titleId: label,
47
48
  hideErrorMessage,
48
49
  label: void 0,
49
- itemFilter: void 0
50
+ itemFilter: void 0,
51
+ allowMultiSelect
50
52
  }
51
53
  ) })
52
54
  ] });
@@ -9,5 +9,6 @@ export * from './network-visualizations';
9
9
  export * from './loadflow';
10
10
  export * from './short-circuit';
11
11
  export * from './voltage-init';
12
+ export * from './pcc-min';
12
13
  export * from './security-analysis';
13
14
  export * from './sensi';
@@ -27,10 +27,11 @@ import { LoadFlowParametersEditionDialog } from "./loadflow/load-flow-parameters
27
27
  import { InitialVoltage, PredefinedParameters, SHORT_CIRCUIT_INITIAL_VOLTAGE_PROFILE_MODE, SHORT_CIRCUIT_PREDEFINED_PARAMS, SHORT_CIRCUIT_WITH_FEEDER_RESULT, SHORT_CIRCUIT_WITH_LOADS, SHORT_CIRCUIT_WITH_NEUTRAL_POSITION, SHORT_CIRCUIT_WITH_SHUNT_COMPENSATORS, SHORT_CIRCUIT_WITH_VSC_CONVERTER_STATIONS, intlInitialVoltageProfileMode, intlPredefinedParametersOptions } from "./short-circuit/constants.js";
28
28
  import { ShortCircuitParametersInLine } from "./short-circuit/short-circuit-parameters-inline.js";
29
29
  import { ShortCircuitParametersEditionDialog } from "./short-circuit/short-circuit-parameters-dialog.js";
30
- import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, FILTERS, FILTER_ID, FILTER_NAME, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, ID, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./voltage-init/constants.js";
30
+ import { DEFAULT_GENERAL_APPLY_MODIFICATIONS, DEFAULT_REACTIVE_SLACKS_THRESHOLD, DEFAULT_SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, DEFAULT_UPDATE_BUS_VOLTAGE, GENERAL, GENERAL_APPLY_MODIFICATIONS, GENERATORS_SELECTION_TYPE, HIGH_VOLTAGE_LIMIT, LEG_SIDE, LOW_VOLTAGE_LIMIT, PRIORITY, RATIO_TAP_CHANGER_POSITION, RATIO_TAP_CHANGER_TARGET_V, REACTIVE_SLACKS_THRESHOLD, SELECTION_TYPE, SHUNT_COMPENSATORS_SELECTION_TYPE, SHUNT_COMPENSATOR_ACTIVATION_THRESHOLD, TRANSFORMERS_SELECTION_TYPE, UPDATE_BUS_VOLTAGE, VARIABLE_Q_GENERATORS, VARIABLE_SHUNT_COMPENSATORS, VARIABLE_TRANSFORMERS, VOLTAGE_LIMITS_DEFAULT, VOLTAGE_LIMITS_MODIFICATION, VoltageInitTabValues } from "./voltage-init/constants.js";
31
31
  import { EquipmentsSelectionType } from "./voltage-init/voltage-init.type.js";
32
32
  import { VoltageInitParametersEditionDialog } from "./voltage-init/voltage-init-parameters-dialog.js";
33
33
  import { VoltageInitParametersInLine } from "./voltage-init/voltage-init-parameters-inline.js";
34
+ import { PccMinParametersInLine } from "./pcc-min/pcc-min-parameters-inline.js";
34
35
  import { SecurityAnalysisParametersInline } from "./security-analysis/security-analysis-parameters-inline.js";
35
36
  import { SecurityAnalysisParametersDialog } from "./security-analysis/security-analysis-parameters-dialog.js";
36
37
  import { SensitivityAnalysisParametersInline } from "./sensi/sensitivity-analysis-parameters-inline.js";
@@ -67,16 +68,12 @@ export {
67
68
  DISTRIBUTED_SLACK,
68
69
  EQUIPMENTS_IN_VOLTAGE_REGULATION_TYPES,
69
70
  EquipmentsSelectionType,
70
- FILTERS,
71
- FILTER_ID,
72
- FILTER_NAME,
73
71
  GENERAL,
74
72
  GENERAL_APPLY_MODIFICATIONS,
75
73
  GENERATORS_SELECTION_TYPE,
76
74
  HIGH_VOLTAGE_LIMIT,
77
75
  HVDC_AC_EMULATION,
78
76
  HVDC_EQUIPMENT_TYPES,
79
- ID,
80
77
  INJECTIONS_EQUIPMENT_TYPES,
81
78
  INJECTION_DISTRIBUTION_TYPES,
82
79
  INTL_LINE_FLOW_MODE_OPTIONS,
@@ -140,6 +137,7 @@ export {
140
137
  ParameterLineDirectoryItemsInput,
141
138
  ParameterLineSlider,
142
139
  ParameterSwitch,
140
+ PccMinParametersInLine,
143
141
  PredefinedParameters,
144
142
  ProviderParam,
145
143
  RATIO_TAP_CHANGER_POSITION,
@@ -6,6 +6,7 @@ import { LoadFlowProvider } from "./load-flow-parameters-provider.js";
6
6
  import { parametersStyles } from "../parameters-style.js";
7
7
  import "../../../utils/types/equipmentType.js";
8
8
  import "../../../utils/conversionUtils.js";
9
+ import { snackWithFallback } from "../../../utils/error.js";
9
10
  import "@mui/icons-material";
10
11
  import { ElementType } from "../../../utils/types/elementType.js";
11
12
  import { mergeSx } from "../../../utils/styles.js";
@@ -50,7 +51,7 @@ function LoadFlowParametersInline({
50
51
  setHaveDirtyFields,
51
52
  enableDeveloperMode
52
53
  }) {
53
- const [, , , , resetProvider, , , , resetParameters, , ,] = parametersBackend;
54
+ const [, , , , resetProvider, , , , resetParameters, ,] = parametersBackend;
54
55
  const loadflowMethods = useLoadFlowParametersForm(parametersBackend, enableDeveloperMode, null, null, null);
55
56
  const intl = useIntl();
56
57
  const [openCreateParameterDialog, setOpenCreateParameterDialog] = useState(false);
@@ -92,11 +93,7 @@ function LoadFlowParametersInline({
92
93
  keepDefaultValues: true
93
94
  });
94
95
  }).catch((error) => {
95
- console.error(error);
96
- snackError({
97
- messageTxt: error.message,
98
- headerId: "paramsRetrievingError"
99
- });
96
+ snackWithFallback(snackError, error, { headerId: "paramsRetrievingError" });
100
97
  });
101
98
  }
102
99
  setOpenSelectParameterDialog(false);
@@ -10,6 +10,7 @@ import "react-intl";
10
10
  import "../../../utils/types/equipmentType.js";
11
11
  import { updateParameter } from "../../../services/explore.js";
12
12
  import "../../../utils/conversionUtils.js";
13
+ import { snackWithFallback } from "../../../utils/error.js";
13
14
  import "@mui/icons-material";
14
15
  import { ElementType } from "../../../utils/types/elementType.js";
15
16
  import "../../../utils/yupConfig.js";
@@ -222,11 +223,8 @@ const useLoadFlowParametersForm = (parametersBackend, enableDeveloperMode, param
222
223
  formData[NAME],
223
224
  ElementType.LOADFLOW_PARAMETERS,
224
225
  formData[DESCRIPTION] ?? ""
225
- ).catch((errmsg) => {
226
- snackError({
227
- messageTxt: errmsg,
228
- headerId: "updateLoadFlowParametersError"
229
- });
226
+ ).catch((error) => {
227
+ snackWithFallback(snackError, error, { headerId: "updateLoadFlowParametersError" });
230
228
  });
231
229
  }
232
230
  },
@@ -4,6 +4,7 @@ import { Box, Grid } from "@mui/material";
4
4
  import { useIntl, FormattedMessage } from "react-intl";
5
5
  import "../../../utils/types/equipmentType.js";
6
6
  import "../../../utils/conversionUtils.js";
7
+ import { snackWithFallback } from "../../../utils/error.js";
7
8
  import "@mui/icons-material";
8
9
  import { ElementType } from "../../../utils/types/elementType.js";
9
10
  import "../../../utils/yupConfig.js";
@@ -63,11 +64,7 @@ function NetworkVisualizationParametersInline({
63
64
  keepDefaultValues: true
64
65
  });
65
66
  }).catch((error) => {
66
- console.error(error);
67
- snackError({
68
- messageTxt: error.message,
69
- headerId: "paramsRetrievingError"
70
- });
67
+ snackWithFallback(snackError, error, { headerId: "paramsRetrievingError" });
71
68
  });
72
69
  }
73
70
  setOpenSelectParameterDialog(false);