@gridsuite/commons-ui 0.252.0 → 0.253.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.
- package/dist/features/network-modification-table/use-modifications-drag-and-drop.js +43 -49
- package/dist/features/parameters/common/parameter-field.js +1 -9
- package/dist/features/parameters/network-visualizations/map-parameters.js +1 -12
- package/dist/features/parameters/network-visualizations/single-line-diagram-parameters.js +2 -13
- package/dist/features/parameters/parameters-style.d.ts +0 -1
- package/dist/features/parameters/parameters-style.js +0 -1
- package/dist/index.js +3 -3
- package/dist/services/index.js +3 -3
- package/dist/services/networkModification.d.ts +9 -17
- package/dist/services/networkModification.js +16 -19
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ import { snackWithFallback } from "../../utils/error.js";
|
|
|
13
13
|
import "../../utils/types/equipmentType.js";
|
|
14
14
|
import "@mui/icons-material";
|
|
15
15
|
import { injectForbiddenChips, CHIP_ATTR } from "./drag-forbidden-chip.js";
|
|
16
|
-
import {
|
|
16
|
+
import { moveModification, ModificationContainerType } from "../../services/networkModification.js";
|
|
17
17
|
import "localized-countries";
|
|
18
18
|
import "localized-countries/data/fr";
|
|
19
19
|
import "localized-countries/data/en";
|
|
@@ -97,40 +97,6 @@ const useModificationsDragAndDrop = ({
|
|
|
97
97
|
},
|
|
98
98
|
[containerRef, isDropForbidden, rows]
|
|
99
99
|
);
|
|
100
|
-
const handleDragEndComposite = useCallback(
|
|
101
|
-
(sourceRow, targetRow, droppingIntoExpandedComposite, isDraggingDown) => {
|
|
102
|
-
const movingUuid = sourceRow.original.uuid;
|
|
103
|
-
const sourceCompositeUuid = sourceRow.depth > 0 ? sourceRow.getParentRow()?.original.uuid ?? null : null;
|
|
104
|
-
const targetCompositeUuid = getTargetCompositeUuid(droppingIntoExpandedComposite, targetRow);
|
|
105
|
-
const targetSiblings = getTargetSiblings(targetCompositeUuid, rows);
|
|
106
|
-
let beforeUuid;
|
|
107
|
-
if (droppingIntoExpandedComposite) {
|
|
108
|
-
beforeUuid = targetSiblings[0]?.original.uuid ?? null;
|
|
109
|
-
} else {
|
|
110
|
-
const landingIndexInSiblings = targetSiblings.findIndex(
|
|
111
|
-
(r) => r.original.uuid === targetRow.original.uuid
|
|
112
|
-
);
|
|
113
|
-
const beforeSiblingIndex = isDraggingDown ? landingIndexInSiblings + 1 : landingIndexInSiblings;
|
|
114
|
-
beforeUuid = targetSiblings[beforeSiblingIndex]?.original.uuid ?? null;
|
|
115
|
-
}
|
|
116
|
-
const previousComposed = composedModifications;
|
|
117
|
-
setComposedModifications(
|
|
118
|
-
(prev) => moveSubModificationInTree(movingUuid, sourceCompositeUuid, targetCompositeUuid, beforeUuid, prev)
|
|
119
|
-
);
|
|
120
|
-
changeCompositeSubModificationOrder(
|
|
121
|
-
studyUuid,
|
|
122
|
-
currentNodeUuid,
|
|
123
|
-
movingUuid,
|
|
124
|
-
sourceCompositeUuid,
|
|
125
|
-
targetCompositeUuid,
|
|
126
|
-
beforeUuid
|
|
127
|
-
).catch((error) => {
|
|
128
|
-
snackWithFallback(snackError, error, { headerId: "errReorderModificationMsg" });
|
|
129
|
-
setComposedModifications(previousComposed);
|
|
130
|
-
});
|
|
131
|
-
},
|
|
132
|
-
[rows, studyUuid, currentNodeUuid, snackError, composedModifications, setComposedModifications]
|
|
133
|
-
);
|
|
134
100
|
const handleDragEnd = useCallback(
|
|
135
101
|
(result) => {
|
|
136
102
|
clearRowDragIndicators(containerRef.current);
|
|
@@ -144,37 +110,65 @@ const useModificationsDragAndDrop = ({
|
|
|
144
110
|
if (isDropForbidden(sourceRow, targetRow)) {
|
|
145
111
|
return;
|
|
146
112
|
}
|
|
147
|
-
const
|
|
113
|
+
const movingUuid = sourceRow.original.uuid;
|
|
114
|
+
const sourceCompositeUuid = sourceRow.depth > 0 ? sourceRow.getParentRow()?.original.uuid ?? null : null;
|
|
148
115
|
const isDraggingDown = destination.index > source.index;
|
|
149
116
|
const droppingIntoExpandedComposite = isDraggingDown && targetRow.getIsExpanded();
|
|
150
|
-
|
|
151
|
-
|
|
117
|
+
const isSubRowInvolved = sourceRow.depth > 0 || targetRow.depth > 0;
|
|
118
|
+
const targetCompositeUuid = getTargetCompositeUuid(droppingIntoExpandedComposite, targetRow);
|
|
119
|
+
const sourceContainerId = sourceRow.depth > 0 ? sourceRow.getParentRow()?.original.uuid ?? null : null;
|
|
120
|
+
const targetContainerId = targetCompositeUuid;
|
|
121
|
+
const previousModifications = [...composedModifications];
|
|
122
|
+
let beforeUuid;
|
|
123
|
+
if (droppingIntoExpandedComposite || isSubRowInvolved) {
|
|
124
|
+
const targetSiblings = getTargetSiblings(targetCompositeUuid, rows);
|
|
125
|
+
if (droppingIntoExpandedComposite) {
|
|
126
|
+
beforeUuid = targetSiblings[0]?.original.uuid ?? null;
|
|
127
|
+
} else {
|
|
128
|
+
const landingIndexInSiblings = targetSiblings.findIndex(
|
|
129
|
+
(r) => r.original.uuid === targetRow.original.uuid
|
|
130
|
+
);
|
|
131
|
+
const beforeSiblingIndex = isDraggingDown ? landingIndexInSiblings + 1 : landingIndexInSiblings;
|
|
132
|
+
beforeUuid = targetSiblings[beforeSiblingIndex]?.original.uuid ?? null;
|
|
133
|
+
}
|
|
134
|
+
setComposedModifications(
|
|
135
|
+
(prev) => moveSubModificationInTree(movingUuid, sourceCompositeUuid, targetCompositeUuid, beforeUuid, prev)
|
|
136
|
+
);
|
|
152
137
|
} else {
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
const oldPosition = composedModifications.findIndex((m) => m.uuid === sourceDepth0Uuid);
|
|
156
|
-
const newPosition = composedModifications.findIndex((m) => m.uuid === targetDepth0Uuid);
|
|
138
|
+
const oldPosition = composedModifications.findIndex((m) => m.uuid === sourceRow.original.uuid);
|
|
139
|
+
const newPosition = composedModifications.findIndex((m) => m.uuid === targetRow.original.uuid);
|
|
157
140
|
if (oldPosition === -1 || newPosition === -1 || oldPosition === newPosition || !currentNodeUuid) {
|
|
158
141
|
return;
|
|
159
142
|
}
|
|
160
|
-
const previousModifications = [...composedModifications];
|
|
161
143
|
const updatedModifications = [...composedModifications];
|
|
162
144
|
const [movedItem] = updatedModifications.splice(oldPosition, 1);
|
|
163
145
|
updatedModifications.splice(newPosition, 0, movedItem);
|
|
146
|
+
beforeUuid = updatedModifications[newPosition + 1]?.uuid ?? null;
|
|
164
147
|
setComposedModifications(updatedModifications);
|
|
165
|
-
const before = updatedModifications[newPosition + 1]?.uuid ?? null;
|
|
166
|
-
changeNetworkModificationOrder(studyUuid, currentNodeUuid, movedItem.uuid, before).catch((error) => {
|
|
167
|
-
snackWithFallback(snackError, error, { headerId: "errReorderModificationMsg" });
|
|
168
|
-
setComposedModifications(previousModifications);
|
|
169
|
-
});
|
|
170
148
|
}
|
|
149
|
+
moveModification(
|
|
150
|
+
studyUuid,
|
|
151
|
+
currentNodeUuid,
|
|
152
|
+
movingUuid,
|
|
153
|
+
{
|
|
154
|
+
id: sourceContainerId,
|
|
155
|
+
type: sourceContainerId ? ModificationContainerType.COMPOSITE : ModificationContainerType.GROUP
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: targetContainerId,
|
|
159
|
+
type: targetContainerId ? ModificationContainerType.COMPOSITE : ModificationContainerType.GROUP
|
|
160
|
+
},
|
|
161
|
+
beforeUuid
|
|
162
|
+
).catch((error) => {
|
|
163
|
+
snackWithFallback(snackError, error, { headerId: "errReorderModificationMsg" });
|
|
164
|
+
setComposedModifications(previousModifications);
|
|
165
|
+
});
|
|
171
166
|
},
|
|
172
167
|
[
|
|
173
168
|
containerRef,
|
|
174
169
|
onDragEnd,
|
|
175
170
|
rows,
|
|
176
171
|
isDropForbidden,
|
|
177
|
-
handleDragEndComposite,
|
|
178
172
|
composedModifications,
|
|
179
173
|
currentNodeUuid,
|
|
180
174
|
setComposedModifications,
|
|
@@ -41,13 +41,6 @@ import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
|
|
|
41
41
|
import "mui-nested-menu";
|
|
42
42
|
import "react-resizable-panels";
|
|
43
43
|
import "react-papaparse";
|
|
44
|
-
import { LineSeparator } from "./line-separator.js";
|
|
45
|
-
import "./parameter-layout/parameter-layout-provider.js";
|
|
46
|
-
import "./widget/parameter-line-slider.js";
|
|
47
|
-
import "./contingency-table/contingency-table.js";
|
|
48
|
-
import "./contingency-table/columns-definitions.js";
|
|
49
|
-
import "@hookform/resolvers/yup";
|
|
50
|
-
import "../../../components/composite/filter/HeaderFilterForm.js";
|
|
51
44
|
function ParameterField({
|
|
52
45
|
id,
|
|
53
46
|
name,
|
|
@@ -117,8 +110,7 @@ function ParameterField({
|
|
|
117
110
|
const INPUT_GRID_SIZE = 12 - LABEL_GRID_SIZE;
|
|
118
111
|
return /* @__PURE__ */ jsxs(Grid2, { container: true, spacing: 1, paddingTop: 1, justifyContent: "space-between", sx: { width: "100%" }, children: [
|
|
119
112
|
/* @__PURE__ */ jsx(Grid2, { size: LABEL_GRID_SIZE, children: /* @__PURE__ */ jsx(CustomTooltip, { title: description, children: /* @__PURE__ */ jsx(Typography, { sx: parametersStyles.parameterName, children: label ? /* @__PURE__ */ jsx(FormattedMessage, { id: label }) : name }) }, name) }),
|
|
120
|
-
/* @__PURE__ */ jsx(Grid2, { container: true, size: INPUT_GRID_SIZE, sx: parametersStyles.controlItem, children: renderField() })
|
|
121
|
-
/* @__PURE__ */ jsx(LineSeparator, {})
|
|
113
|
+
/* @__PURE__ */ jsx(Grid2, { container: true, size: INPUT_GRID_SIZE, sx: parametersStyles.controlItem, children: renderField() })
|
|
122
114
|
] }, name);
|
|
123
115
|
}
|
|
124
116
|
export {
|
|
@@ -3,8 +3,8 @@ import { Grid2 } from "@mui/material";
|
|
|
3
3
|
import { FormattedMessage } from "react-intl";
|
|
4
4
|
import { useState, useEffect } from "react";
|
|
5
5
|
import { MAP_BASE_MAP, NetworkVisualizationTabValues, PARAM_MAP_BASEMAP, PARAM_LINE_FULL_PATH, PARAM_LINE_PARALLEL_PATH, INTL_LINE_FLOW_MODE_OPTIONS, LINE_FLOW_MODE, PARAM_LINE_FLOW_MODE, MAP_MANUAL_REFRESH, PARAM_MAP_MANUAL_REFRESH } from "./constants.js";
|
|
6
|
-
import "@mui/icons-material";
|
|
7
6
|
import { parametersStyles } from "../parameters-style.js";
|
|
7
|
+
import "@mui/icons-material";
|
|
8
8
|
import "../../../components/ui/overflowableText/OverflowableText.js";
|
|
9
9
|
import "../../../utils/conversionUtils.js";
|
|
10
10
|
import { snackWithFallback } from "../../../utils/error.js";
|
|
@@ -35,13 +35,6 @@ import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
|
|
|
35
35
|
import "mui-nested-menu";
|
|
36
36
|
import "react-resizable-panels";
|
|
37
37
|
import "react-papaparse";
|
|
38
|
-
import { LineSeparator } from "../common/line-separator.js";
|
|
39
|
-
import "../common/parameter-layout/parameter-layout-provider.js";
|
|
40
|
-
import "../common/widget/parameter-line-slider.js";
|
|
41
|
-
import "../common/contingency-table/contingency-table.js";
|
|
42
|
-
import "../common/contingency-table/columns-definitions.js";
|
|
43
|
-
import "@hookform/resolvers/yup";
|
|
44
|
-
import "../../../components/composite/filter/HeaderFilterForm.js";
|
|
45
38
|
const fetchMapBaseOption = async () => {
|
|
46
39
|
const studyMetadata = await fetchStudyMetadata();
|
|
47
40
|
return studyMetadata.baseMapOptions;
|
|
@@ -96,13 +89,9 @@ function MapParameters() {
|
|
|
96
89
|
justifyContent: "space-between",
|
|
97
90
|
children: [
|
|
98
91
|
lineSwitch(PARAM_LINE_FULL_PATH, PARAM_LINE_FULL_PATH),
|
|
99
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
100
92
|
lineSwitch(PARAM_LINE_PARALLEL_PATH, PARAM_LINE_PARALLEL_PATH),
|
|
101
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
102
93
|
lineFlow(PARAM_LINE_FLOW_MODE, LINE_FLOW_MODE, INTL_LINE_FLOW_MODE_OPTIONS),
|
|
103
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
104
94
|
lineSwitch(PARAM_MAP_MANUAL_REFRESH, MAP_MANUAL_REFRESH),
|
|
105
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
106
95
|
mapBaseMap
|
|
107
96
|
]
|
|
108
97
|
},
|
|
@@ -2,8 +2,8 @@ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { Grid2 } from "@mui/material";
|
|
3
3
|
import { useMemo } from "react";
|
|
4
4
|
import { FormattedMessage } from "react-intl";
|
|
5
|
+
import { INTL_SUBSTATION_LAYOUT_OPTIONS, SUBSTATION_LAYOUT, NetworkVisualizationTabValues, PARAM_SUBSTATION_LAYOUT, COMPONENT_LIBRARY, PARAM_COMPONENT_LIBRARY, DIAGONAL_LABEL, PARAM_DIAGONAL_LABEL, CENTER_LABEL, PARAM_CENTER_LABEL, CUSTOM_REAL_TIME_STATE_ESTIMATION, PARAM_STATE_ESTIMATION } from "./constants.js";
|
|
5
6
|
import "@mui/icons-material";
|
|
6
|
-
import { parametersStyles } from "../parameters-style.js";
|
|
7
7
|
import "../../../components/ui/overflowableText/OverflowableText.js";
|
|
8
8
|
import "../../../utils/conversionUtils.js";
|
|
9
9
|
import "../../../utils/types/equipmentType.js";
|
|
@@ -32,14 +32,7 @@ import "../../../components/ui/snackbarProvider/SnackbarProvider.js";
|
|
|
32
32
|
import "mui-nested-menu";
|
|
33
33
|
import "react-resizable-panels";
|
|
34
34
|
import "react-papaparse";
|
|
35
|
-
import {
|
|
36
|
-
import "../common/parameter-layout/parameter-layout-provider.js";
|
|
37
|
-
import "../common/widget/parameter-line-slider.js";
|
|
38
|
-
import "../common/contingency-table/contingency-table.js";
|
|
39
|
-
import "../common/contingency-table/columns-definitions.js";
|
|
40
|
-
import "@hookform/resolvers/yup";
|
|
41
|
-
import "../../../components/composite/filter/HeaderFilterForm.js";
|
|
42
|
-
import { INTL_SUBSTATION_LAYOUT_OPTIONS, SUBSTATION_LAYOUT, NetworkVisualizationTabValues, PARAM_SUBSTATION_LAYOUT, COMPONENT_LIBRARY, PARAM_COMPONENT_LIBRARY, DIAGONAL_LABEL, PARAM_DIAGONAL_LABEL, CENTER_LABEL, PARAM_CENTER_LABEL, CUSTOM_REAL_TIME_STATE_ESTIMATION, PARAM_STATE_ESTIMATION } from "./constants.js";
|
|
35
|
+
import { parametersStyles } from "../parameters-style.js";
|
|
43
36
|
function SingleLineDiagramParameters({ componentLibraries }) {
|
|
44
37
|
const componentLibsRenderCache = useMemo(
|
|
45
38
|
() => Object.fromEntries(componentLibraries.filter(Boolean).map((libLabel) => [libLabel, libLabel])),
|
|
@@ -88,13 +81,9 @@ function SingleLineDiagramParameters({ componentLibraries }) {
|
|
|
88
81
|
justifyContent: "space-between",
|
|
89
82
|
children: [
|
|
90
83
|
labelPosition(PARAM_DIAGONAL_LABEL, DIAGONAL_LABEL),
|
|
91
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
92
84
|
labelPosition(PARAM_CENTER_LABEL, CENTER_LABEL),
|
|
93
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
94
85
|
substationLineDropDown,
|
|
95
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
96
86
|
componentLineDropDown,
|
|
97
|
-
/* @__PURE__ */ jsx(LineSeparator, {}),
|
|
98
87
|
labelPosition(PARAM_STATE_ESTIMATION, CUSTOM_REAL_TIME_STATE_ESTIMATION)
|
|
99
88
|
]
|
|
100
89
|
},
|
package/dist/index.js
CHANGED
|
@@ -340,7 +340,7 @@ import { fetchCurrentAnnouncement, fetchUserDetails } from "./services/userAdmin
|
|
|
340
340
|
import { DEFAULT_TIMEOUT_MS, IGNORE_SIGNAL, backendFetch, backendFetchFile, backendFetchJson, backendFetchText, getRequestParamFromList, handleNotOkResponse, parseError, safeEncodeURIComponent } from "./services/utils.js";
|
|
341
341
|
import { getVoltageInitParameters, getVoltageInitUrl } from "./services/voltage-init.js";
|
|
342
342
|
import { fetchShortCircuitParameters, getShortCircuitSpecificParametersDescription, updateShortCircuitParameters } from "./services/short-circuit-analysis.js";
|
|
343
|
-
import {
|
|
343
|
+
import { ModificationContainerType, fetchBusBarSectionsForNewCoupler, fetchNetworkModification, getBaseNetworkModificationUrl, getNetworkModificationsFromComposite, getStudyUrlWithNodeUuid, moveModification, setModificationMetadata, updateModification, updateModificationStatusByRootNetwork, updateNetworkModificationsMetadata } from "./services/networkModification.js";
|
|
344
344
|
import { fetchDynamicSimulationModels } from "./services/dynamic-mapping.js";
|
|
345
345
|
import { fetchDynamicSimulationParameters, fetchDynamicSimulationProviders, updateDynamicSimulationParameters } from "./services/dynamic-simulation.js";
|
|
346
346
|
import { fetchContingencyAndFiltersLists, fetchDynamicSecurityAnalysisProviders } from "./services/dynamic-security-analysis.js";
|
|
@@ -864,6 +864,7 @@ export {
|
|
|
864
864
|
MicroSusceptanceAdornment,
|
|
865
865
|
MidFormError,
|
|
866
866
|
ModificationByAssignmentForm,
|
|
867
|
+
ModificationContainerType,
|
|
867
868
|
ModificationRow,
|
|
868
869
|
ModificationType,
|
|
869
870
|
ModifyElementSelection,
|
|
@@ -1165,8 +1166,6 @@ export {
|
|
|
1165
1166
|
cardErrorBoundaryEn,
|
|
1166
1167
|
cardErrorBoundaryFr,
|
|
1167
1168
|
catchErrorHandler,
|
|
1168
|
-
changeCompositeSubModificationOrder,
|
|
1169
|
-
changeNetworkModificationOrder,
|
|
1170
1169
|
commonButtonEn,
|
|
1171
1170
|
commonButtonFr,
|
|
1172
1171
|
componentsEn,
|
|
@@ -1519,6 +1518,7 @@ export {
|
|
|
1519
1518
|
modificationByAssignmentFormSchema,
|
|
1520
1519
|
modificationByAssignmentFormToDto,
|
|
1521
1520
|
modificationPropertiesSchema,
|
|
1521
|
+
moveModification,
|
|
1522
1522
|
moveSubModificationInTree,
|
|
1523
1523
|
multipleSelectionDialogEn,
|
|
1524
1524
|
multipleSelectionDialogFr,
|
package/dist/services/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { fetchCurrentAnnouncement, fetchUserDetails } from "./userAdmin.js";
|
|
|
12
12
|
import { DEFAULT_TIMEOUT_MS, IGNORE_SIGNAL, backendFetch, backendFetchFile, backendFetchJson, backendFetchText, getRequestParamFromList, handleNotOkResponse, parseError, safeEncodeURIComponent } from "./utils.js";
|
|
13
13
|
import { getVoltageInitParameters, getVoltageInitUrl } from "./voltage-init.js";
|
|
14
14
|
import { fetchShortCircuitParameters, getShortCircuitSpecificParametersDescription, updateShortCircuitParameters } from "./short-circuit-analysis.js";
|
|
15
|
-
import {
|
|
15
|
+
import { ModificationContainerType, fetchBusBarSectionsForNewCoupler, fetchNetworkModification, getBaseNetworkModificationUrl, getNetworkModificationsFromComposite, getStudyUrlWithNodeUuid, moveModification, setModificationMetadata, updateModification, updateModificationStatusByRootNetwork, updateNetworkModificationsMetadata } from "./networkModification.js";
|
|
16
16
|
import { fetchDynamicSimulationModels } from "./dynamic-mapping.js";
|
|
17
17
|
import { fetchDynamicSimulationParameters, fetchDynamicSimulationProviders, updateDynamicSimulationParameters } from "./dynamic-simulation.js";
|
|
18
18
|
import { fetchContingencyAndFiltersLists, fetchDynamicSecurityAnalysisProviders } from "./dynamic-security-analysis.js";
|
|
@@ -20,14 +20,13 @@ import { fetchDynamicMarginCalculationParameters, fetchDynamicMarginCalculationP
|
|
|
20
20
|
export {
|
|
21
21
|
DEFAULT_TIMEOUT_MS,
|
|
22
22
|
IGNORE_SIGNAL,
|
|
23
|
+
ModificationContainerType,
|
|
23
24
|
PREFIX_STUDY_QUERIES,
|
|
24
25
|
PermissionType,
|
|
25
26
|
backendFetch,
|
|
26
27
|
backendFetchFile,
|
|
27
28
|
backendFetchJson,
|
|
28
29
|
backendFetchText,
|
|
29
|
-
changeCompositeSubModificationOrder,
|
|
30
|
-
changeNetworkModificationOrder,
|
|
31
30
|
createFilter,
|
|
32
31
|
createParameter,
|
|
33
32
|
elementAlreadyExists,
|
|
@@ -94,6 +93,7 @@ export {
|
|
|
94
93
|
hasElementPermission,
|
|
95
94
|
isExploreMetadata,
|
|
96
95
|
isStudyMetadata,
|
|
96
|
+
moveModification,
|
|
97
97
|
parseError,
|
|
98
98
|
safeEncodeURIComponent,
|
|
99
99
|
saveFilter,
|
|
@@ -2,6 +2,14 @@ import { UUID } from 'node:crypto';
|
|
|
2
2
|
import { ComposedModificationMetadata, NetworkModificationMetadata } from '../utils';
|
|
3
3
|
export declare const getBaseNetworkModificationUrl: () => string;
|
|
4
4
|
export declare const getStudyUrlWithNodeUuid: (studyUuid: string | null | undefined, nodeUuid: string | undefined) => string;
|
|
5
|
+
export declare enum ModificationContainerType {
|
|
6
|
+
GROUP = "GROUP",
|
|
7
|
+
COMPOSITE = "COMPOSITE"
|
|
8
|
+
}
|
|
9
|
+
export type ModificationContainer = {
|
|
10
|
+
id: UUID | null;
|
|
11
|
+
type: ModificationContainerType | null;
|
|
12
|
+
};
|
|
5
13
|
export declare function fetchNetworkModification(modificationUuid: UUID): Promise<Response>;
|
|
6
14
|
export declare function fetchBusBarSectionsForNewCoupler(voltageLevelId: string, busBarCount: number, sectionCount: number, switchKindList: string[]): Promise<string[]>;
|
|
7
15
|
export declare function updateModification({ modificationUuid, body }: {
|
|
@@ -14,22 +22,6 @@ export declare function updateModification({ modificationUuid, body }: {
|
|
|
14
22
|
*/
|
|
15
23
|
export declare function updateNetworkModificationsMetadata(modificationUuids: UUID[], metadata: Partial<ComposedModificationMetadata>): Promise<Response>;
|
|
16
24
|
export declare function getNetworkModificationsFromComposite(compositeModificationUuids: string[], onlyMetadata?: boolean): Promise<Record<UUID, NetworkModificationMetadata[]>>;
|
|
17
|
-
|
|
18
|
-
* Move a composite sub-modification within or between composites, or between a composite and the group root.
|
|
19
|
-
*
|
|
20
|
-
* The four scenarios are encoded by the nullable sourceCompositeUuid / targetCompositeUuid:
|
|
21
|
-
* - both present → sub-to-sub (same composite = reorder, different = cross-composite move)
|
|
22
|
-
* - source only → extract from composite to root level
|
|
23
|
-
* - target only → embed root-level modification into a composite
|
|
24
|
-
*
|
|
25
|
-
* @param studyUuid
|
|
26
|
-
* @param nodeUuid
|
|
27
|
-
* @param modificationUuid
|
|
28
|
-
* @param sourceCompositeUuid UUID of the composite that currently owns the modification; null if at root
|
|
29
|
-
* @param targetCompositeUuid UUID of the target composite; null to place at root level
|
|
30
|
-
* @param beforeUuid insert before this UUID in the target collection; null to append at end
|
|
31
|
-
*/
|
|
32
|
-
export declare function changeCompositeSubModificationOrder(studyUuid: UUID | null, nodeUuid: UUID | undefined, modificationUuid: UUID, sourceCompositeUuid: UUID | null, targetCompositeUuid: UUID | null, beforeUuid: UUID | null): Promise<Response>;
|
|
33
|
-
export declare function changeNetworkModificationOrder(studyUuid: UUID | null, nodeUuid: UUID | undefined, itemUuid: UUID, beforeUuid: UUID | null): Promise<Response>;
|
|
25
|
+
export declare function moveModification(studyUuid: UUID | null, nodeUuid: UUID | undefined, modificationUuid: UUID, sourceContainer: ModificationContainer, targetContainer: ModificationContainer, beforeUuid: UUID | null): Promise<Response>;
|
|
34
26
|
export declare function setModificationMetadata(studyUuid: UUID | null, nodeUuid: UUID | undefined, modificationUuid: UUID | undefined, metadata: Partial<NetworkModificationMetadata | ComposedModificationMetadata>): Promise<Response>;
|
|
35
27
|
export declare function updateModificationStatusByRootNetwork(studyUuid: UUID, nodeUuid: UUID, rootNetworkUuid: UUID, modificationUuid: UUID, activated: boolean): Promise<Response>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { backendFetchJson, backendFetch, safeEncodeURIComponent, backendFetchText } from "./utils.js";
|
|
2
2
|
import { PREFIX_STUDY_QUERIES } from "./loadflow.js";
|
|
3
3
|
const PREFIX_NETWORK_MODIFICATION_QUERIES = `${"api/gateway"}/network-modification`;
|
|
4
4
|
const getBaseNetworkModificationUrl = () => `${PREFIX_NETWORK_MODIFICATION_QUERIES}/v1`;
|
|
@@ -6,6 +6,11 @@ const getStudyUrlWithNodeUuid = (studyUuid, nodeUuid) => `${PREFIX_STUDY_QUERIES
|
|
|
6
6
|
function getUrl() {
|
|
7
7
|
return `${PREFIX_NETWORK_MODIFICATION_QUERIES}/v1/network-modifications`;
|
|
8
8
|
}
|
|
9
|
+
var ModificationContainerType = /* @__PURE__ */ ((ModificationContainerType2) => {
|
|
10
|
+
ModificationContainerType2["GROUP"] = "GROUP";
|
|
11
|
+
ModificationContainerType2["COMPOSITE"] = "COMPOSITE";
|
|
12
|
+
return ModificationContainerType2;
|
|
13
|
+
})(ModificationContainerType || {});
|
|
9
14
|
function fetchNetworkModification(modificationUuid) {
|
|
10
15
|
const modificationFetchUrl = `${getUrl()}/${safeEncodeURIComponent(modificationUuid)}`;
|
|
11
16
|
console.debug(modificationFetchUrl);
|
|
@@ -58,23 +63,15 @@ function getNetworkModificationsFromComposite(compositeModificationUuids, onlyMe
|
|
|
58
63
|
console.debug(url);
|
|
59
64
|
return backendFetchJson(url);
|
|
60
65
|
}
|
|
61
|
-
function
|
|
62
|
-
console.info(`move
|
|
63
|
-
const
|
|
64
|
-
if (sourceCompositeUuid) params.set("sourceCompositeUuid", sourceCompositeUuid);
|
|
65
|
-
if (targetCompositeUuid) params.set("targetCompositeUuid", targetCompositeUuid);
|
|
66
|
-
if (beforeUuid) params.set("beforeUuid", beforeUuid);
|
|
67
|
-
const paramsStr = params.toString() ? `?${params.toString()}` : ``;
|
|
68
|
-
const url = `${getStudyUrlWithNodeUuid(studyUuid, nodeUuid)}/composite-sub-modification/${modificationUuid}${paramsStr}`;
|
|
66
|
+
function moveModification(studyUuid, nodeUuid, modificationUuid, sourceContainer, targetContainer, beforeUuid) {
|
|
67
|
+
console.info(`move modification ${modificationUuid} in node ${nodeUuid}`);
|
|
68
|
+
const url = `${getStudyUrlWithNodeUuid(studyUuid, nodeUuid)}/network-modification/${modificationUuid}`;
|
|
69
69
|
console.debug(url);
|
|
70
|
-
return backendFetch(url, {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const url = `${getStudyUrlWithNodeUuid(studyUuid, nodeUuid)}/network-modification/${itemUuid}?${beforeParam}`;
|
|
76
|
-
console.debug(url);
|
|
77
|
-
return backendFetch(url, { method: "put" });
|
|
70
|
+
return backendFetch(url, {
|
|
71
|
+
method: "put",
|
|
72
|
+
headers: { "Content-Type": "application/json" },
|
|
73
|
+
body: JSON.stringify({ source: sourceContainer, target: targetContainer, beforeUuid })
|
|
74
|
+
});
|
|
78
75
|
}
|
|
79
76
|
const getStudyUrlWithNodeUuidAndRootNetworkUuid = (studyUuid, nodeUuid, rootNetworkUuid) => `${PREFIX_STUDY_QUERIES}/v1/studies/${safeEncodeURIComponent(studyUuid)}/root-networks/${safeEncodeURIComponent(
|
|
80
77
|
rootNetworkUuid
|
|
@@ -104,13 +101,13 @@ function updateModificationStatusByRootNetwork(studyUuid, nodeUuid, rootNetworkU
|
|
|
104
101
|
return backendFetch(url, { method: "PUT" });
|
|
105
102
|
}
|
|
106
103
|
export {
|
|
107
|
-
|
|
108
|
-
changeNetworkModificationOrder,
|
|
104
|
+
ModificationContainerType,
|
|
109
105
|
fetchBusBarSectionsForNewCoupler,
|
|
110
106
|
fetchNetworkModification,
|
|
111
107
|
getBaseNetworkModificationUrl,
|
|
112
108
|
getNetworkModificationsFromComposite,
|
|
113
109
|
getStudyUrlWithNodeUuid,
|
|
110
|
+
moveModification,
|
|
114
111
|
setModificationMetadata,
|
|
115
112
|
updateModification,
|
|
116
113
|
updateModificationStatusByRootNetwork,
|