@gridsuite/commons-ui 0.292.0 → 0.293.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 (85) hide show
  1. package/dist/components/ui/reactHookForm/directory-item-input/directory-item-input.js +67 -26
  2. package/dist/features/index.js +32 -11
  3. package/dist/features/process-configs/common/FormSection.d.ts +8 -0
  4. package/dist/features/process-configs/common/FormSection.js +11 -0
  5. package/dist/features/process-configs/common/FormSubSection.d.ts +8 -0
  6. package/dist/features/process-configs/common/FormSubSection.js +11 -0
  7. package/dist/features/process-configs/common/GeneralInformationSection.d.ts +8 -0
  8. package/dist/features/process-configs/{shortcircuit/sc-process-config-edition.utils.js → common/GeneralInformationSection.js} +57 -54
  9. package/dist/features/process-configs/{security-analysis/index.d.ts → common/ModificationsSubSection.d.ts} +1 -3
  10. package/dist/features/process-configs/common/ModificationsSubSection.js +14 -0
  11. package/dist/features/process-configs/common/ProvidersParametersSubSection.d.ts +5 -0
  12. package/dist/features/process-configs/{loadflow/lf-process-config-edition.js → common/ProvidersParametersSubSection.js} +35 -26
  13. package/dist/features/process-configs/common/SpecificInformationSection.d.ts +8 -0
  14. package/dist/features/process-configs/common/SpecificInformationSection.js +25 -0
  15. package/dist/features/process-configs/common/index.d.ts +13 -1
  16. package/dist/features/process-configs/common/index.js +26 -2
  17. package/dist/features/process-configs/common/process-config-backend.type.d.ts +15 -0
  18. package/dist/features/process-configs/common/process-config-form.constants.d.ts +7 -0
  19. package/dist/features/process-configs/common/process-config-form.constants.js +39 -0
  20. package/dist/features/process-configs/common/process-config-form.schema.d.ts +29 -0
  21. package/dist/features/process-configs/{loadflow/lf-process-config-edition.utils.js → common/process-config-form.schema.js} +33 -51
  22. package/dist/features/process-configs/common/process-config-form.types.d.ts +45 -0
  23. package/dist/features/process-configs/common/process-config-mapping.d.ts +4 -0
  24. package/dist/features/process-configs/common/process-config-mapping.js +57 -0
  25. package/dist/features/process-configs/common/process-config-modifications-edition.utils.d.ts +0 -3
  26. package/dist/features/process-configs/common/process-config-modifications-edition.utils.js +0 -2
  27. package/dist/features/process-configs/common/process-config-type.definitions.d.ts +56 -0
  28. package/dist/features/process-configs/common/process-config-type.definitions.js +70 -0
  29. package/dist/features/process-configs/form/components/ProcessTypeChangeDialog.d.ts +13 -0
  30. package/dist/features/process-configs/form/components/ProcessTypeChangeDialog.js +27 -0
  31. package/dist/features/process-configs/form/components/ProcessTypeSelect.d.ts +6 -0
  32. package/dist/features/process-configs/form/components/ProcessTypeSelect.js +69 -0
  33. package/dist/features/process-configs/form/hooks/usePrefillSelection.d.ts +19 -0
  34. package/dist/features/process-configs/form/hooks/usePrefillSelection.js +51 -0
  35. package/dist/features/process-configs/form/hooks/useProcessConfigForm.d.ts +19 -0
  36. package/dist/features/process-configs/form/hooks/useProcessConfigForm.js +74 -0
  37. package/dist/features/process-configs/form/hooks/useProcessTypeGuard.d.ts +10 -0
  38. package/dist/features/process-configs/form/hooks/useProcessTypeGuard.js +67 -0
  39. package/dist/features/process-configs/form/process-config-form.d.ts +2 -0
  40. package/dist/features/process-configs/form/process-config-form.js +170 -0
  41. package/dist/features/process-configs/form/utils/form.utils.d.ts +3 -0
  42. package/dist/features/process-configs/form/utils/form.utils.js +36 -0
  43. package/dist/features/process-configs/index.d.ts +3 -5
  44. package/dist/features/process-configs/index.js +33 -12
  45. package/dist/features/process-configs/process-config-edition-dialog.d.ts +2 -0
  46. package/dist/features/process-configs/{process-config.utils.js → process-config-edition-dialog.js} +86 -26
  47. package/dist/index.js +32 -11
  48. package/dist/translations/en/businessErrorsEn.js +1 -1
  49. package/dist/translations/en/processConfigEn.d.ts +18 -0
  50. package/dist/translations/en/processConfigEn.js +19 -1
  51. package/dist/translations/fr/businessErrorsFr.js +1 -1
  52. package/dist/translations/fr/processConfigFr.d.ts +18 -0
  53. package/dist/translations/fr/processConfigFr.js +19 -1
  54. package/package.json +1 -1
  55. package/dist/features/process-configs/lf-process-config-edition-dialog.d.ts +0 -3
  56. package/dist/features/process-configs/lf-process-config-edition-dialog.js +0 -128
  57. package/dist/features/process-configs/loadflow/index.d.ts +0 -9
  58. package/dist/features/process-configs/loadflow/index.js +0 -9
  59. package/dist/features/process-configs/loadflow/lf-process-config-edition.d.ts +0 -1
  60. package/dist/features/process-configs/loadflow/lf-process-config-edition.utils.d.ts +0 -39
  61. package/dist/features/process-configs/loadflow/lf-process-config.type.d.ts +0 -6
  62. package/dist/features/process-configs/process-config-edition.utils.d.ts +0 -13
  63. package/dist/features/process-configs/process-config.type.d.ts +0 -16
  64. package/dist/features/process-configs/process-config.type.js +0 -1
  65. package/dist/features/process-configs/process-config.utils.d.ts +0 -33
  66. package/dist/features/process-configs/sa-process-config-edition-dialog.d.ts +0 -3
  67. package/dist/features/process-configs/sa-process-config-edition-dialog.js +0 -128
  68. package/dist/features/process-configs/sc-process-config-edition-dialog.d.ts +0 -3
  69. package/dist/features/process-configs/sc-process-config-edition-dialog.js +0 -141
  70. package/dist/features/process-configs/security-analysis/index.js +0 -9
  71. package/dist/features/process-configs/security-analysis/sa-process-config-edition.d.ts +0 -1
  72. package/dist/features/process-configs/security-analysis/sa-process-config-edition.js +0 -100
  73. package/dist/features/process-configs/security-analysis/sa-process-config-edition.utils.d.ts +0 -45
  74. package/dist/features/process-configs/security-analysis/sa-process-config-edition.utils.js +0 -111
  75. package/dist/features/process-configs/security-analysis/sa-process-config.type.d.ts +0 -7
  76. package/dist/features/process-configs/security-analysis/sa-process-config.type.js +0 -1
  77. package/dist/features/process-configs/shortcircuit/index.d.ts +0 -9
  78. package/dist/features/process-configs/shortcircuit/index.js +0 -9
  79. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.d.ts +0 -1
  80. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.js +0 -90
  81. package/dist/features/process-configs/shortcircuit/sc-process-config-edition.utils.d.ts +0 -39
  82. package/dist/features/process-configs/shortcircuit/sc-process-config.type.d.ts +0 -6
  83. package/dist/features/process-configs/shortcircuit/sc-process-config.type.js +0 -1
  84. /package/dist/features/process-configs/{loadflow/lf-process-config.type.js → common/process-config-backend.type.js} +0 -0
  85. /package/dist/features/process-configs/{process-config-edition.utils.js → common/process-config-form.types.js} +0 -0
