@gridsuite/commons-ui 0.150.0 → 0.152.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 (43) hide show
  1. package/dist/components/dialogs/elementSaveDialog/index.d.ts +1 -0
  2. package/dist/components/dialogs/elementSaveDialog/index.js +3 -1
  3. package/dist/components/dialogs/index.js +2 -0
  4. package/dist/components/filter/FilterForm.js +4 -4
  5. package/dist/components/filter/expert/ExpertFilterForm.js +4 -4
  6. package/dist/components/filter/explicitNaming/ExplicitNamingFilterForm.js +2 -2
  7. package/dist/components/index.js +2 -0
  8. package/dist/components/parameters/loadflow/load-flow-parameters-dialog.js +7 -7
  9. package/dist/components/parameters/network-visualizations/network-visualizations-parameters-dialog.js +5 -5
  10. package/dist/components/parameters/sensi/constants.d.ts +6 -1
  11. package/dist/components/parameters/sensi/constants.js +6 -2
  12. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-factor-count.d.ts +8 -0
  13. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-factor-count.js +53 -0
  14. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-form.js +2 -3
  15. package/dist/components/parameters/sensi/sensitivity-analysis-parameters-inline.js +3 -3
  16. package/dist/components/parameters/sensi/sensitivity-parameters-selector.d.ts +5 -11
  17. package/dist/components/parameters/sensi/sensitivity-parameters-selector.js +64 -99
  18. package/dist/components/parameters/sensi/sensitivity-table.d.ts +2 -3
  19. package/dist/components/parameters/sensi/sensitivity-table.js +27 -37
  20. package/dist/components/parameters/sensi/table-cell.d.ts +1 -1
  21. package/dist/components/parameters/sensi/table-cell.js +2 -8
  22. package/dist/components/parameters/sensi/table-row.d.ts +2 -2
  23. package/dist/components/parameters/sensi/table-row.js +4 -6
  24. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.d.ts +7 -10
  25. package/dist/components/parameters/sensi/use-sensitivity-analysis-parameters.js +67 -114
  26. package/dist/components/parameters/sensi/utils.d.ts +6 -15
  27. package/dist/components/parameters/sensi/utils.js +21 -4
  28. package/dist/components/parameters/short-circuit/short-circuit-parameters-dialog.js +6 -6
  29. package/dist/components/parameters/voltage-init/voltage-init-parameters-dialog.js +5 -5
  30. package/dist/hooks/use-create-row-data-sensi.js +1 -2
  31. package/dist/index.js +2 -0
  32. package/dist/services/sensitivity-analysis.d.ts +2 -2
  33. package/dist/services/sensitivity-analysis.js +8 -9
  34. package/dist/translations/en/businessErrorsEn.d.ts +1 -0
  35. package/dist/translations/en/businessErrorsEn.js +2 -1
  36. package/dist/translations/en/parameters.d.ts +3 -3
  37. package/dist/translations/en/parameters.js +3 -3
  38. package/dist/translations/fr/businessErrorsFr.d.ts +1 -0
  39. package/dist/translations/fr/businessErrorsFr.js +2 -1
  40. package/dist/translations/fr/parameters.d.ts +3 -3
  41. package/dist/translations/fr/parameters.js +3 -3
  42. package/dist/utils/types/sensitivity-analysis.type.d.ts +4 -7
  43. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import "../../../utils/yupConfig.js";
