@gridsuite/commons-ui 0.122.0 → 0.124.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 (37) hide show
  1. package/dist/components/filter/FilterCreationDialog.js +2 -2
  2. package/dist/components/filter/expert/ExpertFilterEditionDialog.js +2 -1
  3. package/dist/components/filter/explicitNaming/ExplicitNamingFilterEditionDialog.js +1 -1
  4. package/dist/components/filter/utils/filterApi.d.ts +2 -2
  5. package/dist/components/filter/utils/filterApi.js +4 -4
  6. package/dist/components/flatParameters/FlatParameters.js +19 -3
  7. package/dist/components/inputs/reactHookForm/autocompleteInputs/AutocompleteInput.js +1 -7
  8. package/dist/components/inputs/reactQueryBuilder/ValueEditor.js +2 -7
  9. package/dist/components/notifications/hooks/useListenerManager.js +7 -1
  10. package/dist/components/parameters/common/limitreductions/columns-definitions.d.ts +2 -2
  11. package/dist/components/parameters/common/limitreductions/limit-reduction-table-cell.d.ts +3 -2
  12. package/dist/components/parameters/common/limitreductions/limit-reduction-table-cell.js +20 -4
  13. package/dist/components/parameters/common/limitreductions/limit-reduction-table-row.d.ts +3 -2
  14. package/dist/components/parameters/common/limitreductions/limit-reduction-table-row.js +2 -2
  15. package/dist/components/parameters/common/limitreductions/limit-reductions-label-column.d.ts +6 -0
  16. package/dist/components/parameters/common/limitreductions/limit-reductions-label-column.js +22 -0
  17. package/dist/components/parameters/common/limitreductions/limit-reductions-table-form.js +11 -34
  18. package/dist/components/parameters/common/limitreductions/limit-reductions-tooltip-column.d.ts +6 -0
  19. package/dist/components/parameters/common/limitreductions/limit-reductions-tooltip-column.js +24 -0
  20. package/dist/components/parameters/common/voltage-level-table/custom-voltage-level-table.d.ts +3 -2
  21. package/dist/components/parameters/common/voltage-level-table/custom-voltage-level-table.js +7 -6
  22. package/dist/components/parameters/loadflow/load-flow-parameters-inline.d.ts +1 -2
  23. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-inline.d.ts +1 -2
  24. package/dist/components/parameters/security-analysis/security-analysis-parameters-inline.d.ts +1 -2
  25. package/dist/components/parameters/security-analysis/security-analysis-parameters-selector.js +1 -2
  26. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-inline.d.ts +1 -1
  27. package/dist/components/parameters/short-circuit/short-circuit-parameters-inline.d.ts +1 -2
  28. package/dist/components/parameters/voltage-init/voltage-init-parameters-inline.d.ts +1 -2
  29. package/dist/translations/en/filterExpertEn.d.ts +1 -0
  30. package/dist/translations/en/filterExpertEn.js +1 -0
  31. package/dist/translations/en/parameters.d.ts +3 -1
  32. package/dist/translations/en/parameters.js +5 -3
  33. package/dist/translations/fr/filterExpertFr.d.ts +1 -0
  34. package/dist/translations/fr/filterExpertFr.js +1 -0
  35. package/dist/translations/fr/parameters.d.ts +3 -1
  36. package/dist/translations/fr/parameters.js +4 -2
  37. package/package.json +1 -1