@@ -1,11 +1,35 @@
1
+ import { FormSection } from "./FormSection.js";
2
+ import { FormSubSection } from "./FormSubSection.js";
3
+ import { GeneralInformationSection } from "./GeneralInformationSection.js";
4
+ import { ModificationsSubSection } from "./ModificationsSubSection.js";
5
+ import { ProvidersParametersSubSection } from "./ProvidersParametersSubSection.js";
6
+ import { SpecificInformationSection } from "./SpecificInformationSection.js";
1
7
  import { ProcessType } from "./process-config.type.js";
2
- import { emptyProcessConfigModificationsFormData, getProcessConfigModificationsBackendFromFormData, getProcessConfigModificationsFormData, processConfigModificationsShape } from "./process-config-modifications-edition.utils.js";
8
+ import { PROCESS_CONFIG_PARAMETER_FIELDS, PROCESS_CONFIG_TYPE_DEFINITIONS, getProcessConfigTypeDefinition, getProcessTypesRequiringParameter } from "./process-config-type.definitions.js";
3
9
  import { ProcessConfigModificationsEdition } from "./process-config-modifications-edition.js";
10
+ import { getProcessConfigModificationsBackendFromFormData, getProcessConfigModificationsFormData, processConfigModificationsShape } from "./process-config-modifications-edition.utils.js";
11
+ import { PROCESS_CONFIG_TYPES, getProcessConfigFormDefaultValues } from "./process-config-form.constants.js";
12
+ import { getProcessConfigFormSchema } from "./process-config-form.schema.js";
13
+ import { getProcessConfigBackendFromFormData, getProcessConfigFormData } from "./process-config-mapping.js";
4
14
  export {
15
+ FormSection,
16
+ FormSubSection,
17
+ GeneralInformationSection,
18
+ ModificationsSubSection,
19
+ PROCESS_CONFIG_PARAMETER_FIELDS,
20
+ PROCESS_CONFIG_TYPES,
21
+ PROCESS_CONFIG_TYPE_DEFINITIONS,
5
22
  ProcessConfigModificationsEdition,
6
23
  ProcessType,
7
- emptyProcessConfigModificationsFormData,
24
+ ProvidersParametersSubSection,
25
+ SpecificInformationSection,
26
+ getProcessConfigBackendFromFormData,
27
+ getProcessConfigFormData,
28
+ getProcessConfigFormDefaultValues,
29
+ getProcessConfigFormSchema,
8
30
  getProcessConfigModificationsBackendFromFormData,
9
31
  getProcessConfigModificationsFormData,
32
+ getProcessConfigTypeDefinition,
33
+ getProcessTypesRequiringParameter,
10
34
  processConfigModificationsShape
11
35
  };