2
- import { FLOW_VOLTAGE_SENSITIVITY_VALUE_THRESHOLD, ANGLE_FLOW_SENSITIVITY_VALUE_THRESHOLD, FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD, PARAMETER_SENSI_NODES, EQUIPMENTS_IN_VOLTAGE_REGULATION, SUPERVISED_VOLTAGE_LEVELS, PARAMETER_SENSI_PST, PSTS, ACTIVATED, PARAMETER_SENSI_HVDC, HVDC_LINES, PARAMETER_SENSI_INJECTION, INJECTIONS, PARAMETER_SENSI_INJECTIONS_SET, DISTRIBUTION_TYPE, COUNT, CONTINGENCIES, SENSITIVITY_TYPE, MONITORED_BRANCHES, CONTAINER_NAME, CONTAINER_ID } from "./constants.js";
2
+ import { FLOW_VOLTAGE_SENSITIVITY_VALUE_THRESHOLD, ANGLE_FLOW_SENSITIVITY_VALUE_THRESHOLD, FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD, PARAMETER_SENSI_NODES, EQUIPMENTS_IN_VOLTAGE_REGULATION, SUPERVISED_VOLTAGE_LEVELS, PARAMETER_SENSI_PST, PSTS, ACTIVATED, PARAMETER_SENSI_HVDC, HVDC_LINES, PARAMETER_SENSI_INJECTION, INJECTIONS, PARAMETER_SENSI_INJECTIONS_SET, DISTRIBUTION_TYPE, CONTINGENCIES, SENSITIVITY_TYPE, MONITORED_BRANCHES, CONTAINER_NAME, CONTAINER_ID } from "./constants.js";
3
3
  import { ID } from "../../../utils/constants/filterConstant.js";
4
4
  import "../../../utils/conversionUtils.js";
5
5
  import "../../../utils/types/equipmentType.js";
@@ -67,8 +67,7 @@ const getContingenciesSchema = () => {
67
67
  [NAME]: yup.string().required()
68
68
  })
69
69
  ),
70
- [ACTIVATED]: yup.boolean().required(),
71
- [COUNT]: yup.number().nullable()
70
+ [ACTIVATED]: yup.boolean().required()
72
71
  };
73
72
  };
74
73
  const getSensiHVDCsFormSchema = () => ({
@@ -313,6 +312,19 @@ const getSensiPstformatNewParams = (newParams) => {
313
312
  })
314
313
  };
315
314
  };