@@ -60,7 +60,7 @@ function FilterCreationDialog({
60
60
  null,
61
61
  (error) => {
62
62
  snackError({
63
- messageTxt: error
63
+ messageTxt: error.message
64
64
  });
65
65
  },
66
66
  onClose,
@@ -78,7 +78,7 @@ function FilterCreationDialog({
78
78
  onClose,
79
79
  (error) => {
80
80
  snackError({
81
- messageTxt: error
81
+ messageTxt: error.message
82
82
  });
83
83
  }
84
84
  );
@@ -84,7 +84,8 @@ function ExpertFilterEditionDialog({
84
84
  onClose,
85
85
  (error) => {
86
86
  snackError({
87
- messageTxt: error
87
+ messageTxt: error.message,
88
+ headerId: "cannotSaveFilter"
88
89
  });
89
90
  }
90
91
  );
@@ -81,7 +81,7 @@ function ExplicitNamingFilterEditionDialog({
81
81
  id,
82
82
  (error) => {
83
83
  snackError({
84
- messageTxt: error
84
+ messageTxt: error.message
85
85
  });
86
86
  },
87
87
  onClose
@@ -1,3 +1,3 @@
1
1
  import { UUID } from 'crypto';
2
- export declare const saveExplicitNamingFilter: (tableValues: any[], isFilterCreation: boolean, equipmentType: string, name: string, description: string, id: string | null, setCreateFilterErr: (value?: string) => void, handleClose: () => void, activeDirectory?: UUID, token?: string) => void;
3
- export declare const saveExpertFilter: (id: string | null, query: any, equipmentType: string, name: string, description: string, isFilterCreation: boolean, activeDirectory: UUID | undefined | null, onClose: () => void, onError: (message: string) => void, token?: string) => void;
2
+ export declare const saveExplicitNamingFilter: (tableValues: any[], isFilterCreation: boolean, equipmentType: string, name: string, description: string, id: string | null, setCreateFilterErr: (error: Error) => void, handleClose: () => void, activeDirectory?: UUID, token?: string) => void;
3
+ export declare const saveExpertFilter: (id: string | null, query: any, equipmentType: string, name: string, description: string, isFilterCreation: boolean, activeDirectory: UUID | undefined | null, onClose: () => void, onError: (error: Error) => void, token?: string) => void;
@@ -37,7 +37,7 @@ const saveExplicitNamingFilter = (tableValues, isFilterCreation, equipmentType,
37
37
  ).then(() => {
38
38
  handleClose();
39
39
  }).catch((error) => {
40
- setCreateFilterErr(error.message);
40
+ setCreateFilterErr(error instanceof Error ? error : new Error("unknown error"));
41
41
  });
42
42
  } else {
43
43
  saveFilter(
@@ -53,7 +53,7 @@ const saveExplicitNamingFilter = (tableValues, isFilterCreation, equipmentType,
53
53
  ).then(() => {
54
54
  handleClose();
55
55
  }).catch((error) => {
56
- setCreateFilterErr(error.message);
56
+ setCreateFilterErr(error instanceof Error ? error : new Error("unknown error"));
57
57
  });
58
58
  }
59
59
  };
@@ -74,7 +74,7 @@ const saveExpertFilter = (id, query, equipmentType, name, description, isFilterC
74
74
  onClose();
75
75
  }).catch((error) => {
76
76
  catchErrorHandler(error, (message) => {
77
- onError(message);
77
+ onError(new Error(message));
78
78
  });
79
79
  });
80
80
  } else {
@@ -92,7 +92,7 @@ const saveExpertFilter = (id, query, equipmentType, name, description, isFilterC
92
92
  onClose();
93
93
  }).catch((error) => {
94
94
  catchErrorHandler(error, (message) => {
95
- onError(message);
95
+ onError(new Error(message));
96
96
  });
97
97
  });
98
98
  }
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from "react/jsx-runtime";
2
- import { useState, useCallback, Fragment } from "react";
2
+ import { useState, useCallback, Fragment, createElement } from "react";
3
3
  import { List, ListItem, Tooltip, Typography, Divider, Select, MenuItem, TextField, IconButton, Autocomplete, Chip, Switch } from "@mui/material";
4
4
  import { Tune } from "@mui/icons-material";
5
5
  import { useIntl, FormattedMessage } from "react-intl";
@@ -274,7 +274,14 @@ function FlatParameters({
274
274
  onChange: (e, value) => onFieldChange(value, param),
275
275
  value: fieldValue,
276
276
  renderTags: (values, getTagProps) => {
277
- return values.map((value, index) => /* @__PURE__ */ jsx(Chip, { label: getTranslatedValue(param.name, value), ...getTagProps({ index }) }));
277
+ return values.map((value, index) => /* @__PURE__ */ createElement(
278
+ Chip,
279
+ {
280
+ label: getTranslatedValue(param.name, value),
281
+ ...getTagProps({ index }),
282
+ key: `chip_${value}`
283
+ }
284
+ ));
278
285
  },
279
286
  renderInput: (inputProps) => /* @__PURE__ */ jsx(TextField, { ...inputProps, variant })
280
287
  }
@@ -292,7 +299,16 @@ function FlatParameters({
292
299
  onChange: (e, value) => onFieldChange(value, param),
293
300
  value: fieldValue,
294
301
  renderTags: (values, getTagProps) => {
295
- return values.map((value, index) => /* @__PURE__ */ jsx(Chip, { id: `chip_${value}`, size: "small", label: value, ...getTagProps({ index }) }));
302
+ return values.map((value, index) => /* @__PURE__ */ createElement(
303
+ Chip,
304
+ {
305
+ id: `chip_${value}`,
306
+ size: "small",
307
+ label: value,
308
+ ...getTagProps({ index }),
309
+ key: `chip_${value}`
310
+ }
311
+ ));
296
312
  },
297
313
  renderInput: (inputProps) => /* @__PURE__ */ jsx(TextField, { ...inputProps, variant })
298
314
  }
@@ -78,13 +78,7 @@ function AutocompleteInput({
78
78
  })
79
79
  },
80
80
  inputRef: ref,
81
- inputProps: {
82
- style: {
83
- fontSize: "small"
84
- },
85
- ...inputProps,
86
- readOnly
87
- },
81
+ inputProps: { ...inputProps, readOnly },
88
82
  helperText: previousValue && /* @__PURE__ */ jsx(
89
83
  HelperPreviousValue,
90
84
  {
@@ -12,7 +12,6 @@ import { VoltageLevel, Substation } from "../../../utils/types/equipmentTypes.js
12
12
  import { ElementValueEditor } from "./ElementValueEditor.js";
13
13
  import { ElementType } from "../../../utils/types/elementType.js";
14
14
  import { PropertyValueEditor } from "./PropertyValueEditor.js";
15
- import { FilterType } from "../../filter/constants/FilterConstants.js";
16
15
  import { GroupValueEditor } from "./compositeRuleEditor/GroupValueEditor.js";
17
16
  import { OPERATOR_OPTIONS } from "../../filter/expert/expertFilterConstants.js";
18
17
  import { FieldType } from "../../../utils/types/fieldType.js";
@@ -32,13 +31,9 @@ function ValueEditor(props) {
32
31
  const { getValues } = formContext;
33
32
  const itemFilter = useCallback(
34
33
  (filterValue) => {
35
- var _a, _b, _c, _d;
34
+ var _a, _b, _c;
36
35
  if ((filterValue == null ? void 0 : filterValue.type) === ElementType.FILTER) {
37
- return (
38
- // we do not authorize to use an expert filter in the rules of
39
- // another expert filter, to prevent potential cycle problems
40
- ((_a = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _a.type) !== FilterType.EXPERT.id && (field === FieldType.ID && ((_b = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _b.equipmentType) === getValues(FieldConstants.EQUIPMENT_TYPE) || (field === FieldType.VOLTAGE_LEVEL_ID || field === FieldType.VOLTAGE_LEVEL_ID_1 || field === FieldType.VOLTAGE_LEVEL_ID_2 || field === FieldType.VOLTAGE_LEVEL_ID_3) && ((_c = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _c.equipmentType) === VoltageLevel.type || (field === FieldType.SUBSTATION_ID || field === FieldType.SUBSTATION_ID_1 || field === FieldType.SUBSTATION_ID_2) && ((_d = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _d.equipmentType) === Substation.type)
41
- );
36
+ return field === FieldType.ID && ((_a = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _a.equipmentType) === getValues(FieldConstants.EQUIPMENT_TYPE) || (field === FieldType.VOLTAGE_LEVEL_ID || field === FieldType.VOLTAGE_LEVEL_ID_1 || field === FieldType.VOLTAGE_LEVEL_ID_2 || field === FieldType.VOLTAGE_LEVEL_ID_3) && ((_b = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _b.equipmentType) === VoltageLevel.type || (field === FieldType.SUBSTATION_ID || field === FieldType.SUBSTATION_ID_1 || field === FieldType.SUBSTATION_ID_2) && ((_c = filterValue == null ? void 0 : filterValue.specificMetadata) == null ? void 0 : _c.equipmentType) === Substation.type;
42
37
  }
43
38
  return true;
44
39
  },
@@ -13,7 +13,13 @@ const useListenerManager = (urls) => {
13
13
  const addListenerEvent = useCallback((urlKey, listener) => {
14
14
  const urlsListeners = urlsListenersRef.current;
15
15
  if (urlKey in urlsListeners) {
16
- urlsListeners[urlKey].push(listener);
16
+ const existingIndex = urlsListeners[urlKey].findIndex((l) => l.id === listener.id);
17
+ if (existingIndex !== -1) {
18
+ console.warn(`🔄 Replacing existing listener ${listener.id} on ${urlKey}`);
19
+ urlsListeners[urlKey][existingIndex] = listener;
20
+ } else {
21
+ urlsListeners[urlKey].push(listener);
22
+ }
17
23
  } else {
18
24
  urlsListeners[urlKey] = [listener];
19
25
  }
@@ -44,9 +44,9 @@ export declare const TAB_INFO: {
44
44
  developerModeOnly: boolean;
45
45
  }[];
46
46
  export interface LimitReductionIColumnsDef {
47
- label: string;
47
+ label: React.ReactNode;
48
48
  dataKey: string;
49
- tooltip: string;
49
+ tooltip: React.ReactNode;
50
50
  width?: string;
51
51
  }
52
52
  export declare const COLUMNS_DEFINITIONS_LIMIT_REDUCTIONS: LimitReductionIColumnsDef[];
@@ -1,5 +1,6 @@
1
- import { LimitReductionIColumnsDef } from './columns-definitions';
2
- export declare function LimitReductionTableCell({ rowIndex, column, }: Readonly<{
1
+ import { LimitReductionIColumnsDef, ILimitReductionsByVoltageLevel } from './columns-definitions';
2
+ export declare function LimitReductionTableCell({ rowIndex, column, limits, }: Readonly<{
3
3
  rowIndex: number;
4
4
  column: LimitReductionIColumnsDef;
5
+ limits: ILimitReductionsByVoltageLevel[];
5
6
  }>): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { TableCell } from "@mui/material";
2
+ import { Tooltip, TableCell } from "@mui/material";
3
+ import { FormattedMessage } from "react-intl";
3
4
  import { VOLTAGE_LEVELS_FORM, LIMIT_REDUCTIONS_FORM } from "./columns-definitions.js";
4
- import "react-intl";
5
5
  import "react";
6
6
  import "react-hook-form";
7
7
  import "../../../../utils/types/equipmentType.js";
@@ -32,9 +32,25 @@ import "../../../inputs/reactQueryBuilder/PropertyValueEditor.js";
32
32
  import "react-querybuilder";
33
33
  function LimitReductionTableCell({
34
34
  rowIndex,
35
- column
35
+ column,
36
+ limits
36
37
  }) {
37
- return /* @__PURE__ */ jsx(TableCell, { sx: { fontWeight: "bold" }, children: column.dataKey === VOLTAGE_LEVELS_FORM ? /* @__PURE__ */ jsx(RawReadOnlyInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) : /* @__PURE__ */ jsx(FloatInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) });
38
+ return column.dataKey === VOLTAGE_LEVELS_FORM ? /* @__PURE__ */ jsx(
39
+ Tooltip,
40
+ {
41
+ title: /* @__PURE__ */ jsx(
42
+ FormattedMessage,
43
+ {
44
+ id: "VoltageRangeInterval",
45
+ values: {
46
+ lowBound: `${limits[rowIndex].voltageLevel.lowBound}`,
47
+ highBound: `${limits[rowIndex].voltageLevel.highBound}`
48
+ }
49
+ }
50
+ ),
51
+ children: /* @__PURE__ */ jsx(TableCell, { sx: { fontWeight: "bold" }, children: /* @__PURE__ */ jsx(RawReadOnlyInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) })
52
+ }
53
+ ) : /* @__PURE__ */ jsx(TableCell, { sx: { fontWeight: "bold" }, children: /* @__PURE__ */ jsx(FloatInput, { name: `${LIMIT_REDUCTIONS_FORM}[${rowIndex}].${column.dataKey}` }) });
38
54
  }
39
55
  export {
40
56
  LimitReductionTableCell
@@ -1,7 +1,8 @@
1
- import { LimitReductionIColumnsDef } from './columns-definitions';
1
+ import { ILimitReductionsByVoltageLevel, LimitReductionIColumnsDef } from './columns-definitions';
2
2
  interface TableRowComponentProps {
3
3
  columnsDefinition: LimitReductionIColumnsDef[];
4
4
  index: number;
5
+ limits: ILimitReductionsByVoltageLevel[];
5
6
  }
6
- export declare function LimitReductionTableRow({ columnsDefinition, index }: Readonly<TableRowComponentProps>): import("react/jsx-runtime").JSX.Element;
7
+ export declare function LimitReductionTableRow({ columnsDefinition, index, limits }: Readonly<TableRowComponentProps>): import("react/jsx-runtime").JSX.Element;
7
8
  export {};
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { TableRow } from "@mui/material";
3
3
  import { LimitReductionTableCell } from "./limit-reduction-table-cell.js";
4
- function LimitReductionTableRow({ columnsDefinition, index }) {
5
- return /* @__PURE__ */ jsx(TableRow, { children: columnsDefinition.map((column) => /* @__PURE__ */ jsx(LimitReductionTableCell, { rowIndex: index, column }, `${column.dataKey}`)) });
4
+ function LimitReductionTableRow({ columnsDefinition, index, limits }) {
5
+ return /* @__PURE__ */ jsx(TableRow, { children: columnsDefinition.map((column) => /* @__PURE__ */ jsx(LimitReductionTableCell, { rowIndex: index, column, limits }, `${column.dataKey}`)) });
6
6
  }
7
7
  export {
8
8
  LimitReductionTableRow
@@ -0,0 +1,6 @@
1
+ import { ITemporaryLimitReduction } from './columns-definitions';
2
+ type LimitReductionsLabelColumnProps = {
3
+ limits: ITemporaryLimitReduction;
4
+ };
5
+ export declare function LimitReductionsLabelColumn({ limits }: Readonly<LimitReductionsLabelColumnProps>): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,22 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { FormattedMessage } from "react-intl";
3
+ function LimitReductionsLabelColumn({ limits }) {
4
+ const highBound = Math.trunc(limits.limitDuration.lowBound / 60);
5
+ const lowBound = Math.trunc(limits.limitDuration.highBound / 60);
6
+ if (lowBound === 0) {
7
+ return /* @__PURE__ */ jsx(FormattedMessage, { id: "LimitVoltageAfterIST", values: { highBound: `${highBound}` } });
8
+ }
9
+ return /* @__PURE__ */ jsx(
10
+ FormattedMessage,
11
+ {
12
+ id: "LimitVoltageInterval",
13
+ values: {
14
+ lowBound: `${lowBound}`,
15
+ highBound: `${highBound}`
16
+ }
17
+ }
18
+ );
19
+ }
20
+ export {
21
+ LimitReductionsLabelColumn
22
+ };
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { useCallback, useMemo } from "react";
3
- import { useIntl } from "react-intl";
2
+ import { useMemo } from "react";
3
+ import { FormattedMessage } from "react-intl";
4
4
  import { COLUMNS_DEFINITIONS_LIMIT_REDUCTIONS, LIMIT_DURATION_FORM, LIMIT_REDUCTIONS_FORM } from "./columns-definitions.js";
5
5
  import { CustomVoltageLevelTable } from "../voltage-level-table/custom-voltage-level-table.js";
6
6
  import "@mui/material";
@@ -29,56 +29,33 @@ import "../../../inputs/reactQueryBuilder/CustomReactQueryBuilder.js";
29
29
  import "uuid";
30
30
  import "../../../inputs/reactQueryBuilder/PropertyValueEditor.js";
31
31
  import "react-querybuilder";
32
- const getLabelColumn = (limit) => {
33
- const lowBound = `${Math.trunc(limit.limitDuration.lowBound / 60)} min`;
34
- const highBoundValue = Math.trunc(limit.limitDuration.highBound / 60);
35
- const highBound = highBoundValue === 0 ? "∞" : `${Math.trunc(limit.limitDuration.highBound / 60)} min`;
36
- const lowerBoundClosed = limit.limitDuration.lowClosed ? "[" : "]";
37
- const highBoundClosed = limit.limitDuration.highClosed || null ? "]" : "[";
38
- return `${lowerBoundClosed}${lowBound}, ${highBound}${highBoundClosed}`;
39
- };
32
+ import { LimitReductionsToolTipColumn } from "./limit-reductions-tooltip-column.js";
33
+ import { LimitReductionsLabelColumn } from "./limit-reductions-label-column.js";
40
34
  function LimitReductionsTableForm({ limits }) {
41
- const intl = useIntl();
42
- const getToolTipColumn = useCallback(
43
- (limit) => {
44
- const lowBound = Math.trunc(limit.limitDuration.lowBound / 60);
45
- const highBound = Math.trunc(limit.limitDuration.highBound / 60);
46
- if (lowBound === 0) {
47
- return intl.formatMessage({ id: "LimitDurationAfterIST" }, { value: highBound });
48
- }
49
- return intl.formatMessage(
50
- { id: "LimitDurationInterval" },
51
- {
52
- lowBound: `IT${lowBound}`,
53
- highBound: highBound === 0 ? "IST" : `IT${highBound}`
54
- }
55
- );
56
- },
57
- [intl]
58
- );
59
35
  const columnsDefinition = useMemo(() => {
60
36
  const columnsDef = COLUMNS_DEFINITIONS_LIMIT_REDUCTIONS.map((column) => ({
61
37
  ...column,
62
- label: intl.formatMessage({ id: column.label }),
63
- tooltip: intl.formatMessage({ id: column.tooltip })
38
+ label: /* @__PURE__ */ jsx(FormattedMessage, { id: column.label }),
39
+ tooltip: /* @__PURE__ */ jsx(FormattedMessage, { id: column.tooltip })
64
40
  }));
65
41
  if (limits !== null && limits.length > 0) {
66
42
  limits[0].temporaryLimitReductions.forEach((tlimit, index) => {
67
43
  columnsDef.push({
68
- label: getLabelColumn(tlimit),
44
+ label: /* @__PURE__ */ jsx(LimitReductionsLabelColumn, { limits: tlimit }),
69
45
  dataKey: LIMIT_DURATION_FORM + index,
70
- tooltip: getToolTipColumn(tlimit)
46
+ tooltip: /* @__PURE__ */ jsx(LimitReductionsToolTipColumn, { limits: tlimit })
71
47
  });
72
48
  });
73
49
  }
74
50
  return columnsDef;
75
- }, [intl, limits, getToolTipColumn]);
51
+ }, [limits]);
76
52
  return /* @__PURE__ */ jsx(
77
53
  CustomVoltageLevelTable,
78
54
  {
79
55
  formName: LIMIT_REDUCTIONS_FORM,
80
56
  columnsDefinition,
81
- tableHeight: 450
57
+ tableHeight: 450,
58
+ limits
82
59
  }
83
60
  );
84
61
  }
@@ -0,0 +1,6 @@
1
+ import { ITemporaryLimitReduction } from './columns-definitions';
2
+ type LimitReductionsLabelColumnProps = {
3
+ limits: ITemporaryLimitReduction;
4
+ };
5
+ export declare function LimitReductionsToolTipColumn({ limits }: Readonly<LimitReductionsLabelColumnProps>): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,24 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { FormattedMessage } from "react-intl";
3
+ function LimitReductionsToolTipColumn({ limits }) {
4
+ const lowBound = `${Math.trunc(limits.limitDuration.lowBound / 60)} min`;
5
+ const highBoundValue = Math.trunc(limits.limitDuration.highBound / 60);
6
+ const highBound = highBoundValue === 0 ? "∞" : `${Math.trunc(limits.limitDuration.highBound / 60)} min`;
7
+ const lowerBoundClosed = limits.limitDuration.lowClosed ? "[" : "]";
8
+ const higherBoundClosed = limits.limitDuration.highClosed || null ? "]" : "[";
9
+ return /* @__PURE__ */ jsx(
10
+ FormattedMessage,
11
+ {
12
+ id: "LimitDurationInterval",
13
+ values: {
14
+ lowBound: `${lowBound}`,
15
+ highBound: `${highBound}`,
16
+ higherBoundClosed: `${higherBoundClosed}`,
17
+ lowerBoundClosed: `${lowerBoundClosed}`
18
+ }
19
+ }
20
+ );
21
+ }
22
+ export {
23
+ LimitReductionsToolTipColumn
24
+ };
@@ -1,8 +1,9 @@
1
- import { LimitReductionIColumnsDef } from '../limitreductions/columns-definitions';
1
+ import { LimitReductionIColumnsDef, ILimitReductionsByVoltageLevel } from '../limitreductions/columns-definitions';
2
2
  interface LimitReductionsTableProps {
3
3
  columnsDefinition: LimitReductionIColumnsDef[];
4
4
  tableHeight: number;
5
5
  formName: string;
6
+ limits: ILimitReductionsByVoltageLevel[];
6
7
  }
7
- export declare function CustomVoltageLevelTable({ formName, columnsDefinition, tableHeight, }: Readonly<LimitReductionsTableProps>): import("react/jsx-runtime").JSX.Element;
8
+ export declare function CustomVoltageLevelTable({ formName, columnsDefinition, tableHeight, limits, }: Readonly<LimitReductionsTableProps>): import("react/jsx-runtime").JSX.Element;
8
9
  export {};
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { TableContainer, Table, TableHead, TableRow, TableCell, TableBody } from "@mui/material";
2
+ import { TableContainer, Table, TableHead, TableRow, Tooltip, TableCell, TableBody } from "@mui/material";
3
3
  import { useMemo } from "react";
4
4
  import { useFieldArray } from "react-hook-form";
5
5
  import { LIMIT_REDUCTIONS_FORM } from "../limitreductions/columns-definitions.js";
@@ -8,7 +8,8 @@ import { CustomVoltageLevelTableRow } from "./custom-voltage-level-table-row.js"
8
8
  function CustomVoltageLevelTable({
9
9
  formName,
10
10
  columnsDefinition,
11
- tableHeight
11
+ tableHeight,
12
+ limits
12
13
  }) {
13
14
  const { fields: rows } = useFieldArray({
14
15
  name: formName
@@ -26,23 +27,23 @@ function CustomVoltageLevelTable({
26
27
  border: "solid 0px rgba(0,0,0,0.1)"
27
28
  },
28
29
  children: /* @__PURE__ */ jsxs(Table, { stickyHeader: true, size: "small", sx: { tableLayout: "fixed" }, children: [
29
- /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsx(TableRow, { children: columnsDefinition.map((column) => /* @__PURE__ */ jsx(
30
+ /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsx(TableRow, { children: columnsDefinition.map((column) => /* @__PURE__ */ jsx(Tooltip, { title: column.tooltip, children: /* @__PURE__ */ jsx(
30
31
  TableCell,
31
32
  {
32
33
  sx: {
33
34
  textAlign: "center"
34
35
  },
35
- title: column.tooltip,
36
36
  children: column.label
37
37
  },
38
38
  column.dataKey
39
- )) }) }),
39
+ ) })) }) }),
40
40
  /* @__PURE__ */ jsx(TableBody, { children: rows.map((row, index) => /* @__PURE__ */ jsx(
41
41
  TableRowComponent,
42
42
  {
43
43
  columnsDefinition,
44
44
  index,
45
- formName
45
+ formName,
46
+ limits
46
47
  },
47
48
  `${row.id}`
48
49
  )) })
@@ -1,4 +1,3 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
1
  import { UUID } from 'crypto';
3
2
  import { UseParametersBackendReturnProps } from '../../../utils/types/parameters.type';
4
3
  import { ComputingType } from '../common/computing-type';
@@ -7,6 +6,6 @@ export declare function LoadFlowParametersInline({ studyUuid, language, paramete
7
6
  studyUuid: UUID | null;
8
7
  language: GsLang;
9
8
  parametersBackend: UseParametersBackendReturnProps<ComputingType.LOAD_FLOW>;
10
- setHaveDirtyFields: Dispatch<SetStateAction<boolean>>;
9
+ setHaveDirtyFields: (isDirty: boolean) => void;
11
10
  enableDeveloperMode: boolean;
12
11
  }>): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,9 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
1
  import { UUID } from 'crypto';
3
2
  import { User } from 'oidc-client';
4
3
  import { NetworkVisualizationParameters } from './network-visualizations.types';
5
4
  export declare function NetworkVisualizationParametersInline({ studyUuid, setHaveDirtyFields, user, parameters, }: Readonly<{
6
5
  studyUuid: UUID | null;
7
- setHaveDirtyFields: Dispatch<SetStateAction<boolean>>;
6
+ setHaveDirtyFields: (isDirty: boolean) => void;
8
7
  user: User | null;
9
8
  parameters: NetworkVisualizationParameters | null;
10
9
  }>): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +1,9 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
1
  import { UUID } from 'crypto';
3
2
  import { UseParametersBackendReturnProps } from '../../../utils';
4
3
  import { ComputingType } from '../common';
5
4
  export declare function SecurityAnalysisParametersInline({ studyUuid, parametersBackend, setHaveDirtyFields, enableDeveloperMode, }: Readonly<{
6
5
  studyUuid: UUID | null;
7
6
  parametersBackend: UseParametersBackendReturnProps<ComputingType.SECURITY_ANALYSIS>;
8
- setHaveDirtyFields: Dispatch<SetStateAction<boolean>>;
7
+ setHaveDirtyFields: (isDirty: boolean) => void;
9
8
  enableDeveloperMode: boolean;
10
9
  }>): import("react/jsx-runtime").JSX.Element;
@@ -66,8 +66,7 @@ function SecurityAnalysisParametersSelector({
66
66
  value: index,
67
67
  sx: {
68
68
  fontSize: 17,
69
- fontWeight: "bold",
70
- textTransform: "capitalize"
69
+ fontWeight: "bold"
71
70
  }
72
71
  },
73
72
  tab.label
@@ -6,7 +6,7 @@ interface SensitivityAnalysisParametersProps {
6
6
  currentNodeUuid: UUID | null;
7
7
  currentRootNetworkUuid: UUID | null;
8
8
  parametersBackend: UseParametersBackendReturnProps<ComputingType.SENSITIVITY_ANALYSIS>;
9
- setHaveDirtyFields: any;
9
+ setHaveDirtyFields: (isDirty: boolean) => void;
10
10
  enableDeveloperMode: boolean;
11
11
  }
12
12
  export declare function SensitivityAnalysisParametersInline({ studyUuid, currentNodeUuid, currentRootNetworkUuid, parametersBackend, setHaveDirtyFields, enableDeveloperMode, }: Readonly<SensitivityAnalysisParametersProps>): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,7 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
1
  import { UUID } from 'crypto';
3
2
  import { ShortCircuitParametersInfos } from './short-circuit-parameters.type';
4
3
  export declare function ShortCircuitParametersInLine({ studyUuid, setHaveDirtyFields, shortCircuitParameters, }: Readonly<{
5
4
  studyUuid: UUID | null;
6
- setHaveDirtyFields: Dispatch<SetStateAction<boolean>>;
5
+ setHaveDirtyFields: (isDirty: boolean) => void;
7
6
  shortCircuitParameters: ShortCircuitParametersInfos | null;
8
7
  }>): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,7 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
1
  import { UUID } from 'crypto';
3
2
  import { VoltageInitStudyParameters } from './voltage-init.type';
4
3
  export declare function VoltageInitParametersInLine({ studyUuid, setHaveDirtyFields, voltageInitParameters, }: Readonly<{
5
4
  studyUuid: UUID | null;
6
- setHaveDirtyFields: Dispatch<SetStateAction<boolean>>;
5
+ setHaveDirtyFields: (isDirty: boolean) => void;
7
6
  voltageInitParameters: VoltageInitStudyParameters | null;
8
7
  }>): import("react/jsx-runtime").JSX.Element;
@@ -178,6 +178,7 @@ export declare const filterExpertEn: {
178
178
  pairingKey: string;
179
179
  tieLineId: string;
180
180
  cannotRetrieveFilter: string;
181
+ cannotSaveFilter: string;
181
182
  equality: string;
182
183
  notEquality: string;
183
184
  greaterThan: string;
@@ -172,6 +172,7 @@ const filterExpertEn = {
172
172
  pairingKey: "Xnode",
173
173
  tieLineId: "Tie line ID",
174
174
  cannotRetrieveFilter: "Could not retrieve filter: ",
175
+ cannotSaveFilter: "Error while saving filter: ",
175
176
  equality: "=",
176
177
  notEquality: "!=",
177
178
  greaterThan: ">",
@@ -55,9 +55,11 @@ export declare const parametersEn: {
55
55
  General: string;
56
56
  LimitReductions: string;
57
57
  IST: string;
58
+ LimitVoltageInterval: string;
59
+ LimitVoltageAfterIST: string;
58
60
  LimitDurationInterval: string;
59
- LimitDurationAfterIST: string;
60
61
  voltageRange: string;
62
+ VoltageRangeInterval: string;
61
63
  Provider: string;
62
64
  LimitReduction: string;
63
65
  Default: string;
@@ -48,10 +48,12 @@ const parametersEn = {
48
48
  RealPercentage: "This value must be between 0 and 1",
49
49
  General: "General",
50
50
  LimitReductions: "Limit reductions",
51
- IST: "IST",
52
- LimitDurationInterval: "Between {highBound} and {lowBound}",
53
- LimitDurationAfterIST: "Beyond IT{value}",
51
+ IST: "PATL",
52
+ LimitVoltageInterval: "Between TATL{lowBound} and TATL{highBound}",
53
+ LimitVoltageAfterIST: "Between PATL and TATL{highBound}",
54
+ LimitDurationInterval: "Duration {lowerBoundClosed}{lowBound}, {highBound}{higherBoundClosed}",
54
55
  voltageRange: "Voltage range",
56
+ VoltageRangeInterval: "Voltage interval ]{lowBound} kV,{highBound} kV]",
55
57
  Provider: "Provider",
56
58
  LimitReduction: "Limit reduction",
57
59
  Default: "Default",
@@ -178,6 +178,7 @@ export declare const filterExpertFr: {
178
178
  pairingKey: string;
179
179
  tieLineId: string;
180
180
  cannotRetrieveFilter: string;
181
+ cannotSaveFilter: string;
181
182
  equality: string;
182
183
  notEquality: string;
183
184
  greaterThan: string;
@@ -172,6 +172,7 @@ const filterExpertFr = {
172
172
  pairingKey: "Xnode",
173
173
  tieLineId: "ID de l'interconnexion",
174
174
  cannotRetrieveFilter: "Erreur d'accès au filtre : ",
175
+ cannotSaveFilter: "Erreur lors de la mise à jour du filtre : ",
175
176
  equality: "=",
176
177
  notEquality: "!=",
177
178
  greaterThan: ">",
@@ -55,9 +55,11 @@ export declare const parametersFr: {
55
55
  General: string;
56
56
  LimitReductions: string;
57
57
  IST: string;
58
+ LimitVoltageInterval: string;
59
+ LimitVoltageAfterIST: string;
58
60
  LimitDurationInterval: string;
59
- LimitDurationAfterIST: string;
60
61
  voltageRange: string;
62
+ VoltageRangeInterval: string;
61
63
  Provider: string;
62
64
  LimitReduction: string;
63
65
  Default: string;
@@ -49,9 +49,11 @@ const parametersFr = {
49
49
  General: "Général",
50
50
  LimitReductions: "Abattements",
51
51
  IST: "IST",
52
- LimitDurationInterval: "Entre {highBound} et {lowBound}",
53
- LimitDurationAfterIST: "Au-delà de IT{value}",
52
+ LimitVoltageInterval: "Entre IT{lowBound} et IT{highBound}",
53
+ LimitVoltageAfterIST: "Entre IST et IT{highBound}",
54
+ LimitDurationInterval: "Tempo {lowerBoundClosed}{lowBound}, {highBound}{higherBoundClosed}",
54
55
  voltageRange: "Niveau de tension",
56
+ VoltageRangeInterval: "Plage de tension ]{lowBound} kV,{highBound} kV]",
55
57
  Provider: "Simulateur",
56
58
  LimitReduction: "Abattement des seuils",
57
59
  Default: "Défaut",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gridsuite/commons-ui",
3
- "version": "0.122.0",
3
+ "version": "0.124.0",
4
4
  "description": "common react components for gridsuite applications",
5
5
  "author": "gridsuite team",
6
6
  "homepage": "https://github.com/gridsuite",