@@ -0,0 +1,15 @@
1
+ import { UUID } from 'node:crypto';
2
+ import { ProcessConfigBaseBackend, ProcessType } from './process-config.type';
3
+ import { PROCESS_CONFIG_TYPE_DEFINITIONS, ProcessConfigParameterUuidProperties } from './process-config-type.definitions';
4
+ type ProcessConfigParameterUuidProperty<TProcessType extends ProcessType> = TProcessType extends keyof typeof PROCESS_CONFIG_TYPE_DEFINITIONS ? (typeof PROCESS_CONFIG_TYPE_DEFINITIONS)[TProcessType]['parameters'][number]['backendProperty'] : never;
5
+ type ProcessConfigBackendByProcessType = {
6
+ [TProcessType in ProcessType]: ProcessConfigBaseBackend & {
7
+ processType: TProcessType;
8
+ } & Pick<ProcessConfigParameterUuidProperties, ProcessConfigParameterUuidProperty<TProcessType>>;
9
+ };
10
+ export type ProcessConfigBackend<TProcessType extends ProcessType = ProcessType> = ProcessConfigBackendByProcessType[TProcessType];
11
+ export type PersistedProcessConfigBackend<TProcessType extends ProcessType = ProcessType> = {
12
+ id: UUID;
13
+ processConfig: ProcessConfigBackend<TProcessType>;
14
+ };
15
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ProcessType } from './process-config.type';
2
+ import { ProcessConfigFormValues, ProcessConfigMode } from './process-config-form.types';
3
+ export declare const PROCESS_CONFIG_TYPES: {
4
+ id: ProcessType;
5
+ label: "process_config/securityAnalysis" | "process_config/loadflow" | "process_config/shortcircuit";
6
+ }[];
7
+ export declare function getProcessConfigFormDefaultValues(mode: ProcessConfigMode): ProcessConfigFormValues;
@@ -0,0 +1,39 @@
1
+ import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
2
+ import "../../../utils/conversionUtils.js";
3
+ import "../../../utils/types/equipmentType.js";
4
+ import "react/jsx-runtime";
5
+ import "@mui/icons-material";
6
+ import { PROCESS_CONFIG_TYPE_DEFINITIONS, PROCESS_CONFIG_PARAMETER_FIELDS } from "./process-config-type.definitions.js";
7
+ const PROCESS_CONFIG_TYPES = Object.entries(PROCESS_CONFIG_TYPE_DEFINITIONS).map(
8
+ ([processType, definition]) => ({
9
+ id: processType,
10
+ label: definition.label
11
+ })
12
+ );
13
+ function getEmptyParameterValues() {
14
+ const parameterValues = {};
15
+ PROCESS_CONFIG_PARAMETER_FIELDS.forEach((field) => {
16
+ parameterValues[field] = [];
17
+ });
18
+ return parameterValues;
19
+ }
20
+ function getProcessConfigFormDefaultValues(mode) {
21
+ const defaultValues = {
22
+ processType: "",
23
+ [FieldConstants.NAME]: "",
24
+ [FieldConstants.DESCRIPTION]: "",
25
+ [FieldConstants.MODIFICATIONS]: [],
26
+ ...getEmptyParameterValues()
27
+ };
28
+ if (mode === "create") {
29
+ return {
30
+ ...defaultValues,
31
+ [FieldConstants.DIRECTORY]: { directoryItemId: "", directoryItemFullPath: "" }
32
+ };
33
+ }
34
+ return defaultValues;
35
+ }
36
+ export {
37
+ PROCESS_CONFIG_TYPES,
38
+ getProcessConfigFormDefaultValues
39
+ };
@@ -0,0 +1,29 @@
1
+ import { ProcessType } from './process-config.type';
2
+ import { ProcessConfigMode } from './process-config-form.types';
3
+ /**
4
+ * Copyright (c) 2026, RTE (http://www.rte-france.com)
5
+ * This Source Code Form is subject to the terms of the Mozilla Public
6
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
7
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
+ */
9
+ import * as yup from 'yup';
10
+ export declare function getProcessConfigFormSchema(mode: ProcessConfigMode): yup.ObjectSchema<{
11
+ directory?: unknown;
12
+ modifications: {
13
+ description?: string | null | undefined;
14
+ active: NonNullable<boolean | undefined>;
15
+ modification: {
16
+ name?: string | undefined;
17
+ id: string;
18
+ }[];
19
+ }[];
20
+ processType: NonNullable<ProcessType | undefined>;
21
+ name: string;
22
+ description: string | undefined;
23
+ }, yup.AnyObject, {
24
+ directory?: undefined;
25
+ modifications: "";
26
+ processType: undefined;
27
+ name: undefined;
28
+ description: undefined;
29
+ }, "">;
@@ -1,18 +1,15 @@
1
1
  import * as yup from "yup";
2
+ import "react/jsx-runtime";
3
+ import "@mui/material";
4
+ import "@mui/icons-material";
5
+ import "react-intl";
6
+ import "../../../components/ui/overflowableText/OverflowableText.js";
2
7
  import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
3
8
  import { YUP_REQUIRED } from "../../../utils/constants/translationKeys.js";
4
9
  import "../../../utils/conversionUtils.js";
5
10
  import "../../../utils/types/equipmentType.js";
6
- import "react/jsx-runtime";
7
- import "@mui/icons-material";
8
- import { fetchElementNames } from "../../../services/directory.js";
9
- import { ProcessType } from "../common/process-config.type.js";
10
- import { emptyProcessConfigModificationsFormData, getProcessConfigModificationsBackendFromFormData, getProcessConfigModificationsFormData, processConfigModificationsShape } from "../common/process-config-modifications-edition.utils.js";
11
- import "react-hook-form";
12
11
  import "react";
13
- import "react-intl";
14
- import "@mui/material";
15
- import "../../../components/ui/overflowableText/OverflowableText.js";
12
+ import "react-hook-form";
16
13
  import "localized-countries";