315
+ const hasVariables = (row) => {
316
+ return row[INJECTIONS]?.length > 0 || row[HVDC_LINES]?.length > 0 || row[PSTS]?.length > 0 || row[EQUIPMENTS_IN_VOLTAGE_REGULATION]?.length > 0;
317
+ };
318
+ const hasMonitoredEquipments = (row) => {
319
+ return row[MONITORED_BRANCHES]?.length > 0 || row[SUPERVISED_VOLTAGE_LEVELS]?.length > 0;
320
+ };
321
+ const isActivatedSensiParameterRow = (entry) => {
322
+ return entry[ACTIVATED];
323
+ };
324
+ const isValidSensiParameterRow = (entry) => {
325
+ return isActivatedSensiParameterRow(entry) && hasMonitoredEquipments(entry) && hasVariables(entry);
326
+ };
327
+ const filterSensiParameterRows = (entries) => (entries ?? []).filter((entry) => isValidSensiParameterRow(entry));
316
328
  const formSchema = yup.object().shape({
317
329
  [PROVIDER]: yup.string().required(),
318
330
  [FLOW_FLOW_SENSITIVITY_VALUE_THRESHOLD]: yup.number().required(),
@@ -328,6 +340,7 @@ const getFormSchema = (name) => {
328
340
  return formSchema.concat(getNameElementEditorSchema(name));
329
341
  };
330
342
  export {
343
+ filterSensiParameterRows,
331
344
  formSchema,
332
345
  getFormSchema,
333
346
  getGenericRowNewParams,
@@ -340,5 +353,9 @@ export {
340
353
  getSensiNodesFormSchema,
341
354
  getSensiNodesformatNewParams,
342
355
  getSensiPSTsFormSchema,
343
- getSensiPstformatNewParams
356
+ getSensiPstformatNewParams,
357
+ hasMonitoredEquipments,
358
+ hasVariables,
359
+ isActivatedSensiParameterRow,
360
+ isValidSensiParameterRow
344
361
  };
@@ -2,18 +2,18 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { CustomMuiDialog } from "../../dialogs/customMuiDialog/CustomMuiDialog.js";
3
3
  import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
4
4
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
5
+ import "../../../utils/conversionUtils.js";
6
+ import { ElementType } from "../../../utils/types/elementType.js";
7
+ import "../../../utils/types/equipmentType.js";
8
+ import "@mui/icons-material";
9
+ import "../../../utils/yupConfig.js";
10
+ import { getShortCircuitSpecificParametersDescription, updateShortCircuitParameters, fetchShortCircuitParameters } from "../../../services/short-circuit-analysis.js";
5
11
  import "react";
6
12
  import "@mui/material";
7
13
  import "react-intl";
8
14
  import "react-hook-form";
9
- import "@mui/icons-material";
10
- import { ElementType } from "../../../utils/types/elementType.js";
11
15
  import "../../treeViewFinder/TreeViewFinder.js";
12
16
  import "notistack";
13
- import "../../../utils/conversionUtils.js";
14
- import "../../../utils/types/equipmentType.js";
15
- import "../../../utils/yupConfig.js";
16
- import { getShortCircuitSpecificParametersDescription, updateShortCircuitParameters, fetchShortCircuitParameters } from "../../../services/short-circuit-analysis.js";
17
17
  import { NameElementEditorForm } from "../common/name-element-editor/name-element-editor-form.js";
18
18
  import "../../overflowableText/OverflowableText.js";
19
19
  import "localized-countries";
@@ -2,17 +2,17 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { CustomMuiDialog } from "../../dialogs/customMuiDialog/CustomMuiDialog.js";
3
3
  import "../../dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
4
4
  import "../../dialogs/elementSaveDialog/ElementSaveDialog.js";
5
+ import "../../../utils/conversionUtils.js";
6
+ import { ElementType } from "../../../utils/types/elementType.js";
7
+ import "../../../utils/types/equipmentType.js";
8
+ import "@mui/icons-material";
9
+ import "../../../utils/yupConfig.js";
5
10
  import "react";
6
11
  import "@mui/material";
7
12
  import "react-intl";
8
13
  import "react-hook-form";
9
- import "@mui/icons-material";
10
- import { ElementType } from "../../../utils/types/elementType.js";
11
14
  import "../../treeViewFinder/TreeViewFinder.js";
12
15
  import "notistack";
13
- import "../../../utils/conversionUtils.js";
14
- import "../../../utils/types/equipmentType.js";
15
- import "../../../utils/yupConfig.js";
16
16
  import { NameElementEditorForm } from "../common/name-element-editor/name-element-editor-form.js";
17
17
  import "../../overflowableText/OverflowableText.js";
18
18
  import "localized-countries";
@@ -1,12 +1,11 @@
1
1
  import { useFieldArray } from "react-hook-form";
2
2
  import { useMemo } from "react";
3
- import { COUNT } from "../components/parameters/sensi/constants.js";
4
3
  function useCreateRowDataSensi(sensiParam) {
5
4
  const useFieldArrayOutput = useFieldArray({
6
5
  name: sensiParam.name || ""
7
6
  });
8
7
  const newRowData = useMemo(() => {
9
- const rowData = { [COUNT]: 0 };
8
+ const rowData = {};
10
9
  sensiParam.columnsDef.forEach((column) => {
11
10
  rowData[column.dataKey] = column.initialValue;
12
11
  });
package/dist/index.js CHANGED
@@ -25,6 +25,7 @@ import { BooleanCellRenderer, BooleanNullableCellRenderer, ContingencyCellRender
25
25
  import { CustomMuiDialog, unscrollableDialogStyles } from "./components/dialogs/customMuiDialog/CustomMuiDialog.js";
26
26
  import { DescriptionModificationDialog } from "./components/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
27
27
  import { ElementSaveDialog } from "./components/dialogs/elementSaveDialog/ElementSaveDialog.js";
28
+ import { initializeDirectory } from "./components/dialogs/elementSaveDialog/utils.js";
28
29
  import { ModifyElementSelection } from "./components/dialogs/modifyElementSelection/ModifyElementSelection.js";
29
30
  import { PopupConfirmationDialog } from "./components/dialogs/popupConfirmationDialog/PopupConfirmationDialog.js";
30
31
  import { DirectoryItemSelector } from "./components/directoryItemSelector/DirectoryItemSelector.js";
@@ -825,6 +826,7 @@ export {
825
826
  importParamsFr,
826
827
  initializeAuthenticationDev,
827
828
  initializeAuthenticationProd,
829
+ initializeDirectory,
828
830
  inputsEn,
829
831
  inputsFr,
830
832
  intlInitialVoltageProfileMode,
@@ -1,5 +1,5 @@
1
1
  import { UUID } from 'node:crypto';
2
- import { SensitivityAnalysisFactorsCountParameters, SensitivityAnalysisParametersInfos } from '../utils';
2
+ import { FactorsCount, SensitivityAnalysisParametersInfos } from '../utils';
3
3
  export declare const getStudyUrl: (studyUuid: UUID | null) => string;
4
4
  export declare const getStudyUrlWithNodeUuidAndRootNetworkUuid: (studyUuid: string | null | undefined, nodeUuid: string | undefined, rootNetworkUuid: string | undefined | null) => string;
5
5
  export declare function getSensiUrl(): string;
@@ -7,6 +7,6 @@ export declare function fetchSensitivityAnalysisProviders(): Promise<string[]>;
7
7
  export declare function getSensitivityAnalysisParameters(studyUuid: UUID): Promise<any>;
8
8
  export declare function fetchSensitivityAnalysisParameters(parameterUuid: string): Promise<any>;
9
9
  export declare function setSensitivityAnalysisParameters(studyUuid: UUID | null, newParams: SensitivityAnalysisParametersInfos | null): Promise<Response>;
10
- export declare function getSensitivityAnalysisFactorsCount(studyUuid: UUID | null, currentNodeUuid: UUID, currentRootNetworkUuid: UUID, isInjectionsSet: boolean, newParams: SensitivityAnalysisFactorsCountParameters): Promise<Response>;
10
+ export declare function getSensitivityAnalysisFactorsCount(studyUuid: UUID | null, currentNodeUuid: UUID, currentRootNetworkUuid: UUID, newParams: SensitivityAnalysisParametersInfos): Promise<FactorsCount>;
11
11
  export declare function fetchDefaultSensitivityAnalysisProvider(): Promise<string>;
12
12
  export declare function updateSensitivityAnalysisParameters(parameterUuid: UUID, newParams: any): Promise<Response>;
@@ -41,17 +41,16 @@ function setSensitivityAnalysisParameters(studyUuid, newParams) {
41
41
  body: newParams ? JSON.stringify(newParams) : null
42
42
  });
43
43
  }
44
- function getSensitivityAnalysisFactorsCount(studyUuid, currentNodeUuid, currentRootNetworkUuid, isInjectionsSet, newParams) {
44
+ function getSensitivityAnalysisFactorsCount(studyUuid, currentNodeUuid, currentRootNetworkUuid, newParams) {
45
45
  console.info("get sensitivity analysis parameters computing count");
46
- const urlSearchParams = new URLSearchParams();
47
- const jsoned = JSON.stringify(isInjectionsSet);
48
- urlSearchParams.append("isInjectionsSet", jsoned);
49
- Object.keys(newParams).filter((key) => newParams[key]).forEach((key) => urlSearchParams.append(`ids[${key}]`, newParams[key]));
50
- const url = `${getStudyUrlWithNodeUuidAndRootNetworkUuid(studyUuid, currentNodeUuid, currentRootNetworkUuid)}
51
- /sensitivity-analysis/factors-count?${urlSearchParams}`;
46
+ const url = `${getStudyUrlWithNodeUuidAndRootNetworkUuid(studyUuid, currentNodeUuid, currentRootNetworkUuid)}/sensitivity-analysis/factor-count`;
52
47
  console.debug(url);
53
- return backendFetch(url, {
54
- method: "GET"
48
+ return backendFetchJson(url, {
49
+ method: "POST",
50
+ headers: {
51
+ "Content-Type": "application/json"
52
+ },
53
+ body: JSON.stringify(newParams)
55
54
  });
56
55
  }
57
56
  function fetchDefaultSensitivityAnalysisProvider() {
@@ -60,4 +60,5 @@ export declare const businessErrorsEn: {
60
60
  'dynamicSimulation.providerNotFound': string;
61
61
  'dynamicSimulation.mappingNotProvided': string;
62
62
  'dynamicSimulation.mappingNotLastRuleWithEmptyFilterError': string;
63
+ 'sensitivityAnalysis.tooManyFactors': string;
63
64
  };
@@ -53,7 +53,8 @@ const businessErrorsEn = {
53
53
  "dynamicSecurityAnalysis.contingencyListEmpty": "Contingency list parameter must not be null or empty.",
54
54
  "dynamicSimulation.providerNotFound": "Dynamic simulation provider not found.",
55
55
  "dynamicSimulation.mappingNotProvided": "Dynamic simulation mapping not provided.",
56
- "dynamicSimulation.mappingNotLastRuleWithEmptyFilterError": "Only last rule can have empty filter: type {equipmentType}, rule index {index}."
56
+ "dynamicSimulation.mappingNotLastRuleWithEmptyFilterError": "Only last rule can have empty filter: type {equipmentType}, rule index {index}.",
57
+ "sensitivityAnalysis.tooManyFactors": "Too many factors to run sensitivity analysis: {resultCount} results (limit: {resultCountLimit}) and {variableCount} variables (limit: {variableCountLimit})."
57
58
  };
58
59
  export {
59
60
  businessErrorsEn
@@ -218,9 +218,9 @@ export declare const parametersEn: {
218
218
  EquipmentsInVoltageRegulation: string;
219
219
  PSTS: string;
220
220
  Active: string;
221
- 'sensitivityAnalysis.simulatedComputations': string;
222
- 'sensitivityAnalysis.moreThanOneMillionComputations': string;
223
- 'sensitivityAnalysis.maximumSimulatedComputations': string;
221
+ 'sensitivityAnalysis.simulatedResults': string;
222
+ 'sensitivityAnalysis.simulatedVariables': string;
223
+ 'sensitivityAnalysis.maximumFactorsCount': string;
224
224
  'sensitivityAnalysis.separator': string;
225
225
  loadingComputing: string;
226
226
  AddRows: string;
@@ -212,9 +212,9 @@ const parametersEn = {
212
212
  EquipmentsInVoltageRegulation: "Equipments in voltage regulation",
213
213
  PSTS: "PSTs",
214
214
  Active: "Active",
215
- "sensitivityAnalysis.simulatedComputations": "{count, plural, =0 {0 computation} =1 {1 computation} other {# computations}}",
216
- "sensitivityAnalysis.moreThanOneMillionComputations": "999 999+ computations",
217
- "sensitivityAnalysis.maximumSimulatedComputations": "500 000 max",
215
+ "sensitivityAnalysis.simulatedResults": "{count, plural, =0 {0 result} =1 {1 result} other {#{suffix} results}}",
216
+ "sensitivityAnalysis.simulatedVariables": "{count, plural, =0 {0 variable} =1 {1 variable} other {#{suffix} variables}}",
217
+ "sensitivityAnalysis.maximumFactorsCount": "{maxFactorsCount} max",
218
218
  "sensitivityAnalysis.separator": " | ",
219
219
  loadingComputing: "Calculation in progress...",
220
220
  AddRows: "Add",
@@ -60,4 +60,5 @@ export declare const businessErrorsFr: {
60
60
  'dynamicSimulation.providerNotFound': string;
61
61
  'dynamicSimulation.mappingNotProvided': string;
62
62
  'dynamicSimulation.mappingNotLastRuleWithEmptyFilterError': string;
63
+ 'sensitivityAnalysis.tooManyFactors': string;
63
64
  };
@@ -53,7 +53,8 @@ const businessErrorsFr = {
53
53
  "dynamicSecurityAnalysis.contingencyListEmpty": "La liste d'aléas fournie ne doit pas être nulle ou vide.",
54
54
  "dynamicSimulation.providerNotFound": "Simulateur pour la simulation dynamique non trouvé.",
55
55
  "dynamicSimulation.mappingNotProvided": "Mapping pour la simulation dynamique non fourni.",
56
- "dynamicSimulation.mappingNotLastRuleWithEmptyFilterError": "Seule la dernière règle peut avoir un filtre vide : type {equipmentType}, indice de la règle : {index}."
56
+ "dynamicSimulation.mappingNotLastRuleWithEmptyFilterError": "Seule la dernière règle peut avoir un filtre vide : type {equipmentType}, indice de la règle : {index}.",
57
+ "sensitivityAnalysis.tooManyFactors": "Trop de facteurs pour exécuter l’analyse de sensibilité : {resultCount} résultats (limite : {resultCountLimit}) et {variableCount} variables (limite : {variableCountLimit})."
57
58
  };
58
59
  export {
59
60
  businessErrorsFr
@@ -219,9 +219,9 @@ export declare const parametersFr: {
219
219
  EquipmentsInVoltageRegulation: string;
220
220
  PSTS: string;
221
221
  Active: string;
222
- 'sensitivityAnalysis.simulatedComputations': string;
223
- 'sensitivityAnalysis.moreThanOneMillionComputations': string;
224
- 'sensitivityAnalysis.maximumSimulatedComputations': string;
222
+ 'sensitivityAnalysis.simulatedResults': string;
223
+ 'sensitivityAnalysis.simulatedVariables': string;
224
+ 'sensitivityAnalysis.maximumFactorsCount': string;
225
225
  'sensitivityAnalysis.separator': string;
226
226
  loadingComputing: string;
227
227
  AddRows: string;
@@ -213,9 +213,9 @@ const parametersFr = {
213
213
  EquipmentsInVoltageRegulation: "Ouvrages en réglage tension",
214
214
  PSTS: "TDs",
215
215
  Active: "Actif",
216
- "sensitivityAnalysis.simulatedComputations": "{count, plural, =0 {0 calcul} =1 {1 calcul} other {# calculs}}",
217
- "sensitivityAnalysis.moreThanOneMillionComputations": "999 999+ calculs",
218
- "sensitivityAnalysis.maximumSimulatedComputations": "500 000 max",
216
+ "sensitivityAnalysis.simulatedResults": "{count, plural, =0 {0 résultat} =1 {1 résultat} other {#{suffix} résultats}}",
217
+ "sensitivityAnalysis.simulatedVariables": "{count, plural, =0 {0 variable} =1 {1 variable} other {#{suffix} variables}}",
218
+ "sensitivityAnalysis.maximumFactorsCount": "{maxFactorsCount} max",
219
219
  "sensitivityAnalysis.separator": " | ",
220
220
  loadingComputing: "Evaluation en cours...",
221
221
  AddRows: "Ajouter",
@@ -54,13 +54,10 @@ export interface SensitivityAnalysisParametersInfos {
54
54
  sensitivityPST?: SensitivityPST[];
55
55
  sensitivityNodes?: SensitivityNodes[];
56
56
  }
57
- export type SensitivityAnalysisFactorsCountParameters = {
58
- injections?: string[];
59
- monitoredBranches?: string[];
60
- contingencies?: string[];
61
- hvdcs?: string[];
62
- psts?: string[];
63
- };
57
+ export interface FactorsCount {
58
+ resultCount: number;
59
+ variableCount: number;
60
+ }
64
61
  export type SelectorFilterOptions = {
65
62
  tabSelection: string;
66
63
  functionType: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gridsuite/commons-ui",
3
- "version": "0.150.0",
3
+ "version": "0.152.0",
4
4
  "description": "common react components for gridsuite applications",
5
5
  "author": "gridsuite team",
6
6
  "homepage": "https://github.com/gridsuite",