17
14
  import "notistack";
18
15
  import "../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
@@ -20,10 +17,9 @@ import "../../../components/ui/treeViewFinder/TreeViewFinder.js";
20
17
  import "../../../components/ui/reactHookForm/numbers/RangeInput.js";
21
18
  import "../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
22
19
  import "../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
23
- import "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
20
+ import { directoryItemSchema } from "../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
24
21
  import "@hello-pangea/dnd";
25
22
  import "../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
26
- import { getNameElementEditorEmptyFormData, getNameElementEditorSchema } from "../../../components/ui/dialogs/name-element-editor/name-element-editor-utils.js";
27
23
  import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
28
24
  import "../../../chunks/module.pXeJjFiM.js";
29
25
  import "react-resizable-panels";
@@ -54,48 +50,34 @@ import "../../../components/composite/report/report-viewer/log-table/log-table.j
54
50
  import "react-window";
55
51
  import "../../../components/composite/report/report-treeview/treeview-item.js";
56
52
  import "../../../components/composite/report/report-viewer/context/report-viewer-context.js";
57
- function getNamedLFProcessConfigFormSchema(initialName) {
58
- const formSchema = yup.object().shape({
53
+ import { ProcessType } from "./process-config.type.js";
54
+ import { processConfigModificationsShape } from "./process-config-modifications-edition.utils.js";
55
+ import { PROCESS_CONFIG_PARAMETER_FIELDS, getProcessTypesRequiringParameter } from "./process-config-type.definitions.js";
56
+ const parameterSelectionSchema = yup.object({
57
+ id: yup.string().required(),
58
+ name: yup.string()
59
+ });
60
+ const parameterField = (field) => yup.array().of(parameterSelectionSchema).when("processType", {
61
+ is: (value) => getProcessTypesRequiringParameter(field).includes(value),
62
+ then: (schema) => schema.required().length(1, YUP_REQUIRED),
63
+ otherwise: (schema) => schema
64
+ });
65
+ function getProcessConfigFormSchema(mode) {
66
+ const parameterFields = {};
67
+ PROCESS_CONFIG_PARAMETER_FIELDS.forEach((field) => {
68
+ parameterFields[field] = parameterField(field);
69
+ });
70
+ return yup.object().shape({
71
+ processType: yup.string().oneOf(Object.values(ProcessType)).required(),
72
+ [FieldConstants.NAME]: yup.string().trim().required(),
73
+ [FieldConstants.DESCRIPTION]: yup.string().optional(),
59
74
  ...processConfigModificationsShape,
60
- [FieldConstants.LOADFLOW_PARAMETERS]: yup.array().required().of(yup.object().shape({ id: yup.string().required(), name: yup.string() })).length(1, YUP_REQUIRED)
75
+ ...parameterFields,
76
+ ...mode === "create" ? {
77
+ [FieldConstants.DIRECTORY]: directoryItemSchema.nullable().required()
78
+ } : {}
61
79
  });
62
- return formSchema.concat(getNameElementEditorSchema(initialName));
63
- }
64
- function getEmptyLFProcessConfigFormData(initialName, initialDescription) {
65
- return {
66
- ...getNameElementEditorEmptyFormData(initialName, initialDescription),
67
- ...emptyProcessConfigModificationsFormData,
68
- [FieldConstants.LOADFLOW_PARAMETERS]: []
69
- };
70
- }
71
- async function getNamedLFProcessConfigFormData(processConfig, name, description) {
72
- const allUuids = /* @__PURE__ */ new Set([
73
- ...processConfig.modifications.map((modification) => modification.modificationUuid),
74
- processConfig.loadflowParametersUuid
75
- ]);
76
- const elementNamesByUuid = await fetchElementNames(allUuids);
77
- return {
78
- name,
79
- description: description ?? void 0,
80
- ...getProcessConfigModificationsFormData(processConfig.modifications, elementNamesByUuid),
81
- [FieldConstants.LOADFLOW_PARAMETERS]: [
82
- {
83
- id: processConfig.loadflowParametersUuid,
84
- name: elementNamesByUuid[processConfig.loadflowParametersUuid]
85
- }
86
- ]
87
- };
88
- }
89
- function getLFProcessConfigBackendFromFormData(formData) {
90
- return {
91
- processType: ProcessType.LOADFLOW,
92
- ...getProcessConfigModificationsBackendFromFormData(formData[FieldConstants.MODIFICATIONS]),
93
- loadflowParametersUuid: formData[FieldConstants.LOADFLOW_PARAMETERS][0].id
94
- };
95
80
  }
96
81
  export {
97
- getEmptyLFProcessConfigFormData,
98
- getLFProcessConfigBackendFromFormData,
99
- getNamedLFProcessConfigFormData,
100
- getNamedLFProcessConfigFormSchema
82
+ getProcessConfigFormSchema
101
83
  };
@@ -0,0 +1,45 @@
1
+ import { UUID } from 'node:crypto';
2
+ import { UseFormReturn } from 'react-hook-form';
3
+ import { DirectoryItemSchema } from '../../../components';
4
+ import { FieldConstants } from '../../../utils';
5
+ import { ProcessType } from './process-config.type';
6
+ import { ProcessConfigModification } from './process-config-modifications-edition.utils';
7
+ import { PersistedProcessConfigBackend, ProcessConfigBackend } from './process-config-backend.type';
8
+ import { ProcessConfigParameterField } from './process-config-type.definitions';
9
+ export type ProcessConfigMode = 'create' | 'edit';
10
+ export type ProcessConfigParameterRef = {
11
+ id: string;
12
+ name?: string;
13
+ };
14
+ type ProcessConfigParameterValues = Partial<Record<ProcessConfigParameterField, ProcessConfigParameterRef[]>>;
15
+ export type ProcessConfigFormValues = {
16
+ processType: ProcessType | '';
17
+ [FieldConstants.NAME]: string;
18
+ [FieldConstants.DESCRIPTION]?: string;
19
+ [FieldConstants.DIRECTORY]?: DirectoryItemSchema | null;
20
+ [FieldConstants.MODIFICATIONS]: ProcessConfigModification[];
21
+ } & ProcessConfigParameterValues;
22
+ export type ProcessConfigPrefillValues = Partial<Omit<ProcessConfigFormValues, 'processType'>>;
23
+ export type FetchProcessConfigHandler = (processConfigUuid: string, elementName?: string, elementDescription?: string) => Promise<ProcessConfigPrefillValues | undefined>;
24
+ export type FetchPersistedProcessConfigHandler = (processConfigUuid: UUID) => Promise<PersistedProcessConfigBackend<ProcessType>>;
25
+ export type UpdateProcessConfigHandler = (processConfigUuid: UUID, name: string, description: string, processConfig: ProcessConfigBackend<ProcessType>) => Promise<Response>;
26
+ export type ProcessConfigFormProps = {
27
+ form: UseFormReturn<ProcessConfigFormValues>;
28
+ mode: ProcessConfigMode;
29
+ initialElementName?: string;
30
+ activeDirectory?: UUID;
31
+ onFetchProcessConfig?: FetchProcessConfigHandler;
32
+ };
33
+ export type ProcessConfigDialogCommonProps = {
34
+ open: boolean;
35
+ onClose: () => void;
36
+ };
37
+ export type ProcessConfigEditionDialogProps = ProcessConfigDialogCommonProps & {
38
+ processConfigUuid: UUID;
39
+ processConfigName: string;
40
+ description: string | null;
41
+ directory: UUID;
42
+ fetchProcessConfig: FetchPersistedProcessConfigHandler;
43
+ updateProcessConfig: UpdateProcessConfigHandler;
44
+ };
45
+ export {};
@@ -0,0 +1,4 @@
1
+ import { ProcessConfigBackend, PersistedProcessConfigBackend } from './process-config-backend.type';
2
+ import { ProcessConfigFormValues } from './process-config-form.types';
3
+ export declare function getProcessConfigFormData(persistedProcessConfig: PersistedProcessConfigBackend, name: string, description: string | null): Promise<ProcessConfigFormValues>;
4
+ export declare function getProcessConfigBackendFromFormData(formData: ProcessConfigFormValues): ProcessConfigBackend;
@@ -0,0 +1,57 @@
1
+ import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
2
+ import "../../../utils/conversionUtils.js";
3
+ import "../../../utils/types/equipmentType.js";
4
+ import "react/jsx-runtime";
5
+ import "@mui/icons-material";
6
+ import { fetchElementNames } from "../../../services/directory.js";
7
+ import { getProcessConfigModificationsBackendFromFormData, getProcessConfigModificationsFormData } from "./process-config-modifications-edition.utils.js";
8
+ import { getProcessConfigTypeDefinition } from "./process-config-type.definitions.js";
9
+ async function getProcessConfigFormData(persistedProcessConfig, name, description) {
10
+ const { processConfig } = persistedProcessConfig;
11
+ const definition = getProcessConfigTypeDefinition(processConfig.processType);
12
+ if (!definition) {
13
+ throw new Error(`Unsupported process type: ${processConfig.processType}`);
14
+ }
15
+ const backendParameters = processConfig;
16
+ const parameterUuids = definition.parameters.map(({ backendProperty }) => backendParameters[backendProperty]);
17
+ const allUuids = /* @__PURE__ */ new Set([
18
+ ...processConfig.modifications.map((modification) => modification.modificationUuid),
19
+ ...parameterUuids
20
+ ]);
21
+ const elementNamesByUuid = await fetchElementNames(allUuids);
22
+ const parameterValues = {};
23
+ definition.parameters.forEach(({ field, backendProperty }) => {
24
+ const uuid = backendParameters[backendProperty];
25
+ parameterValues[field] = [{ id: uuid, name: elementNamesByUuid[uuid] }];
26
+ });
27
+ return {
28
+ processType: processConfig.processType,
29
+ [FieldConstants.NAME]: name,
30
+ [FieldConstants.DESCRIPTION]: description ?? void 0,
31
+ ...getProcessConfigModificationsFormData(processConfig.modifications, elementNamesByUuid),
32
+ ...parameterValues
33
+ };
34
+ }
35
+ function getProcessConfigBackendFromFormData(formData) {
36
+ const processType = formData.processType;
37
+ const definition = getProcessConfigTypeDefinition(processType);
38
+ if (!definition) {
39
+ throw new Error(`Unsupported process type: ${formData.processType}`);
40
+ }
41
+ const backendParameters = {};
42
+ definition.parameters.forEach(({ field, backendProperty }) => {
43
+ const [parameter] = formData[field] ?? [];
44
+ if (parameter?.id) {
45
+ backendParameters[backendProperty] = parameter.id;
46
+ }
47
+ });
48
+ return {
49
+ processType,
50
+ ...getProcessConfigModificationsBackendFromFormData(formData[FieldConstants.MODIFICATIONS] ?? []),
51
+ ...backendParameters
52
+ };
53
+ }
54
+ export {
55
+ getProcessConfigBackendFromFormData,
56
+ getProcessConfigFormData
57
+ };
@@ -30,9 +30,6 @@ export declare const processConfigModificationsShape: {
30
30
  }[];
31
31
  }[], yup.AnyObject, "", "">;
32
32
  };
33
- export declare const emptyProcessConfigModificationsFormData: {
34
- modifications: never[];
35
- };
36
33
  export declare function getProcessConfigModificationsFormData(processConfigModifications: ModificationInfo[], elementNamesByUuid: Record<string, string>): {
37
34
  modifications: {
38
35
  modification: {
@@ -18,7 +18,6 @@ const processConfigModificationSchema = yup.object().shape({
18
18
  const processConfigModificationsShape = {
19
19
  [FieldConstants.MODIFICATIONS]: yup.array().required().of(processConfigModificationSchema)
20
20
  };
21
- const emptyProcessConfigModificationsFormData = { [FieldConstants.MODIFICATIONS]: [] };
22
21
  function getProcessConfigModificationsFormData(processConfigModifications, elementNamesByUuid) {
23
22
  return {
24
23
  [FieldConstants.MODIFICATIONS]: processConfigModifications.map((modification) => ({
@@ -43,7 +42,6 @@ function getProcessConfigModificationsBackendFromFormData(formProcessConfigModif
43
42
  };
44
43
  }
45
44
  export {
46
- emptyProcessConfigModificationsFormData,
47
45
  getProcessConfigModificationsBackendFromFormData,
48
46
  getProcessConfigModificationsFormData,
49
47
  processConfigModificationsShape
@@ -0,0 +1,56 @@
1
+ import { UUID } from 'node:crypto';
2
+ import { ElementType, FieldConstants } from '../../../utils';
3
+ import { ProcessType } from './process-config.type';
4
+ export type ProcessConfigParameterField = FieldConstants.LOADFLOW_PARAMETERS | FieldConstants.SECURITY_ANALYSIS_PARAMETERS | FieldConstants.SHORTCIRCUIT_PARAMETERS;
5
+ export type ProcessConfigParameterUuidProperties = {
6
+ loadflowParametersUuid: UUID;
7
+ securityAnalysisParametersUuid: UUID;
8
+ shortCircuitParametersUuid: UUID;
9
+ };
10
+ export type ProcessConfigParameterDefinition = {
11
+ field: ProcessConfigParameterField;
12
+ elementType: ElementType;
13
+ label: string;
14
+ backendProperty: keyof ProcessConfigParameterUuidProperties;
15
+ };
16
+ export type ProcessConfigTypeDefinition = {
17
+ label: string;
18
+ parameters: readonly ProcessConfigParameterDefinition[];
19
+ };
20
+ export declare const PROCESS_CONFIG_TYPE_DEFINITIONS: {
21
+ readonly SECURITY_ANALYSIS: {
22
+ readonly label: "process_config/securityAnalysis";
23
+ readonly parameters: readonly [{
24
+ readonly field: FieldConstants.LOADFLOW_PARAMETERS;
25
+ readonly elementType: ElementType.LOADFLOW_PARAMETERS;
26
+ readonly label: "process_config/loadflow";
27
+ readonly backendProperty: "loadflowParametersUuid";
28
+ }, {
29
+ readonly field: FieldConstants.SECURITY_ANALYSIS_PARAMETERS;
30
+ readonly elementType: ElementType.SECURITY_ANALYSIS_PARAMETERS;
31
+ readonly label: "process_config/securityAnalysis";
32
+ readonly backendProperty: "securityAnalysisParametersUuid";
33
+ }];
34
+ };
35
+ readonly LOADFLOW: {
36
+ readonly label: "process_config/loadflow";
37
+ readonly parameters: readonly [{
38
+ readonly field: FieldConstants.LOADFLOW_PARAMETERS;
39
+ readonly elementType: ElementType.LOADFLOW_PARAMETERS;
40
+ readonly label: "process_config/loadflow";
41
+ readonly backendProperty: "loadflowParametersUuid";
42
+ }];
43
+ };
44
+ readonly SHORT_CIRCUIT: {
45
+ readonly label: "process_config/shortcircuit";
46
+ readonly parameters: readonly [{
47
+ readonly field: FieldConstants.SHORTCIRCUIT_PARAMETERS;
48
+ readonly elementType: ElementType.SHORT_CIRCUIT_PARAMETERS;
49
+ readonly label: "process_config/shortcircuit";
50
+ readonly backendProperty: "shortCircuitParametersUuid";
51
+ }];
52
+ };
53
+ };
54
+ export declare const PROCESS_CONFIG_PARAMETER_FIELDS: ProcessConfigParameterField[];
55
+ export declare function getProcessConfigTypeDefinition(processType: ProcessType | ''): ProcessConfigTypeDefinition | undefined;
56
+ export declare function getProcessTypesRequiringParameter(field: ProcessConfigParameterField): ProcessType[];
@@ -0,0 +1,70 @@
1
+ import { FieldConstants } from "../../../utils/constants/fieldConstants.js";
2
+ import "../../../utils/conversionUtils.js";
3
+ import { ElementType } from "../../../utils/types/elementType.js";
4
+ import "../../../utils/types/equipmentType.js";
5
+ import "react/jsx-runtime";
6
+ import "@mui/icons-material";
7
+ import { ProcessType } from "./process-config.type.js";
8
+ const PROCESS_CONFIG_TYPE_DEFINITIONS = {
9
+ [ProcessType.SECURITY_ANALYSIS]: {
10
+ label: "process_config/securityAnalysis",
11
+ parameters: [
12
+ {
13
+ field: FieldConstants.LOADFLOW_PARAMETERS,
14
+ elementType: ElementType.LOADFLOW_PARAMETERS,
15
+ label: "process_config/loadflow",
16
+ backendProperty: "loadflowParametersUuid"
17
+ },
18
+ {
19
+ field: FieldConstants.SECURITY_ANALYSIS_PARAMETERS,
20
+ elementType: ElementType.SECURITY_ANALYSIS_PARAMETERS,
21
+ label: "process_config/securityAnalysis",
22
+ backendProperty: "securityAnalysisParametersUuid"
23
+ }
24
+ ]
25
+ },
26
+ [ProcessType.LOADFLOW]: {
27
+ label: "process_config/loadflow",
28
+ parameters: [
29
+ {
30
+ field: FieldConstants.LOADFLOW_PARAMETERS,
31
+ elementType: ElementType.LOADFLOW_PARAMETERS,
32
+ label: "process_config/loadflow",
33
+ backendProperty: "loadflowParametersUuid"
34
+ }
35
+ ]
36
+ },
37
+ [ProcessType.SHORT_CIRCUIT]: {
38
+ label: "process_config/shortcircuit",
39
+ parameters: [
40
+ {
41
+ field: FieldConstants.SHORTCIRCUIT_PARAMETERS,
42
+ elementType: ElementType.SHORT_CIRCUIT_PARAMETERS,
43
+ label: "process_config/shortcircuit",
44
+ backendProperty: "shortCircuitParametersUuid"
45
+ }
46
+ ]
47
+ }
48
+ };
49
+ const definitionsByProcessType = PROCESS_CONFIG_TYPE_DEFINITIONS;
50
+ const PROCESS_CONFIG_PARAMETER_FIELDS = [
51
+ ...new Set(
52
+ Object.values(PROCESS_CONFIG_TYPE_DEFINITIONS).flatMap(
53
+ (definition) => definition.parameters.map((parameter) => parameter.field)
54
+ )
55
+ )
56
+ ];
57
+ function getProcessConfigTypeDefinition(processType) {
58
+ return definitionsByProcessType[processType];
59
+ }
60
+ function getProcessTypesRequiringParameter(field) {
61
+ return Object.values(ProcessType).filter(
62
+ (processType) => getProcessConfigTypeDefinition(processType)?.parameters.some((parameter) => parameter.field === field)
63
+ );
64
+ }
65
+ export {
66
+ PROCESS_CONFIG_PARAMETER_FIELDS,
67
+ PROCESS_CONFIG_TYPE_DEFINITIONS,
68
+ getProcessConfigTypeDefinition,
69
+ getProcessTypesRequiringParameter
70
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) 2026, RTE (http://www.rte-france.com)
3
+ * This Source Code Form is subject to the terms of the Mozilla Public
4
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
5
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
+ */
7
+ type ProcessTypeChangeDialogProps = {
8
+ open: boolean;
9
+ onCancel: () => void;
10
+ onConfirm: () => void;
11
+ };
12
+ export declare function ProcessTypeChangeDialog({ open, onCancel, onConfirm }: Readonly<ProcessTypeChangeDialogProps>): import("react").JSX.Element;
13
+ export {};
@@ -0,0 +1,27 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Dialog, DialogTitle, DialogContent, Typography, DialogActions, Button } from "@mui/material";
3
+ import { FormattedMessage } from "react-intl";
4
+ function ProcessTypeChangeDialog({ open, onCancel, onConfirm }) {
5
+ return /* @__PURE__ */ jsxs(
6
+ Dialog,
7
+ {
8
+ open,
9
+ onClose: onCancel,
10
+ disableEscapeKeyDown: true,
11
+ maxWidth: "xs",
12
+ slotProps: { paper: { sx: { minWidth: 320 } } },
13
+ "aria-labelledby": "process-type-change-warning-title",
14
+ children: [
15
+ /* @__PURE__ */ jsx(DialogTitle, { id: "process-type-change-warning-title", children: /* @__PURE__ */ jsx(FormattedMessage, { id: "processConfigProcessTypeChangeTitle" }) }),
16
+ /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(Typography, { children: /* @__PURE__ */ jsx(FormattedMessage, { id: "processConfigProcessTypeChangeWarning" }) }) }),
17
+ /* @__PURE__ */ jsxs(DialogActions, { children: [
18
+ /* @__PURE__ */ jsx(Button, { variant: "text", sx: { textTransform: "none" }, onClick: onCancel, children: /* @__PURE__ */ jsx(FormattedMessage, { id: "cancel" }) }),
19
+ /* @__PURE__ */ jsx(Button, { variant: "contained", sx: { textTransform: "none" }, onClick: onConfirm, children: /* @__PURE__ */ jsx(FormattedMessage, { id: "modifier" }) })
20
+ ] })
21
+ ]
22
+ }
23
+ );
24
+ }
25
+ export {
26
+ ProcessTypeChangeDialog
27
+ };
@@ -0,0 +1,6 @@
1
+ import { Option } from '../../../../utils';
2
+ type ProcessTypeSelectProps = {
3
+ onCheckNewValue: (value: Option | null) => boolean;
4
+ };
5
+ export declare function ProcessTypeSelect({ onCheckNewValue }: Readonly<ProcessTypeSelectProps>): import("react").JSX.Element;
6
+ export {};
@@ -0,0 +1,69 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import "@mui/material";
3
+ import "@mui/icons-material";
4
+ import "react-intl";
5
+ import "../../../../components/ui/overflowableText/OverflowableText.js";
6
+ import "../../../../utils/conversionUtils.js";
7
+ import "../../../../utils/types/equipmentType.js";
8
+ import "react";
9
+ import "react-hook-form";
10
+ import "localized-countries";
11
+ import "notistack";
12
+ import "../../../../components/ui/reactHookForm/provider/CustomFormProvider.js";
13
+ import "yup";
14
+ import "../../../../components/ui/treeViewFinder/TreeViewFinder.js";
15
+ import "../../../../components/ui/reactHookForm/numbers/RangeInput.js";
16
+ import { SelectInput } from "../../../../components/ui/reactHookForm/selectInputs/SelectInput.js";
17
+ import "../../../../components/ui/dialogs/descriptionModificationDialog/DescriptionModificationDialog.js";
18
+ import "../../../../components/ui/reactHookForm/expandableInput/ExpandableInput.js";
19
+ import "../../../../components/ui/reactHookForm/directory-item-input/directory-item-utils.js";
20
+ import "@hello-pangea/dnd";
21
+ import "../../../../components/ui/dialogs/elementSaveDialog/ElementSaveDialog.js";
22
+ import "../../../../components/ui/snackbarProvider/SnackbarProvider.js";
23
+ import "../../../../chunks/module.pXeJjFiM.js";
24
+ import "react-resizable-panels";
25
+ import "react-papaparse";
26
+ import "react-dom";
27
+ import "../../../../chunks/index.BJsVzTMz.js";
28
+ import "clsx";
29
+ import "../../../../components/composite/filter/FilterCreationDialog.js";
30
+ import "../../../../components/composite/filter/HeaderFilterForm.js";
31
+ import "../../../../components/composite/filter/explicitNaming/ExplicitNamingFilterForm.js";
32
+ import "../../../../components/composite/filter/expert/ExpertFilterForm.js";
33
+ import "../../../../components/composite/filter/expert/ExpertFilterEditionDialog.js";
34
+ import "../../../../components/composite/filter/expert/expertFilterConstants.js";
35
+ import "react-querybuilder";
36
+ import "uuid";
37
+ import "../../../../components/composite/filter/explicitNaming/ExplicitNamingFilterEditionDialog.js";
38
+ import "../../../../components/composite/filter/utils/filterFormUtils.js";
39
+ import "@react-querybuilder/material";
40
+ import "../../../../components/composite/reactQueryBuilder/CustomReactQueryBuilder.js";
41
+ import "../../../../components/composite/reactQueryBuilder/PropertyValueEditor.js";
42
+ import "../../../../components/composite/agGridTable/BottomTableButtons.js";
43
+ import "../../../../components/composite/agGridTable/CustomAgGridTable.js";
44
+ import "ag-grid-community";
45
+ import "../../../../components/composite/customAGGrid/customAggrid.js";
46
+ import "../../../../components/composite/customAGGrid/context/custom-aggrid-context.js";
47
+ import "mathjs";
48
+ import "../../../../components/composite/report/report-viewer/log-table/log-table.js";
49
+ import "react-window";
50
+ import "../../../../components/composite/report/report-treeview/treeview-item.js";
51
+ import "../../../../components/composite/report/report-viewer/context/report-viewer-context.js";
52
+ import { PROCESS_CONFIG_TYPES } from "../../common/process-config-form.constants.js";
53
+ function ProcessTypeSelect({ onCheckNewValue }) {
54
+ return /* @__PURE__ */ jsx(
55
+ SelectInput,
56
+ {
57
+ name: "processType",
58
+ label: "processType",
59
+ options: PROCESS_CONFIG_TYPES,
60
+ onCheckNewValue,
61
+ fullWidth: true,
62
+ disableClearable: true,
63
+ size: "small"
64
+ }
65
+ );
66
+ }
67
+ export {
68
+ ProcessTypeSelect
69
+ };
@@ -0,0 +1,19 @@
1
+ import { UseFormReturn } from 'react-hook-form';
2
+ import { ElementAttributes } from '../../../../utils';
3
+ import { FetchProcessConfigHandler, ProcessConfigFormValues } from '../../common/process-config-form.types';
4
+ type UsePrefillSelectionParams = {
5
+ form: UseFormReturn<ProcessConfigFormValues>;
6
+ onFetchProcessConfig?: FetchProcessConfigHandler;
7
+ selectedProcessType: string;
8
+ };
9
+ export declare function usePrefillSelection({ form, onFetchProcessConfig, selectedProcessType }: UsePrefillSelectionParams): {
10
+ isSelectorOpen: boolean;
11
+ openSelector: () => void;
12
+ itemFilter: (item: ElementAttributes) => boolean;
13
+ handleSelect: (nodes: ReadonlyArray<{
14
+ id: string;
15
+ name?: string;
16
+ description?: string;
17
+ }>) => Promise<void>;
18
+ };
19
+ export {};