d2aura 26.0.18 → 26.0.19
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/api/abstractApi.d.ts +1 -1
- package/api/abstractApi.js +2 -2
- package/api/abstractApi.js.map +1 -1
- package/api/eda/edaManagerApi.d.ts +13 -10
- package/api/eda/edaManagerApi.js +45 -12
- package/api/eda/edaManagerApi.js.map +1 -1
- package/api/eda/generated/events.d.ts +47 -14
- package/api/eda/generated/events.js +74 -14
- package/api/eda/generated/events.js.map +1 -1
- package/api/eda/generated/structures.d.ts +121 -121
- package/api/eda/generated/structures.js.map +1 -1
- package/core/i18n/d2aura.sk.json +2 -0
- package/coreui/components/edaManagerComponent/components/edaChartViewer.js +11 -11
- package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +2 -2
- package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +1 -1
- package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +1 -1
- package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +3 -2
- package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTablePanel.js +5 -5
- package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +3 -0
- package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +1 -0
- package/coreui/components/edaManagerComponent/components/edaTreeView.js +82 -33
- package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
- package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +11 -2
- package/coreui/components/edaManagerComponent/constants/edaTypes.js +6 -0
- package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/edaConfigContext.d.ts +5 -4
- package/coreui/components/edaManagerComponent/context/edaConfigContext.js +4 -1
- package/coreui/components/edaManagerComponent/context/edaConfigContext.js.map +1 -1
- package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +36 -23
- package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js +1 -1
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js +5 -5
- package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js +4 -2
- package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/importDialog.js +56 -8
- package/coreui/components/edaManagerComponent/dialogs/importDialog.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/importExport/export.js +48 -28
- package/coreui/components/edaManagerComponent/dialogs/importExport/export.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/importExport/import.d.ts +4 -2
- package/coreui/components/edaManagerComponent/dialogs/importExport/import.js +26 -2
- package/coreui/components/edaManagerComponent/dialogs/importExport/import.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.js +0 -1
- package/coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.js.map +1 -1
- package/coreui/components/edaManagerComponent/dialogs/vectorSelectionDialog.js +4 -5
- package/coreui/components/edaManagerComponent/dialogs/vectorSelectionDialog.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaDetail.js +3 -1
- package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaManager.d.ts +1 -1
- package/coreui/components/edaManagerComponent/edaManager.js +1 -1
- package/coreui/components/edaManagerComponent/edaManager.js.map +1 -1
- package/coreui/components/edaManagerComponent/edaNavigator.d.ts +1 -0
- package/coreui/components/edaManagerComponent/edaNavigator.js +4 -4
- package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
- package/coreui/components/edaManagerComponent/utils/utils.d.ts +1 -1
- package/coreui/components/edaManagerComponent/utils/utils.js +4 -5
- package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
- package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +18 -0
- package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +8 -8
- package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +4 -38
- package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +224 -79
- package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +12 -12
- package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +116 -116
- package/d2configuration/edaManager/SD.EM_EDA_CalcFunction_Params_V2.xml +245 -0
- package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_Params_V2.xml +159 -0
- package/package.json +3 -3
|
@@ -62,45 +62,55 @@ export async function exportGroup(api, group, config, dateTimeMask, loading, mes
|
|
|
62
62
|
GroupAttributes.exportToXml(group.data, root);
|
|
63
63
|
if (config.exportSubgroups) {
|
|
64
64
|
loading.updateLoading({ loadingPercentage: 0, loadingItem: i18n("Loading subgroups") });
|
|
65
|
-
let
|
|
65
|
+
let pageNr = 1;
|
|
66
66
|
let totalItems = 0;
|
|
67
|
+
let processedItems = 0;
|
|
67
68
|
do {
|
|
68
69
|
if (totalItems > 0) {
|
|
69
|
-
loading.updateLoading({ loadingPercentage: (
|
|
70
|
+
loading.updateLoading({ loadingPercentage: (processedItems / totalItems) * 100 });
|
|
70
71
|
}
|
|
71
|
-
const page = await api.getGroupChildren(group.data.ID_SKVEKTOR,
|
|
72
|
+
const page = await api.getGroupChildren(group.data.ID_SKVEKTOR, pageNr);
|
|
72
73
|
if (signal.aborted) {
|
|
73
74
|
throw new Error(i18n("Aborted"));
|
|
74
75
|
}
|
|
75
|
-
if (
|
|
76
|
-
totalItems = page.
|
|
76
|
+
if (pageNr === 1) {
|
|
77
|
+
totalItems = page.totalCount ?? 0;
|
|
77
78
|
}
|
|
78
79
|
for (let item of page.items) {
|
|
79
80
|
resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, loading, message, signal));
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
processedItems += page.items.length;
|
|
83
|
+
pageNr++;
|
|
84
|
+
if (page.items.length === 0) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
} while (processedItems < totalItems);
|
|
83
88
|
}
|
|
84
89
|
{
|
|
85
90
|
loading.updateLoading({ loadingPercentage: 0, loadingItem: i18n("Loading vectors") });
|
|
86
|
-
let
|
|
91
|
+
let pageNr = 1;
|
|
87
92
|
let totalItems = 0;
|
|
93
|
+
let processedItems = 0;
|
|
88
94
|
do {
|
|
89
95
|
if (totalItems > 0) {
|
|
90
|
-
loading.updateLoading({ loadingPercentage: (
|
|
96
|
+
loading.updateLoading({ loadingPercentage: (processedItems / totalItems) * 100 });
|
|
91
97
|
}
|
|
92
|
-
const page = await api.getGroupVectors(group.data.ID_SKVEKTOR,
|
|
98
|
+
const page = await api.getGroupVectors(group.data.ID_SKVEKTOR, pageNr);
|
|
93
99
|
if (signal.aborted) {
|
|
94
100
|
throw new Error(i18n("Aborted"));
|
|
95
101
|
}
|
|
96
|
-
if (
|
|
97
|
-
totalItems = page.
|
|
102
|
+
if (pageNr === 1) {
|
|
103
|
+
totalItems = page.totalCount ?? 0;
|
|
98
104
|
}
|
|
99
105
|
for (let item of page.items) {
|
|
100
106
|
resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, loading, message, signal));
|
|
101
107
|
}
|
|
102
|
-
|
|
103
|
-
|
|
108
|
+
processedItems += page.items.length;
|
|
109
|
+
pageNr++;
|
|
110
|
+
if (page.items.length === 0) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
} while (processedItems < totalItems);
|
|
104
114
|
}
|
|
105
115
|
resultData.push([`skup_${group.data.MENO}`, root.end({ prettyPrint: true })]);
|
|
106
116
|
return resultData;
|
|
@@ -113,45 +123,55 @@ export async function exportScenario(api, scenario, config, dateTimeMask, loadin
|
|
|
113
123
|
ScenarioAttributes.exportToXml(scenario.data, root);
|
|
114
124
|
if (config.exportSubgroups) {
|
|
115
125
|
loading.updateLoading({ loadingPercentage: 0, loadingItem: i18n("Loading vectors") });
|
|
116
|
-
let
|
|
126
|
+
let pageNr = 1;
|
|
117
127
|
let totalItems = 0;
|
|
128
|
+
let processedItems = 0;
|
|
118
129
|
do {
|
|
119
130
|
if (totalItems > 0) {
|
|
120
|
-
loading.updateLoading({ loadingPercentage: (
|
|
131
|
+
loading.updateLoading({ loadingPercentage: (processedItems / totalItems) * 100 });
|
|
121
132
|
}
|
|
122
|
-
const page = await api.getScenarioChildren(scenario.data.ID_SCENAR,
|
|
133
|
+
const page = await api.getScenarioChildren(scenario.data.ID_SCENAR, pageNr);
|
|
123
134
|
if (signal.aborted) {
|
|
124
135
|
throw new Error(i18n("Aborted"));
|
|
125
136
|
}
|
|
126
|
-
if (
|
|
127
|
-
totalItems = page.
|
|
137
|
+
if (pageNr === 1) {
|
|
138
|
+
totalItems = page.totalCount ?? 0;
|
|
128
139
|
}
|
|
129
140
|
for (let item of page.items) {
|
|
130
141
|
resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, loading, message, signal));
|
|
131
142
|
}
|
|
132
|
-
|
|
133
|
-
|
|
143
|
+
processedItems += page.items.length;
|
|
144
|
+
pageNr++;
|
|
145
|
+
if (page.items.length === 0) {
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
} while (processedItems < totalItems);
|
|
134
149
|
}
|
|
135
150
|
{
|
|
136
151
|
loading.updateLoading({ loadingPercentage: 0, loadingItem: i18n("Loading vectors") });
|
|
137
|
-
let
|
|
152
|
+
let pageNr = 1;
|
|
138
153
|
let totalItems = 0;
|
|
154
|
+
let processedItems = 0;
|
|
139
155
|
do {
|
|
140
156
|
if (totalItems > 0) {
|
|
141
|
-
loading.updateLoading({ loadingPercentage: (
|
|
157
|
+
loading.updateLoading({ loadingPercentage: (processedItems / totalItems) * 100 });
|
|
142
158
|
}
|
|
143
|
-
const page = await api.getScenarioVectors(scenario.data.ID_SCENAR,
|
|
159
|
+
const page = await api.getScenarioVectors(scenario.data.ID_SCENAR, pageNr);
|
|
144
160
|
if (signal.aborted) {
|
|
145
161
|
throw new Error(i18n("Aborted"));
|
|
146
162
|
}
|
|
147
|
-
if (
|
|
148
|
-
totalItems = page.
|
|
163
|
+
if (pageNr === 1) {
|
|
164
|
+
totalItems = page.totalCount ?? 0;
|
|
149
165
|
}
|
|
150
166
|
for (let item of page.items) {
|
|
151
167
|
resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, loading, message, signal));
|
|
152
168
|
}
|
|
153
|
-
|
|
154
|
-
|
|
169
|
+
processedItems += page.items.length;
|
|
170
|
+
pageNr++;
|
|
171
|
+
if (page.items.length === 0) {
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
} while (processedItems < totalItems);
|
|
155
175
|
}
|
|
156
176
|
resultData.push([`scenar_${scenario.data.MENO}`, root.end({ prettyPrint: true })]);
|
|
157
177
|
return resultData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/importExport/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAGnC,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,MAAM,cAAc,CAAC;AAGjC,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,2BAA2B,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAEjI,MAAM,CAAC,MAAM,iBAAiB,GAAoB;IAC9C,aAAa,CAAC,kBAAkB;IAChC,aAAa,CAAC,QAAQ;IACtB,aAAa,CAAC,OAAO;IACrB,aAAa,CAAC,UAAU;IACxB,aAAa,CAAC,YAAY;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC7C,aAAa,CAAC,cAAc;IAC5B,aAAa,CAAC,IAAI;IAClB,aAAa,CAAC,GAAG;IACjB,aAAa,CAAC,WAAW;IACzB,aAAa,CAAC,MAAM;IACpB,aAAa,CAAC,IAAI;IAClB,aAAa,CAAC,QAAQ;IACtB,aAAa,CAAC,UAAU;IACxB,aAAa,CAAC,QAAQ;CACzB,CAAA;AAUD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAkB,EAAE,MAAkB,EAAE,MAA6B,EAAE,YAAoB,EAAE,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IACtM,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,UAAwC,CAAC;IAE7C,OAAO,CAAC,aAAa,CAAC,EAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAC,CAAC,CAAC;IAE9D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,WAAW,GAAI,CAAC,MAAM,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAA2B,CAAC;QACvG,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;IACrC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEhD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC;QACvD,oBAAoB,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/I,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvG,MAAM,uBAAuB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxI,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAkB,EAAE,KAAgB,EAAE,MAA6B,EAAE,YAAoB,EAAE,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IACnM,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEhC,GAAG,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;IACtC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE9C,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAC,CAAC,CAAC;QAEtF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,GAAG,CAAC;YACA,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,EAAC,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAExE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9G,CAAC;YAED,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,QAAQ,MAAM,GAAG,UAAU,EAAE;IAClC,CAAC;IAED,CAAC;QACG,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC;QAEpF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,GAAG,CAAC;YACA,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,EAAC,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAEvE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/G,CAAC;YAED,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,QAAQ,MAAM,GAAG,UAAU,EAAE;IAClC,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAkB,EAAE,QAAsB,EAAE,MAA6B,EAAE,YAAoB,EAAE,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IAC5M,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/B,GAAG,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;IACrC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC;QAEpF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,GAAG,CAAC;YACA,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,EAAC,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE5E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAClH,CAAC;YAED,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,QAAQ,MAAM,GAAG,UAAU,EAAE;IAClC,CAAC;IAED,CAAC;QACG,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAC,CAAC,CAAC;QAEpF,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,GAAG,CAAC;YACA,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjB,OAAO,CAAC,aAAa,CAAC,EAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,GAAG,EAAC,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAE3E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/G,CAAC;YAED,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,QAAQ,MAAM,GAAG,UAAU,EAAE;IAClC,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAgB,EAAE,GAAkB,EAAE,MAAkB,EAAE,MAAmB;IACzG,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEpC,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,IAAgB,EAAE,GAAkB,EAAE,MAAkB,EAAE,MAAmB;IAChH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAExE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElC,2BAA2B,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAkB,EAAE,MAAkB,EAAE,MAA6B,EAAE,YAAoB,EAC3F,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IAC3G,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzN,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC;IAClC,MAAM,KAAK,GAA+C,EAAE,CAAC;IAC7D,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtC,KAAK,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAC,CAAC,CAAC;QAC3C,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,OAAO,CAAC,aAAa,CAAC,EAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,CAAC,CAAA;QAE1F,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;QAElH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAC5C,SAAS;QACb,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;QAErC,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEvC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YAE1E,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC5D,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAgB,EAAE,GAAkB,EAAE,MAAkB,EAAE,MAA6B,EAAE,YAAoB,EAAE,MAAmB;IAC9J,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzN,IAAI,cAAc,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACvD,OAAO;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAEtI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEvC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAE1E,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAErD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAErD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAkB,EAAE,IAAc,EAAE,IAAgB,EAAE,MAA6B,EAAE,YAAoB,EAAE,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IAC/M,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,MAAM,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAkB,EAAE,IAAc,EAAE,IAAgB,EAAE,MAA6B,EAAE,YAAoB,EAAE,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IAChN,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAqB,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,MAAM,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,GAAkB,EAAE,IAAc,EAAE,IAAgB,EAAE,MAA6B,EAAE,YAAoB,EAAE,OAA2B,EAAE,OAAwB,EAAE,MAAmB;IACnN,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;IAEzD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO,MAAM,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,EAA2B,EAAE,EAA2B,EAAE,QAAiC,EAAE,QAAiC;IACrJ,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACvC,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,IAAI,GAAG,GAAG,SAAS,CAAC;QAEpB,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,KAAK,GAAG,EAAE,CAAC;QACf,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,GAAG,GAAG,EAAE,CAAC;QACb,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC","sourcesContent":["import {create} from \"xmlbuilder2\";\r\nimport type {XMLBuilder} from \"xmlbuilder2/lib/interfaces\";\r\nimport {LoadingContextType} from \"../../context/loadingContext\";\r\nimport {EdaSamplingType, EdaVectorType} from \"../../constants/edaTypes\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport EdaManagerApi, {GroupData, PairVectorDetail, ScenarioData, TreeItem, VectorData} from \"../../../../../api/eda/edaManagerApi\";\r\nimport {MessageInstance} from \"antd/es/message/interface\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {DescriptiveVectorAttributes, GroupAttributes, PairVectorAttributes, ScenarioAttributes, VectorAttributes} from \"./types\";\r\n\r\nexport const CalculatedVectors: EdaVectorType[] = [\r\n EdaVectorType.FifteenMinutesCalc,\r\n EdaVectorType.HourCalc,\r\n EdaVectorType.DayCalc,\r\n EdaVectorType.ChangeCalc,\r\n EdaVectorType.PeriodicCalc,\r\n];\r\n\r\nexport const SpecifiedVectors: EdaVectorType[] = [\r\n EdaVectorType.FifteenMinutes,\r\n EdaVectorType.Hour,\r\n EdaVectorType.Day,\r\n EdaVectorType.Descriptive,\r\n EdaVectorType.Change,\r\n EdaVectorType.Pair,\r\n EdaVectorType.Periodic,\r\n EdaVectorType.Functional,\r\n EdaVectorType.Interval,\r\n]\r\n\r\nexport interface XmlVectorExportConfig {\r\n exportSubgroups: boolean\r\n exportValues: boolean\r\n from?: dayjs.Dayjs\r\n to?: dayjs.Dayjs\r\n vectorTypes: Record<EdaVectorType, boolean>\r\n}\r\n\r\nexport async function exportVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('vektor');\r\n let pairVector: PairVectorDetail | undefined;\r\n\r\n loading.updateLoading({loadingItem: vector.data.ZOBRAZ_MENO});\r\n\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n const pairVectors = ((await api.loadPairVectorData(vector.data.ID_VEKTOR)).data as PairVectorDetail[]);\r\n pairVector = pairVectors.length > 0 ? pairVectors[0] : undefined;\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n }\r\n\r\n doc.dtd({name: \"vektor\", sysID: \"\"});\r\n VectorAttributes.exportToXml(vector.data, root);\r\n\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector) {\r\n PairVectorAttributes.exportToXml(pairVector, root);\r\n }\r\n\r\n if (config.exportValues && [EdaVectorType.FifteenMinutes, EdaVectorType.Hour, EdaVectorType.Day, EdaVectorType.Change].includes(vector.data.TYP)) {\r\n resultData.push(...await exportSpecifiedVector(api, vector, config, dateTimeMask, loading, message, signal));\r\n }\r\n if (config.exportValues && [EdaVectorType.Descriptive, EdaVectorType.Interval].includes(vector.data.TYP)) {\r\n await exportDescriptiveVector(root, api, vector, signal);\r\n }\r\n if ([EdaVectorType.FifteenMinutesCalc, EdaVectorType.HourCalc, EdaVectorType.DayCalc, EdaVectorType.ChangeCalc].includes(vector.data.TYP)) {\r\n await exportCalcVector(root, api, vector, signal);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n await exportPairVector(root, api, vector, config, dateTimeMask, signal);\r\n }\r\n\r\n resultData.push([`vekt_${vector.data.MENO}`, root.end({prettyPrint: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportGroup(api: EdaManagerApi, group: GroupData, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('skupina');\r\n\r\n doc.dtd({name: \"skupina\", sysID: \"\"});\r\n GroupAttributes.exportToXml(group.data, root);\r\n\r\n if (config.exportSubgroups) {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading subgroups\")});\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (offset / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getGroupChildren(group.data.ID_SKVEKTOR, offset);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (offset === 0) {\r\n totalItems = page.items.length + (page.leftCount || 0);\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n offset += page.items.length;\r\n } while (offset < totalItems);\r\n }\r\n\r\n {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")});\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (offset / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getGroupVectors(group.data.ID_SKVEKTOR, offset);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (offset === 0) {\r\n totalItems = page.items.length + (page.leftCount || 0);\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n offset += page.items.length;\r\n } while (offset < totalItems);\r\n }\r\n\r\n resultData.push([`skup_${group.data.MENO}`, root.end({prettyPrint: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportScenario(api: EdaManagerApi, scenario: ScenarioData, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('scenar');\r\n\r\n doc.dtd({name: \"scenar\", sysID: \"\"});\r\n ScenarioAttributes.exportToXml(scenario.data, root);\r\n\r\n if (config.exportSubgroups) {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")});\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (offset / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getScenarioChildren(scenario.data.ID_SCENAR, offset);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (offset === 0) {\r\n totalItems = page.items.length + (page.leftCount || 0);\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n offset += page.items.length;\r\n } while (offset < totalItems);\r\n }\r\n\r\n {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")});\r\n\r\n let offset = 0;\r\n let totalItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (offset / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getScenarioVectors(scenario.data.ID_SCENAR, offset);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (offset === 0) {\r\n totalItems = page.items.length + (page.leftCount || 0);\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n offset += page.items.length;\r\n } while (offset < totalItems);\r\n }\r\n\r\n resultData.push([`scenar_${scenario.data.MENO}`, root.end({prettyPrint: true})]);\r\n return resultData;\r\n}\r\n\r\nasync function exportCalcVector(root: XMLBuilder, api: EdaManagerApi, vector: VectorData, signal: AbortSignal): Promise<void> {\r\n const data = await api.loadCalcVectorData(vector.data.ID_VEKTOR);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (data.data.length > 0) {\r\n const prescription = data.data[0];\r\n const element = root.ele(\"predpis\");\r\n\r\n if (prescription.POPIS !== undefined) {\r\n element.att(\"popis\", prescription.POPIS);\r\n }\r\n\r\n element.dat(data.prescription);\r\n }\r\n}\r\n\r\nasync function exportDescriptiveVector(root: XMLBuilder, api: EdaManagerApi, vector: VectorData, signal: AbortSignal): Promise<void> {\r\n const data = await api.loadDescriptiveVectorData(vector.data.ID_VEKTOR);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n for (let desc of data) {\r\n const element = root.ele(\"popis\");\r\n\r\n DescriptiveVectorAttributes.exportToXml(desc, element);\r\n }\r\n}\r\n\r\nasync function exportSpecifiedVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string,\r\n loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined) {\r\n return [];\r\n }\r\n\r\n const result: [string, string][] = [];\r\n const [from, to] = exportInterval;\r\n const years: { start: dayjs.Dayjs, end: dayjs.Dayjs }[] = [];\r\n let current = from;\r\n\r\n while (current.isSameOrBefore(to, \"year\")) {\r\n const yearEnd = current.endOf(\"year\");\r\n\r\n years.push({start: current, end: yearEnd});\r\n current = current.add(1, 'year').startOf('year')\r\n }\r\n\r\n for (const range of years.values()) {\r\n loading.updateLoading({loadingItem: vector.data.ZOBRAZ_MENO + \" - \" + range.start.year()})\r\n\r\n const values = await api.readVectorValues(vector.data.ID_VEKTOR, range.start, range.end, EdaSamplingType.Default);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('vektor');\r\n\r\n if (!values.data) {\r\n message.error(i18n(\"No vector data found\"));\r\n continue;\r\n }\r\n\r\n doc.dtd({name: \"vektor\", sysID: \"\"});\r\n\r\n for (let value of values.data) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(value.val.valueTime).format(dateTimeMask));\r\n\r\n if (value.val.value !== undefined && value.val.value !== null) {\r\n valueElement.att(\"value\", String(value.val.value));\r\n }\r\n\r\n if (value.val.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA\", \"1\");\r\n }\r\n if (value.val.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB\", \"1\");\r\n }\r\n if (value.val.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC\", \"1\");\r\n }\r\n if (value.val.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD\", \"1\");\r\n }\r\n }\r\n\r\n result.push([`vekt_${vector.data.MENO}_DATA_${range.start.year()}`, root.end({prettyPrint: true})]);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nasync function exportPairVector(root: XMLBuilder, api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, signal: AbortSignal): Promise<void> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined || !config.exportValues) {\r\n return;\r\n }\r\n\r\n const pairData = await api.readPairVectorValues(vector.data.ID_VEKTOR, exportInterval[0], exportInterval[1], EdaSamplingType.Default);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n for (let data of pairData) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(data.valX.valueTime).format(dateTimeMask));\r\n\r\n if (data.valX.valueTime !== undefined) {\r\n valueElement.att(\"value_x\", String(data.valX.value));\r\n\r\n if (data.valX.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_x\", \"1\");\r\n }\r\n if (data.valX.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_x\", \"1\");\r\n }\r\n if (data.valX.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_x\", \"1\");\r\n }\r\n if (data.valX.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_x\", \"1\");\r\n }\r\n }\r\n\r\n if (data.valY.valueTime !== undefined) {\r\n valueElement.att(\"value_y\", String(data.valY.value));\r\n\r\n if (data.valY.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_y\", \"1\");\r\n }\r\n if (data.valY.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_y\", \"1\");\r\n }\r\n if (data.valY.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_y\", \"1\");\r\n }\r\n if (data.valY.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_y\", \"1\");\r\n }\r\n }\r\n\r\n if (data.idx.value !== undefined) {\r\n valueElement.att(\"idx\", String(data.idx.value));\r\n }\r\n }\r\n}\r\n\r\nasync function exportSubGroup(api: EdaManagerApi, item: TreeItem, root: XMLBuilder, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n root.ele(\"podskupina\", {meno: item.Name});\r\n\r\n const subgroup = await api.loadGroupData(item.ID!);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (subgroup) {\r\n return await exportGroup(api, subgroup, config, dateTimeMask, loading, message, signal);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubVector(api: EdaManagerApi, item: TreeItem, root: XMLBuilder, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n if (!config.vectorTypes[item.Type as EdaVectorType]) {\r\n return [];\r\n }\r\n\r\n root.ele(\"vektor\", {meno: item.Name});\r\n\r\n const subVector = await api.loadVectorData(item.ID!);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (subVector) {\r\n return await exportVector(api, subVector, config, dateTimeMask, loading, message, signal);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubScenarios(api: EdaManagerApi, item: TreeItem, root: XMLBuilder, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n root.ele(\"podscenar\", {meno: item.Name});\r\n\r\n const subScenario = await api.loadScenarioData(item.ID!);\r\n\r\n if (subScenario) {\r\n return await exportScenario(api, subScenario, config, dateTimeMask, loading, message, signal);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction getExportInterval(bt: dayjs.Dayjs | undefined, et: dayjs.Dayjs | undefined, vectorBt: dayjs.Dayjs | undefined, vectorEt: dayjs.Dayjs | undefined): [dayjs.Dayjs, dayjs.Dayjs] | undefined {\r\n if (vectorBt === undefined || vectorEt === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (bt !== undefined && et !== undefined) {\r\n let start = undefined;\r\n let end = undefined;\r\n\r\n if (bt.isBefore(vectorBt)) {\r\n start = bt;\r\n }\r\n if (et.isAfter(vectorEt)) {\r\n end = bt;\r\n }\r\n\r\n if (start !== undefined && end !== undefined && start.isBefore(end)) {\r\n return [start, end];\r\n }\r\n } else {\r\n return [vectorBt, vectorEt];\r\n }\r\n\r\n return undefined;\r\n}"]}
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/importExport/export.ts"],"names":[],"mappings":"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","sourcesContent":["import {create} from \"xmlbuilder2\";\r\nimport type {XMLBuilder} from \"xmlbuilder2/lib/interfaces\";\r\nimport {LoadingContextType} from \"../../context/loadingContext\";\r\nimport {EdaSamplingType, EdaVectorType} from \"../../constants/edaTypes\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport EdaManagerApi, {GroupData, PairVectorDetail, ScenarioData, TreeItem, VectorData} from \"../../../../../api/eda/edaManagerApi\";\r\nimport {MessageInstance} from \"antd/es/message/interface\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {DescriptiveVectorAttributes, GroupAttributes, PairVectorAttributes, ScenarioAttributes, VectorAttributes} from \"./types\";\r\n\r\nexport const CalculatedVectors: EdaVectorType[] = [\r\n EdaVectorType.FifteenMinutesCalc,\r\n EdaVectorType.HourCalc,\r\n EdaVectorType.DayCalc,\r\n EdaVectorType.ChangeCalc,\r\n EdaVectorType.PeriodicCalc,\r\n];\r\n\r\nexport const SpecifiedVectors: EdaVectorType[] = [\r\n EdaVectorType.FifteenMinutes,\r\n EdaVectorType.Hour,\r\n EdaVectorType.Day,\r\n EdaVectorType.Descriptive,\r\n EdaVectorType.Change,\r\n EdaVectorType.Pair,\r\n EdaVectorType.Periodic,\r\n EdaVectorType.Functional,\r\n EdaVectorType.Interval,\r\n]\r\n\r\nexport interface XmlVectorExportConfig {\r\n exportSubgroups: boolean\r\n exportValues: boolean\r\n from?: dayjs.Dayjs\r\n to?: dayjs.Dayjs\r\n vectorTypes: Record<EdaVectorType, boolean>\r\n}\r\n\r\nexport async function exportVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('vektor');\r\n let pairVector: PairVectorDetail | undefined;\r\n\r\n loading.updateLoading({loadingItem: vector.data.ZOBRAZ_MENO});\r\n\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n const pairVectors = ((await api.loadPairVectorData(vector.data.ID_VEKTOR)).data as PairVectorDetail[]);\r\n pairVector = pairVectors.length > 0 ? pairVectors[0] : undefined;\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n }\r\n\r\n doc.dtd({name: \"vektor\", sysID: \"\"});\r\n VectorAttributes.exportToXml(vector.data, root);\r\n\r\n if (vector.data.TYP === EdaVectorType.Pair && pairVector) {\r\n PairVectorAttributes.exportToXml(pairVector, root);\r\n }\r\n\r\n if (config.exportValues && [EdaVectorType.FifteenMinutes, EdaVectorType.Hour, EdaVectorType.Day, EdaVectorType.Change].includes(vector.data.TYP)) {\r\n resultData.push(...await exportSpecifiedVector(api, vector, config, dateTimeMask, loading, message, signal));\r\n }\r\n if (config.exportValues && [EdaVectorType.Descriptive, EdaVectorType.Interval].includes(vector.data.TYP)) {\r\n await exportDescriptiveVector(root, api, vector, signal);\r\n }\r\n if ([EdaVectorType.FifteenMinutesCalc, EdaVectorType.HourCalc, EdaVectorType.DayCalc, EdaVectorType.ChangeCalc].includes(vector.data.TYP)) {\r\n await exportCalcVector(root, api, vector, signal);\r\n }\r\n if (vector.data.TYP === EdaVectorType.Pair) {\r\n await exportPairVector(root, api, vector, config, dateTimeMask, signal);\r\n }\r\n\r\n resultData.push([`vekt_${vector.data.MENO}`, root.end({prettyPrint: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportGroup(api: EdaManagerApi, group: GroupData, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('skupina');\r\n\r\n doc.dtd({name: \"skupina\", sysID: \"\"});\r\n GroupAttributes.exportToXml(group.data, root);\r\n\r\n if (config.exportSubgroups) {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading subgroups\")});\r\n\r\n let pageNr = 1;\r\n let totalItems = 0;\r\n let processedItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (processedItems / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getGroupChildren(group.data.ID_SKVEKTOR, pageNr);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (pageNr === 1) {\r\n totalItems = page.totalCount ?? 0;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubGroup(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n processedItems += page.items.length;\r\n pageNr++;\r\n\r\n if (page.items.length === 0) {\r\n break;\r\n }\r\n } while (processedItems < totalItems);\r\n }\r\n\r\n {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")});\r\n\r\n let pageNr = 1;\r\n let totalItems = 0;\r\n let processedItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (processedItems / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getGroupVectors(group.data.ID_SKVEKTOR, pageNr);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (pageNr === 1) {\r\n totalItems = page.totalCount ?? 0;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n processedItems += page.items.length;\r\n pageNr++;\r\n\r\n if (page.items.length === 0) {\r\n break;\r\n }\r\n } while (processedItems < totalItems);\r\n }\r\n\r\n resultData.push([`skup_${group.data.MENO}`, root.end({prettyPrint: true})]);\r\n return resultData;\r\n}\r\n\r\nexport async function exportScenario(api: EdaManagerApi, scenario: ScenarioData, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const resultData: [string, string][] = [];\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('scenar');\r\n\r\n doc.dtd({name: \"scenar\", sysID: \"\"});\r\n ScenarioAttributes.exportToXml(scenario.data, root);\r\n\r\n if (config.exportSubgroups) {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")});\r\n\r\n let pageNr = 1;\r\n let totalItems = 0;\r\n let processedItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (processedItems / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getScenarioChildren(scenario.data.ID_SCENAR, pageNr);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (pageNr === 1) {\r\n totalItems = page.totalCount ?? 0;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubScenarios(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n processedItems += page.items.length;\r\n pageNr++;\r\n\r\n if (page.items.length === 0) {\r\n break;\r\n }\r\n } while (processedItems < totalItems);\r\n }\r\n\r\n {\r\n loading.updateLoading({loadingPercentage: 0, loadingItem: i18n(\"Loading vectors\")});\r\n\r\n let pageNr = 1;\r\n let totalItems = 0;\r\n let processedItems = 0;\r\n\r\n do {\r\n if (totalItems > 0) {\r\n loading.updateLoading({loadingPercentage: (processedItems / totalItems) * 100});\r\n }\r\n\r\n const page = await api.getScenarioVectors(scenario.data.ID_SCENAR, pageNr);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (pageNr === 1) {\r\n totalItems = page.totalCount ?? 0;\r\n }\r\n\r\n for (let item of page.items) {\r\n resultData.push(...await exportSubVector(api, item, root, config, dateTimeMask, loading, message, signal));\r\n }\r\n\r\n processedItems += page.items.length;\r\n pageNr++;\r\n\r\n if (page.items.length === 0) {\r\n break;\r\n }\r\n } while (processedItems < totalItems);\r\n }\r\n\r\n resultData.push([`scenar_${scenario.data.MENO}`, root.end({prettyPrint: true})]);\r\n return resultData;\r\n}\r\n\r\nasync function exportCalcVector(root: XMLBuilder, api: EdaManagerApi, vector: VectorData, signal: AbortSignal): Promise<void> {\r\n const data = await api.loadCalcVectorData(vector.data.ID_VEKTOR);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (data.data.length > 0) {\r\n const prescription = data.data[0];\r\n const element = root.ele(\"predpis\");\r\n\r\n if (prescription.POPIS !== undefined) {\r\n element.att(\"popis\", prescription.POPIS);\r\n }\r\n\r\n element.dat(data.prescription);\r\n }\r\n}\r\n\r\nasync function exportDescriptiveVector(root: XMLBuilder, api: EdaManagerApi, vector: VectorData, signal: AbortSignal): Promise<void> {\r\n const data = await api.loadDescriptiveVectorData(vector.data.ID_VEKTOR);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n for (let desc of data) {\r\n const element = root.ele(\"popis\");\r\n\r\n DescriptiveVectorAttributes.exportToXml(desc, element);\r\n }\r\n}\r\n\r\nasync function exportSpecifiedVector(api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string,\r\n loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined) {\r\n return [];\r\n }\r\n\r\n const result: [string, string][] = [];\r\n const [from, to] = exportInterval;\r\n const years: { start: dayjs.Dayjs, end: dayjs.Dayjs }[] = [];\r\n let current = from;\r\n\r\n while (current.isSameOrBefore(to, \"year\")) {\r\n const yearEnd = current.endOf(\"year\");\r\n\r\n years.push({start: current, end: yearEnd});\r\n current = current.add(1, 'year').startOf('year')\r\n }\r\n\r\n for (const range of years.values()) {\r\n loading.updateLoading({loadingItem: vector.data.ZOBRAZ_MENO + \" - \" + range.start.year()})\r\n\r\n const values = await api.readVectorValues(vector.data.ID_VEKTOR, range.start, range.end, EdaSamplingType.Default);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n const doc = create({version: '1.0', encoding: 'UTF-8'});\r\n const root = doc.ele('vektor');\r\n\r\n if (!values.data) {\r\n message.error(i18n(\"No vector data found\"));\r\n continue;\r\n }\r\n\r\n doc.dtd({name: \"vektor\", sysID: \"\"});\r\n\r\n for (let value of values.data) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(value.val.valueTime).format(dateTimeMask));\r\n\r\n if (value.val.value !== undefined && value.val.value !== null) {\r\n valueElement.att(\"value\", String(value.val.value));\r\n }\r\n\r\n if (value.val.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA\", \"1\");\r\n }\r\n if (value.val.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB\", \"1\");\r\n }\r\n if (value.val.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC\", \"1\");\r\n }\r\n if (value.val.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD\", \"1\");\r\n }\r\n }\r\n\r\n result.push([`vekt_${vector.data.MENO}_DATA_${range.start.year()}`, root.end({prettyPrint: true})]);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nasync function exportPairVector(root: XMLBuilder, api: EdaManagerApi, vector: VectorData, config: XmlVectorExportConfig, dateTimeMask: string, signal: AbortSignal): Promise<void> {\r\n const exportInterval = getExportInterval(config.from, config.to, vector.data.DATA_OD !== undefined ? dayjs(vector.data.DATA_OD) : undefined, vector.data.DATA_DO !== undefined ? dayjs(vector.data.DATA_DO) : undefined);\r\n\r\n if (exportInterval === undefined || !config.exportValues) {\r\n return;\r\n }\r\n\r\n const pairData = await api.readPairVectorValues(vector.data.ID_VEKTOR, exportInterval[0], exportInterval[1], EdaSamplingType.Default);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n for (let data of pairData) {\r\n const valueElement = root.ele(\"value\");\r\n\r\n valueElement.att(\"time\", dayjs(data.valX.valueTime).format(dateTimeMask));\r\n\r\n if (data.valX.valueTime !== undefined) {\r\n valueElement.att(\"value_x\", String(data.valX.value));\r\n\r\n if (data.valX.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_x\", \"1\");\r\n }\r\n if (data.valX.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_x\", \"1\");\r\n }\r\n if (data.valX.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_x\", \"1\");\r\n }\r\n if (data.valX.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_x\", \"1\");\r\n }\r\n }\r\n\r\n if (data.valY.valueTime !== undefined) {\r\n valueElement.att(\"value_y\", String(data.valY.value));\r\n\r\n if (data.valY.flags?.includes(\"A\")) {\r\n valueElement.att(\"flagA_y\", \"1\");\r\n }\r\n if (data.valY.flags?.includes(\"B\")) {\r\n valueElement.att(\"flagB_y\", \"1\");\r\n }\r\n if (data.valY.flags?.includes(\"C\")) {\r\n valueElement.att(\"flagC_y\", \"1\");\r\n }\r\n if (data.valY.flags?.includes(\"D\")) {\r\n valueElement.att(\"flagD_y\", \"1\");\r\n }\r\n }\r\n\r\n if (data.idx.value !== undefined) {\r\n valueElement.att(\"idx\", String(data.idx.value));\r\n }\r\n }\r\n}\r\n\r\nasync function exportSubGroup(api: EdaManagerApi, item: TreeItem, root: XMLBuilder, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n root.ele(\"podskupina\", {meno: item.Name});\r\n\r\n const subgroup = await api.loadGroupData(item.ID!);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (subgroup) {\r\n return await exportGroup(api, subgroup, config, dateTimeMask, loading, message, signal);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubVector(api: EdaManagerApi, item: TreeItem, root: XMLBuilder, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n if (!config.vectorTypes[item.Type as EdaVectorType]) {\r\n return [];\r\n }\r\n\r\n root.ele(\"vektor\", {meno: item.Name});\r\n\r\n const subVector = await api.loadVectorData(item.ID!);\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n if (subVector) {\r\n return await exportVector(api, subVector, config, dateTimeMask, loading, message, signal);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nasync function exportSubScenarios(api: EdaManagerApi, item: TreeItem, root: XMLBuilder, config: XmlVectorExportConfig, dateTimeMask: string, loading: LoadingContextType, message: MessageInstance, signal: AbortSignal): Promise<[string, string][]> {\r\n root.ele(\"podscenar\", {meno: item.Name});\r\n\r\n const subScenario = await api.loadScenarioData(item.ID!);\r\n\r\n if (subScenario) {\r\n return await exportScenario(api, subScenario, config, dateTimeMask, loading, message, signal);\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction getExportInterval(bt: dayjs.Dayjs | undefined, et: dayjs.Dayjs | undefined, vectorBt: dayjs.Dayjs | undefined, vectorEt: dayjs.Dayjs | undefined): [dayjs.Dayjs, dayjs.Dayjs] | undefined {\r\n if (vectorBt === undefined || vectorEt === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (bt !== undefined && et !== undefined) {\r\n let start = undefined;\r\n let end = undefined;\r\n\r\n if (bt.isBefore(vectorBt)) {\r\n start = bt;\r\n }\r\n if (et.isAfter(vectorEt)) {\r\n end = bt;\r\n }\r\n\r\n if (start !== undefined && end !== undefined && start.isBefore(end)) {\r\n return [start, end];\r\n }\r\n } else {\r\n return [vectorBt, vectorEt];\r\n }\r\n\r\n return undefined;\r\n}"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EdaVectorType, IdType, TypedData } from "../../constants/edaTypes";
|
|
2
|
-
import EdaManagerApi, { GroupDetail, PairVectorDetail, ScenarioDetail, VectorDetail, VectorValue } from "../../../../../api/eda/edaManagerApi";
|
|
2
|
+
import EdaManagerApi, { DescriptiveVectorDetail, GroupDetail, PairVectorDetail, ScenarioDetail, VectorDetail, VectorValue } from "../../../../../api/eda/edaManagerApi";
|
|
3
3
|
import JSZip from "jszip";
|
|
4
4
|
import { TreeDataNode } from "antd";
|
|
5
5
|
import { LoadingContextType } from "../../context/loadingContext";
|
|
@@ -9,7 +9,8 @@ export declare enum LocationType {
|
|
|
9
9
|
}
|
|
10
10
|
export declare enum Setting {
|
|
11
11
|
IGNORE_TIME_ZONES = 0,
|
|
12
|
-
DEFAULT_ID_VALUE = 1
|
|
12
|
+
DEFAULT_ID_VALUE = 1,
|
|
13
|
+
REPLACE_CODES_IN_PRESCRIPTION = 2
|
|
13
14
|
}
|
|
14
15
|
export declare enum EdaImportValidationStatus {
|
|
15
16
|
NEW = "New",
|
|
@@ -46,6 +47,7 @@ export type ResolvedData = {
|
|
|
46
47
|
data: Partial<VectorDetail>;
|
|
47
48
|
pair: Partial<PairVectorDetail>;
|
|
48
49
|
prescription?: string;
|
|
50
|
+
descr: Partial<DescriptiveVectorDetail>[];
|
|
49
51
|
};
|
|
50
52
|
} | {
|
|
51
53
|
type: IdType.GROUP;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EdaVectorType } from "../../constants/edaTypes";
|
|
2
|
-
import { GroupAttributes, PairVectorAttributes, ScenarioAttributes, VectorAttributes } from "./types";
|
|
2
|
+
import { DescriptiveVectorAttributes, GroupAttributes, PairVectorAttributes, ScenarioAttributes, VectorAttributes } from "./types";
|
|
3
3
|
import * as sax from "sax";
|
|
4
4
|
import xml2js from "xml2js";
|
|
5
5
|
import dayjs from "d2core/dayjs";
|
|
@@ -17,6 +17,7 @@ export var Setting;
|
|
|
17
17
|
(function (Setting) {
|
|
18
18
|
Setting[Setting["IGNORE_TIME_ZONES"] = 0] = "IGNORE_TIME_ZONES";
|
|
19
19
|
Setting[Setting["DEFAULT_ID_VALUE"] = 1] = "DEFAULT_ID_VALUE";
|
|
20
|
+
Setting[Setting["REPLACE_CODES_IN_PRESCRIPTION"] = 2] = "REPLACE_CODES_IN_PRESCRIPTION";
|
|
20
21
|
})(Setting || (Setting = {}));
|
|
21
22
|
export var EdaImportValidationStatus;
|
|
22
23
|
(function (EdaImportValidationStatus) {
|
|
@@ -214,13 +215,36 @@ export async function importData(api, loadedZip, rootData, settings, loading, si
|
|
|
214
215
|
function importVector(doc) {
|
|
215
216
|
const vectorData = {};
|
|
216
217
|
const pairData = {};
|
|
218
|
+
const descrData = [];
|
|
219
|
+
let prescription = undefined;
|
|
217
220
|
VectorAttributes.importFromJson(doc, vectorData);
|
|
221
|
+
switch (vectorData.TYP) {
|
|
222
|
+
case EdaVectorType.Pair:
|
|
223
|
+
PairVectorAttributes.importFromJson(doc, pairData);
|
|
224
|
+
break;
|
|
225
|
+
case EdaVectorType.Descriptive:
|
|
226
|
+
case EdaVectorType.Interval:
|
|
227
|
+
if (doc.popis) {
|
|
228
|
+
for (const descr of doc.popis) {
|
|
229
|
+
const data = {};
|
|
230
|
+
DescriptiveVectorAttributes.importFromJson(descr, data);
|
|
231
|
+
descrData.push(data);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
235
|
+
case EdaVectorType.FifteenMinutesCalc:
|
|
236
|
+
case EdaVectorType.HourCalc:
|
|
237
|
+
case EdaVectorType.DayCalc:
|
|
238
|
+
case EdaVectorType.ChangeCalc:
|
|
239
|
+
prescription = doc.predpis?._;
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
218
242
|
if (vectorData.TYP === EdaVectorType.Pair) {
|
|
219
243
|
PairVectorAttributes.importFromJson(doc, pairData);
|
|
220
244
|
}
|
|
221
245
|
return {
|
|
222
246
|
type: 0,
|
|
223
|
-
data: { data: vectorData, pair: pairData, prescription:
|
|
247
|
+
data: { data: vectorData, pair: pairData, prescription, descr: descrData }
|
|
224
248
|
};
|
|
225
249
|
}
|
|
226
250
|
function importVectorValues(doc) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/importExport/import.tsx"],"names":[],"mappings":"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","sourcesContent":["import {EdaVectorType, IdType, TypedData} from \"../../constants/edaTypes\";\r\nimport EdaManagerApi, {GroupDetail, PairVectorDetail, ScenarioDetail, TreeItem, VectorDetail, VectorValue} from \"../../../../../api/eda/edaManagerApi\";\r\nimport {GroupAttributes, PairVectorAttributes, ScenarioAttributes, VectorAttributes} from \"./types\";\r\nimport * as sax from \"sax\";\r\nimport xml2js from \"xml2js\";\r\nimport JSZip from \"jszip\";\r\nimport {TreeDataNode} from \"antd\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {FlagValue, UnivalTypeEnum} from \"d2jsapi\";\r\nimport {LoadingContextType} from \"../../context/loadingContext\";\r\nimport {awaitNextRenderFrame, getVectorIcon} from \"../../utils/utils\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport React, {ReactNode} from \"react\";\r\nimport {FolderOpenOutlined} from \"@ant-design/icons\";\r\n\r\nexport enum LocationType {\r\n SIBLING,\r\n CHILD\r\n}\r\n\r\nexport enum Setting {\r\n IGNORE_TIME_ZONES,\r\n DEFAULT_ID_VALUE,\r\n}\r\n\r\nexport enum EdaImportValidationStatus {\r\n NEW = \"New\",\r\n EXISTS = \"Exists\",\r\n DUPLICATE = \"Duplicate\",\r\n ERROR = \"Error\",\r\n}\r\n\r\nexport interface XmlVectorImportConfig {\r\n vectorTypes: Record<EdaVectorType, boolean>\r\n location: LocationType\r\n settings: Setting[]\r\n replace: {\r\n search: string\r\n replace: string\r\n append: string\r\n changeCode: boolean\r\n changePrescription: boolean\r\n }\r\n}\r\n\r\nexport interface DataNode extends Omit<TreeDataNode, \"children\"> {\r\n id: string\r\n data: ResolvedData\r\n values?: VectorValue[]\r\n children?: DataNode[]\r\n newName: string\r\n newDisplayName: string\r\n import: boolean\r\n importValues: boolean\r\n validationStatus: EdaImportValidationStatus\r\n}\r\n\r\ninterface XmlContent<T = any> {\r\n result: T;\r\n doctype: string | null\r\n}\r\n\r\ntype VectorXML = {\r\n $: { [k: string]: string }\r\n predpis?: {\r\n _: string\r\n }\r\n}\r\n\r\ntype VectorDataXML = {\r\n value: { $: { [k: string]: string } }[]\r\n\r\n}\r\n\r\ntype GroupXML = {\r\n $: { [k: string]: string }\r\n vektor?: { $: { meno: string } }[]\r\n podskupina?: { $: { meno: string } }[]\r\n}\r\n\r\ntype ScenarioXML = {\r\n $: { [k: string]: string }\r\n vektor?: { $: { meno: string } }[]\r\n podscenar?: { $: { meno: string } }[]\r\n}\r\n\r\nexport type ResolvedData =\r\n | { type: IdType.VECTOR; data: { data: Partial<VectorDetail>, pair: Partial<PairVectorDetail>, prescription?: string } }\r\n | { type: IdType.GROUP; data: { data: Partial<GroupDetail> }, subgroup: string[], vectors: string[] }\r\n | { type: IdType.SCENARIO; data: { data: Partial<ScenarioDetail> }, subscenario: string[], vectors: string[] }\r\n\r\nexport async function importData(api: EdaManagerApi, loadedZip: JSZip, rootData: TypedData, settings: XmlVectorImportConfig, loading: LoadingContextType, signal: AbortSignal): Promise<[DataNode | undefined, DataNode[]]> {\r\n const resolvedData: ResolvedData[] = [];\r\n const vectors: Map<string, XmlContent> = new Map();\r\n const files = Object.entries(loadedZip.files);\r\n const rootId = rootData.type === IdType.GROUP ? rootData.data.data.ID_SKVEKTOR : (rootData.type === IdType.SCENARIO ? rootData.data.data.ID_SCENAR : undefined);\r\n const rootParentId = rootData.type === IdType.GROUP ? rootData.data.data.EDA_ID_SKVEKTOR : (rootData.type === IdType.SCENARIO ? rootData.data.data.EDA_ID_SCENAR : undefined);\r\n\r\n for (let i = 0; i < files.length; i++){\r\n const [name, fileEntry] = files[i];\r\n\r\n loading.updateLoading({loadingItem: name, loadingPercentage: i / files.length * 100});\r\n\r\n if (!fileEntry.dir) {\r\n const content = await fileEntry.async(\"string\");\r\n const doc = await parseXmlWithDoctype(content);\r\n const doctype = doc.doctype ? doc.doctype.match(/\\w+/)?.[0] : undefined;\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n switch (doctype) {\r\n case \"vektor\":\r\n vectors.set(fileEntry.name, doc);\r\n break;\r\n case \"skupina\":\r\n importGroup(doc.result.skupina, resolvedData);\r\n break;\r\n case \"scenar\":\r\n importScenario(doc.result.scenar, resolvedData);\r\n break;\r\n default:\r\n throw new Error(i18n(\"Invalid doctype in %{i} (%{d})\", {i: fileEntry.name, d: String(doc.doctype)}));\r\n }\r\n }\r\n }\r\n\r\n loading.updateLoading({loadingPercentage: undefined, loadingItem: i18n(\"Processing data...\")});\r\n\r\n let treeData: DataNode | undefined = undefined;\r\n let tableData: DataNode[] = [];\r\n\r\n if (resolvedData.length > 0) {\r\n const allNodes: DataNode[] = [];\r\n\r\n for (const item of resolvedData) {\r\n if (item.data.data.MENO) {\r\n allNodes.push(createNode(item.data.data.MENO, item, settings));\r\n } else {\r\n throw new Error(i18n(\"Missing object code\"));\r\n }\r\n }\r\n\r\n const rootNodes: DataNode[] = [];\r\n\r\n for (const node of allNodes) {\r\n const id = node.key as string;\r\n const data = node.data;\r\n\r\n const parentEntry = allNodes.find((d) => {\r\n if (d.data.type === IdType.GROUP && data.type === IdType.GROUP) {\r\n return d.data.subgroup.includes(id);\r\n } else if (d.data.type === IdType.SCENARIO && data.type === IdType.SCENARIO) {\r\n return d.data.subscenario.includes(id);\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (parentEntry) {\r\n const parentId = parentEntry.data.type === IdType.GROUP\r\n ? parentEntry.data.data.data.ID_SKVEKTOR\r\n : (parentEntry.data.type === IdType.SCENARIO ? parentEntry.data.data.data.ID_SCENAR : undefined);\r\n\r\n if (!parentEntry.children) {\r\n parentEntry.children = [];\r\n }\r\n\r\n switch (node.data.type) {\r\n case IdType.VECTOR:\r\n node.data.data.data.ID_SKVEKTOR = parentId;\r\n break;\r\n case IdType.GROUP:\r\n node.data.data.data.EDA_ID_SKVEKTOR = parentId;\r\n break;\r\n case IdType.SCENARIO:\r\n node.data.data.data.EDA_ID_SCENAR = parentId;\r\n break;\r\n }\r\n\r\n parentEntry.children.push(node);\r\n } else {\r\n switch (node.data.type) {\r\n case IdType.VECTOR:\r\n node.data.data.data.ID_SKVEKTOR = settings.location === LocationType.CHILD ? rootId : rootParentId;\r\n break;\r\n case IdType.GROUP:\r\n node.data.data.data.EDA_ID_SKVEKTOR = settings.location === LocationType.CHILD ? rootId : rootParentId;\r\n break;\r\n case IdType.SCENARIO:\r\n node.data.data.data.EDA_ID_SCENAR = settings.location === LocationType.CHILD ? rootId : rootParentId;\r\n break;\r\n }\r\n\r\n rootNodes.push(node);\r\n }\r\n\r\n await awaitNextRenderFrame();\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n }\r\n\r\n if (rootNodes.length > 1) {\r\n throw new Error(i18n(\"Multiple root nodes found (%{n})\", {n: String(rootNodes.length)}));\r\n }\r\n\r\n treeData = rootNodes[0];\r\n\r\n for (const node of allNodes) {\r\n if (node.data.type === IdType.GROUP || node.data.type === IdType.SCENARIO) {\r\n for (let vector of node.data.vectors) {\r\n const fileName = `vekt_${vector}`;\r\n let regex = new RegExp(`^${fileName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}(_U[0-9]+)?\\.xml`);\r\n let fileNameWithExt: string | undefined = undefined;\r\n let resolved: ResolvedData | undefined = undefined;\r\n\r\n for (let [key, doc] of vectors) {\r\n if (regex.test(key)) {\r\n const doctype = doc?.doctype ? doc.doctype.match(/\\w+/)?.[0] : undefined;\r\n\r\n if (doctype !== \"vektor\") {\r\n throw new Error(i18n(\"Invalid doctype in %{i} (%{d})\", {i: key, d: String(doc.doctype)}));\r\n }\r\n\r\n fileNameWithExt = key;\r\n resolved = importVector(doc.result.vektor);\r\n }\r\n }\r\n\r\n if (!resolved || !fileNameWithExt) {\r\n throw new Error(i18n(\"No vector found with code %{i}\", {i: fileName}));\r\n }\r\n\r\n const vectorValues: VectorValue[] = [];\r\n\r\n if (!resolved.data.data.MENO || resolved.type !== IdType.VECTOR) {\r\n throw new Error(i18n(\"Missing object code\"));\r\n }\r\n\r\n const children: DataNode = createNode(resolved.data.data.MENO, resolved, settings, vectorValues);\r\n const parentId = node.data.type === IdType.GROUP\r\n ? node.data.data.data.ID_SKVEKTOR\r\n : (node.data.type === IdType.SCENARIO ? node.data.data.data.ID_SCENAR : undefined);\r\n\r\n if (!node.children) {\r\n node.children = [];\r\n }\r\n\r\n resolved.data.data.ID_SKVEKTOR = parentId;\r\n vectors.delete(fileNameWithExt)\r\n node.children.push(children);\r\n\r\n const dataVectors: string[] = [];\r\n regex = new RegExp(`^${fileName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}(_U[0-9]+)?_DATA_([0-9]{4})\\\\.xml`);\r\n\r\n for (let [key, doc] of vectors) {\r\n if (regex.test(key)) {\r\n const doctype = doc?.doctype ? doc.doctype.match(/\\w+/)?.[0] : undefined;\r\n\r\n if (doctype !== \"vektor\") {\r\n throw new Error(i18n(\"Invalid doctype in %{i} (%{d})\", {i: key, d: String(doc.doctype)}));\r\n }\r\n\r\n dataVectors.push(key);\r\n vectorValues.push(...importVectorValues(doc.result.vektor));\r\n }\r\n }\r\n\r\n for (let key of dataVectors) {\r\n vectors.delete(key);\r\n }\r\n }\r\n }\r\n\r\n await awaitNextRenderFrame();\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n }\r\n\r\n if (vectors.size > 0) {\r\n throw new Error(i18n(\"Found %{n} orphan objects\", {n: String(vectors.size)}));\r\n }\r\n\r\n flattenTree(treeData, tableData);\r\n loading.updateLoading({loadingItem: i18n(\"Validating data...\")});\r\n\r\n let existType = EdaImportValidationStatus.EXISTS;\r\n let isRoot = true;\r\n\r\n for (let data of tableData) {\r\n const result = await loadDataFromResolvedData(api, data.data);\r\n\r\n if (isRoot) {\r\n isRoot = false;\r\n\r\n if (result) {\r\n if (settings.location === LocationType.CHILD && rootId === result.ParentID) {\r\n existType = EdaImportValidationStatus.DUPLICATE;\r\n } else if (settings.location === LocationType.SIBLING && rootParentId === result.ParentID) {\r\n existType = EdaImportValidationStatus.DUPLICATE;\r\n }\r\n }\r\n }\r\n\r\n if (result !== undefined) {\r\n data.validationStatus = !isRoot && result.ParentID === getParentId(data.data) ? existType : EdaImportValidationStatus.EXISTS;\r\n } else {\r\n data.validationStatus = EdaImportValidationStatus.NEW;\r\n }\r\n }\r\n }\r\n\r\n return [treeData, tableData];\r\n}\r\n\r\nfunction importVector(doc: VectorXML): ResolvedData {\r\n const vectorData: Partial<VectorDetail> = {}\r\n const pairData: Partial<PairVectorDetail> = {}\r\n\r\n VectorAttributes.importFromJson(doc, vectorData);\r\n\r\n if (vectorData.TYP === EdaVectorType.Pair) {\r\n PairVectorAttributes.importFromJson(doc, pairData);\r\n }\r\n\r\n return {\r\n type: IdType.VECTOR,\r\n data: {data: vectorData, pair: pairData, prescription: doc.predpis?._}\r\n };\r\n}\r\n\r\nfunction importVectorValues(doc: VectorDataXML): VectorValue[] {\r\n const result: VectorValue[] = [];\r\n\r\n for (let value of doc.value) {\r\n const time = dayjs(readProperty(value, \"time\"), LocaleHolder.getDateTimeFormat(true, false, false))\r\n const val = readProperty(value, \"value\");\r\n const flagA = readProperty(value, \"flagA\");\r\n const flagB = readProperty(value, \"flagB\");\r\n const flagC = readProperty(value, \"flagC\");\r\n const flagD = readProperty(value, \"flagD\");\r\n let flags: FlagValue[] | undefined = undefined;\r\n\r\n if (flagA || flagB || flagC || flagD) {\r\n flags = [];\r\n\r\n if (flagA) flags.push(\"A\");\r\n if (flagB) flags.push(\"B\");\r\n if (flagC) flags.push(\"C\");\r\n if (flagD) flags.push(\"D\");\r\n }\r\n\r\n result.push({\r\n val: {\r\n type: UnivalTypeEnum.REAL,\r\n value: val ? Number(val) : undefined,\r\n valueTime: time.valueOf(),\r\n flags: flags,\r\n }\r\n })\r\n }\r\n return result;\r\n}\r\n\r\nfunction importGroup(doc: GroupXML, result: ResolvedData[]) {\r\n const groupData: Partial<GroupDetail> = {}\r\n\r\n GroupAttributes.importFromJson(doc, groupData);\r\n\r\n result.push({\r\n type: IdType.GROUP,\r\n data: {data: groupData},\r\n subgroup: doc.podskupina?.map((p) => p.$.meno) ?? [],\r\n vectors: doc.vektor?.map((v) => v.$.meno) ?? [],\r\n });\r\n}\r\n\r\nfunction importScenario(doc: ScenarioXML, result: ResolvedData[]) {\r\n const scenarioData: Partial<ScenarioDetail> = {}\r\n\r\n ScenarioAttributes.importFromJson(doc, scenarioData);\r\n\r\n result.push({\r\n type: IdType.SCENARIO,\r\n data: {data: scenarioData},\r\n subscenario: doc.podscenar?.map((p) => p.$.meno) ?? [],\r\n vectors: doc.vektor?.map((v) => v.$.meno) ?? [],\r\n });\r\n}\r\n\r\nasync function parseXmlWithDoctype<T = any>(xmlString: string): Promise<XmlContent<T>> {\r\n const getDoctype = (): Promise<string | null> => {\r\n return new Promise((resolve) => {\r\n const saxStream = sax.parser(true);\r\n let foundDoctype: string | null = null;\r\n\r\n saxStream.ondoctype = (doctypeStr: any) => {\r\n foundDoctype = doctypeStr.trim();\r\n saxStream.close();\r\n };\r\n saxStream.onend = () => resolve(foundDoctype);\r\n saxStream.onerror = () => resolve(null);\r\n saxStream.write(xmlString).close();\r\n });\r\n };\r\n\r\n const doctype = await getDoctype();\r\n\r\n return new Promise((resolve, reject) => {\r\n const parser = new xml2js.Parser({explicitArray: true});\r\n parser.parseString(xmlString, (err, result) => {\r\n if (err) return reject(err);\r\n resolve({result: result as T, doctype});\r\n });\r\n });\r\n}\r\n\r\nfunction readProperty(value: { $: { [k: string]: string } }, name: string): string | undefined {\r\n const v = value.$[name];\r\n\r\n if (v !== undefined && v !== null) {\r\n return v;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction flattenTree(node: DataNode, result: DataNode[]) {\r\n result.push(node);\r\n\r\n if (node.children && node.children.length > 0) {\r\n for (let child of node.children) {\r\n flattenTree(child, result);\r\n }\r\n }\r\n}\r\n\r\nfunction createNode(id: string, item: ResolvedData, settings: XmlVectorImportConfig, values?: VectorValue[]): DataNode {\r\n const isVector = item.type === IdType.VECTOR;\r\n\r\n return {\r\n id,\r\n key: id,\r\n data: item,\r\n import: (isVector && item.data.data.TYP !== undefined) ? (settings.vectorTypes[item.data.data.TYP as EdaVectorType]) : true,\r\n importValues: true,\r\n validationStatus: EdaImportValidationStatus.ERROR,\r\n title: item.data.data.ZOBRAZ_MENO,\r\n newName: item.data.data.MENO ?? \"\",\r\n newDisplayName: item.data.data.ZOBRAZ_MENO ?? \"\",\r\n isLeaf: item.type === IdType.VECTOR,\r\n icon: getIcon(item),\r\n values,\r\n };\r\n}\r\n\r\nfunction getIcon(item: ResolvedData): ReactNode {\r\n if (item.type === IdType.VECTOR && item.data.data.TYP !== undefined) {\r\n return getVectorIcon(item.data.data.TYP);\r\n }\r\n\r\n return (<FolderOpenOutlined />);\r\n}\r\n\r\nasync function loadDataFromResolvedData(api: EdaManagerApi, data: ResolvedData): Promise<TreeItem | undefined> {\r\n switch (data.type) {\r\n case IdType.VECTOR:\r\n if (data.data.data.ID_VEKTOR) {\r\n return await api.getVector(data.data.data.ID_VEKTOR);\r\n } else {\r\n throw new Error(i18n(\"Missing object ID in %{i}\", {i: String(data.data.data.MENO)}));\r\n }\r\n case IdType.GROUP:\r\n if (data.data.data.ID_SKVEKTOR) {\r\n return await api.getGroup(data.data.data.ID_SKVEKTOR);\r\n } else {\r\n throw new Error(i18n(\"Missing object ID in %{i}\", {i: String(data.data.data.MENO)}));\r\n }\r\n case IdType.SCENARIO:\r\n if (data.data.data.ID_SCENAR) {\r\n return await api.getScenario(data.data.data.ID_SCENAR);\r\n } else {\r\n throw new Error(i18n(\"Missing object ID in %{i}\", {i: String(data.data.data.MENO)}));\r\n }\r\n }\r\n}\r\n\r\nfunction getParentId(data: ResolvedData) {\r\n switch (data.type) {\r\n case IdType.VECTOR:\r\n return data.data.data.ID_SKVEKTOR;\r\n case IdType.GROUP:\r\n return data.data.data.EDA_ID_SKVEKTOR;\r\n case IdType.SCENARIO:\r\n return data.data.data.EDA_ID_SCENAR;\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/importExport/import.tsx"],"names":[],"mappings":"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","sourcesContent":["import {EdaVectorType, IdType, TypedData} from \"../../constants/edaTypes\";\r\nimport EdaManagerApi, {DescriptiveVectorDetail, GroupDetail, PairVectorDetail, ScenarioDetail, TreeItem, VectorDetail, VectorValue} from \"../../../../../api/eda/edaManagerApi\";\r\nimport {DescriptiveVectorAttributes, GroupAttributes, PairVectorAttributes, ScenarioAttributes, VectorAttributes} from \"./types\";\r\nimport * as sax from \"sax\";\r\nimport xml2js from \"xml2js\";\r\nimport JSZip from \"jszip\";\r\nimport {TreeDataNode} from \"antd\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {FlagValue, UnivalTypeEnum} from \"d2jsapi\";\r\nimport {LoadingContextType} from \"../../context/loadingContext\";\r\nimport {awaitNextRenderFrame, getVectorIcon} from \"../../utils/utils\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport React, {ReactNode} from \"react\";\r\nimport {FolderOpenOutlined} from \"@ant-design/icons\";\r\n\r\nexport enum LocationType {\r\n SIBLING,\r\n CHILD\r\n}\r\n\r\nexport enum Setting {\r\n IGNORE_TIME_ZONES,\r\n DEFAULT_ID_VALUE,\r\n REPLACE_CODES_IN_PRESCRIPTION,\r\n}\r\n\r\nexport enum EdaImportValidationStatus {\r\n NEW = \"New\",\r\n EXISTS = \"Exists\",\r\n DUPLICATE = \"Duplicate\",\r\n ERROR = \"Error\",\r\n}\r\n\r\nexport interface XmlVectorImportConfig {\r\n vectorTypes: Record<EdaVectorType, boolean>\r\n location: LocationType\r\n settings: Setting[]\r\n replace: {\r\n search: string\r\n replace: string\r\n append: string\r\n changeCode: boolean\r\n changePrescription: boolean\r\n }\r\n}\r\n\r\nexport interface DataNode extends Omit<TreeDataNode, \"children\"> {\r\n id: string\r\n data: ResolvedData\r\n values?: VectorValue[]\r\n children?: DataNode[]\r\n newName: string\r\n newDisplayName: string\r\n import: boolean\r\n importValues: boolean\r\n validationStatus: EdaImportValidationStatus\r\n}\r\n\r\ninterface XmlContent<T = any> {\r\n result: T;\r\n doctype: string | null\r\n}\r\n\r\ntype VectorXML = {\r\n $: { [k: string]: string }\r\n predpis?: {\r\n _: string\r\n }\r\n popis?: { $: { [k: string]: string } }[]\r\n}\r\n\r\ntype VectorDataXML = {\r\n value: { $: { [k: string]: string } }[]\r\n}\r\n\r\ntype GroupXML = {\r\n $: { [k: string]: string }\r\n vektor?: { $: { meno: string } }[]\r\n podskupina?: { $: { meno: string } }[]\r\n}\r\n\r\ntype ScenarioXML = {\r\n $: { [k: string]: string }\r\n vektor?: { $: { meno: string } }[]\r\n podscenar?: { $: { meno: string } }[]\r\n}\r\n\r\nexport type ResolvedData =\r\n | { type: IdType.VECTOR; data: { data: Partial<VectorDetail>, pair: Partial<PairVectorDetail>, prescription?: string, descr: Partial<DescriptiveVectorDetail>[] } }\r\n | { type: IdType.GROUP; data: { data: Partial<GroupDetail> }, subgroup: string[], vectors: string[] }\r\n | { type: IdType.SCENARIO; data: { data: Partial<ScenarioDetail> }, subscenario: string[], vectors: string[] }\r\n\r\nexport async function importData(api: EdaManagerApi, loadedZip: JSZip, rootData: TypedData, settings: XmlVectorImportConfig, loading: LoadingContextType, signal: AbortSignal): Promise<[DataNode | undefined, DataNode[]]> {\r\n const resolvedData: ResolvedData[] = [];\r\n const vectors: Map<string, XmlContent> = new Map();\r\n const files = Object.entries(loadedZip.files);\r\n const rootId = rootData.type === IdType.GROUP ? rootData.data.data.ID_SKVEKTOR : (rootData.type === IdType.SCENARIO ? rootData.data.data.ID_SCENAR : undefined);\r\n const rootParentId = rootData.type === IdType.GROUP ? rootData.data.data.EDA_ID_SKVEKTOR : (rootData.type === IdType.SCENARIO ? rootData.data.data.EDA_ID_SCENAR : undefined);\r\n\r\n for (let i = 0; i < files.length; i++){\r\n const [name, fileEntry] = files[i];\r\n\r\n loading.updateLoading({loadingItem: name, loadingPercentage: i / files.length * 100});\r\n\r\n if (!fileEntry.dir) {\r\n const content = await fileEntry.async(\"string\");\r\n const doc = await parseXmlWithDoctype(content);\r\n const doctype = doc.doctype ? doc.doctype.match(/\\w+/)?.[0] : undefined;\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n\r\n switch (doctype) {\r\n case \"vektor\":\r\n vectors.set(fileEntry.name, doc);\r\n break;\r\n case \"skupina\":\r\n importGroup(doc.result.skupina, resolvedData);\r\n break;\r\n case \"scenar\":\r\n importScenario(doc.result.scenar, resolvedData);\r\n break;\r\n default:\r\n throw new Error(i18n(\"Invalid doctype in %{i} (%{d})\", {i: fileEntry.name, d: String(doc.doctype)}));\r\n }\r\n }\r\n }\r\n\r\n loading.updateLoading({loadingPercentage: undefined, loadingItem: i18n(\"Processing data...\")});\r\n\r\n let treeData: DataNode | undefined = undefined;\r\n let tableData: DataNode[] = [];\r\n\r\n if (resolvedData.length > 0) {\r\n const allNodes: DataNode[] = [];\r\n\r\n for (const item of resolvedData) {\r\n if (item.data.data.MENO) {\r\n allNodes.push(createNode(item.data.data.MENO, item, settings));\r\n } else {\r\n throw new Error(i18n(\"Missing object code\"));\r\n }\r\n }\r\n\r\n const rootNodes: DataNode[] = [];\r\n\r\n for (const node of allNodes) {\r\n const id = node.key as string;\r\n const data = node.data;\r\n\r\n const parentEntry = allNodes.find((d) => {\r\n if (d.data.type === IdType.GROUP && data.type === IdType.GROUP) {\r\n return d.data.subgroup.includes(id);\r\n } else if (d.data.type === IdType.SCENARIO && data.type === IdType.SCENARIO) {\r\n return d.data.subscenario.includes(id);\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (parentEntry) {\r\n const parentId = parentEntry.data.type === IdType.GROUP\r\n ? parentEntry.data.data.data.ID_SKVEKTOR\r\n : (parentEntry.data.type === IdType.SCENARIO ? parentEntry.data.data.data.ID_SCENAR : undefined);\r\n\r\n if (!parentEntry.children) {\r\n parentEntry.children = [];\r\n }\r\n\r\n switch (node.data.type) {\r\n case IdType.VECTOR:\r\n node.data.data.data.ID_SKVEKTOR = parentId;\r\n break;\r\n case IdType.GROUP:\r\n node.data.data.data.EDA_ID_SKVEKTOR = parentId;\r\n break;\r\n case IdType.SCENARIO:\r\n node.data.data.data.EDA_ID_SCENAR = parentId;\r\n break;\r\n }\r\n\r\n parentEntry.children.push(node);\r\n } else {\r\n switch (node.data.type) {\r\n case IdType.VECTOR:\r\n node.data.data.data.ID_SKVEKTOR = settings.location === LocationType.CHILD ? rootId : rootParentId;\r\n break;\r\n case IdType.GROUP:\r\n node.data.data.data.EDA_ID_SKVEKTOR = settings.location === LocationType.CHILD ? rootId : rootParentId;\r\n break;\r\n case IdType.SCENARIO:\r\n node.data.data.data.EDA_ID_SCENAR = settings.location === LocationType.CHILD ? rootId : rootParentId;\r\n break;\r\n }\r\n\r\n rootNodes.push(node);\r\n }\r\n\r\n await awaitNextRenderFrame();\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n }\r\n\r\n if (rootNodes.length > 1) {\r\n throw new Error(i18n(\"Multiple root nodes found (%{n})\", {n: String(rootNodes.length)}));\r\n }\r\n\r\n treeData = rootNodes[0];\r\n\r\n for (const node of allNodes) {\r\n if (node.data.type === IdType.GROUP || node.data.type === IdType.SCENARIO) {\r\n for (let vector of node.data.vectors) {\r\n const fileName = `vekt_${vector}`;\r\n let regex = new RegExp(`^${fileName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}(_U[0-9]+)?\\.xml`);\r\n let fileNameWithExt: string | undefined = undefined;\r\n let resolved: ResolvedData | undefined = undefined;\r\n\r\n for (let [key, doc] of vectors) {\r\n if (regex.test(key)) {\r\n const doctype = doc?.doctype ? doc.doctype.match(/\\w+/)?.[0] : undefined;\r\n\r\n if (doctype !== \"vektor\") {\r\n throw new Error(i18n(\"Invalid doctype in %{i} (%{d})\", {i: key, d: String(doc.doctype)}));\r\n }\r\n\r\n fileNameWithExt = key;\r\n resolved = importVector(doc.result.vektor);\r\n }\r\n }\r\n\r\n if (!resolved || !fileNameWithExt) {\r\n throw new Error(i18n(\"No vector found with code %{i}\", {i: fileName}));\r\n }\r\n\r\n const vectorValues: VectorValue[] = [];\r\n\r\n if (!resolved.data.data.MENO || resolved.type !== IdType.VECTOR) {\r\n throw new Error(i18n(\"Missing object code\"));\r\n }\r\n\r\n const children: DataNode = createNode(resolved.data.data.MENO, resolved, settings, vectorValues);\r\n const parentId = node.data.type === IdType.GROUP\r\n ? node.data.data.data.ID_SKVEKTOR\r\n : (node.data.type === IdType.SCENARIO ? node.data.data.data.ID_SCENAR : undefined);\r\n\r\n if (!node.children) {\r\n node.children = [];\r\n }\r\n\r\n resolved.data.data.ID_SKVEKTOR = parentId;\r\n vectors.delete(fileNameWithExt)\r\n node.children.push(children);\r\n\r\n const dataVectors: string[] = [];\r\n regex = new RegExp(`^${fileName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}(_U[0-9]+)?_DATA_([0-9]{4})\\\\.xml`);\r\n\r\n for (let [key, doc] of vectors) {\r\n if (regex.test(key)) {\r\n const doctype = doc?.doctype ? doc.doctype.match(/\\w+/)?.[0] : undefined;\r\n\r\n if (doctype !== \"vektor\") {\r\n throw new Error(i18n(\"Invalid doctype in %{i} (%{d})\", {i: key, d: String(doc.doctype)}));\r\n }\r\n\r\n dataVectors.push(key);\r\n vectorValues.push(...importVectorValues(doc.result.vektor));\r\n }\r\n }\r\n\r\n for (let key of dataVectors) {\r\n vectors.delete(key);\r\n }\r\n }\r\n }\r\n\r\n await awaitNextRenderFrame();\r\n\r\n if (signal.aborted) {\r\n throw new Error(i18n(\"Aborted\"));\r\n }\r\n }\r\n\r\n if (vectors.size > 0) {\r\n throw new Error(i18n(\"Found %{n} orphan objects\", {n: String(vectors.size)}));\r\n }\r\n\r\n flattenTree(treeData, tableData);\r\n loading.updateLoading({loadingItem: i18n(\"Validating data...\")});\r\n\r\n let existType = EdaImportValidationStatus.EXISTS;\r\n let isRoot = true;\r\n\r\n for (let data of tableData) {\r\n const result = await loadDataFromResolvedData(api, data.data);\r\n\r\n if (isRoot) {\r\n isRoot = false;\r\n\r\n if (result) {\r\n if (settings.location === LocationType.CHILD && rootId === result.ParentID) {\r\n existType = EdaImportValidationStatus.DUPLICATE;\r\n } else if (settings.location === LocationType.SIBLING && rootParentId === result.ParentID) {\r\n existType = EdaImportValidationStatus.DUPLICATE;\r\n }\r\n }\r\n }\r\n\r\n if (result !== undefined) {\r\n data.validationStatus = !isRoot && result.ParentID === getParentId(data.data) ? existType : EdaImportValidationStatus.EXISTS;\r\n } else {\r\n data.validationStatus = EdaImportValidationStatus.NEW;\r\n }\r\n }\r\n }\r\n\r\n return [treeData, tableData];\r\n}\r\n\r\nfunction importVector(doc: VectorXML): ResolvedData {\r\n const vectorData: Partial<VectorDetail> = {};\r\n const pairData: Partial<PairVectorDetail> = {};\r\n const descrData: Partial<DescriptiveVectorDetail>[] = [];\r\n let prescription: string | undefined = undefined;\r\n\r\n VectorAttributes.importFromJson(doc, vectorData);\r\n\r\n switch (vectorData.TYP) {\r\n case EdaVectorType.Pair:\r\n PairVectorAttributes.importFromJson(doc, pairData);\r\n break;\r\n case EdaVectorType.Descriptive:\r\n case EdaVectorType.Interval:\r\n if (doc.popis) {\r\n for (const descr of doc.popis) {\r\n const data: Partial<DescriptiveVectorDetail> = {};\r\n\r\n DescriptiveVectorAttributes.importFromJson(descr, data);\r\n descrData.push(data);\r\n }\r\n }\r\n break;\r\n case EdaVectorType.FifteenMinutesCalc:\r\n case EdaVectorType.HourCalc:\r\n case EdaVectorType.DayCalc:\r\n case EdaVectorType.ChangeCalc:\r\n prescription = doc.predpis?._;\r\n break;\r\n }\r\n\r\n if (vectorData.TYP === EdaVectorType.Pair) {\r\n PairVectorAttributes.importFromJson(doc, pairData);\r\n }\r\n\r\n return {\r\n type: IdType.VECTOR,\r\n data: {data: vectorData, pair: pairData, prescription, descr: descrData}\r\n };\r\n}\r\n\r\nfunction importVectorValues(doc: VectorDataXML): VectorValue[] {\r\n const result: VectorValue[] = [];\r\n\r\n for (let value of doc.value) {\r\n const time = dayjs(readProperty(value, \"time\"), LocaleHolder.getDateTimeFormat(true, false, false))\r\n const val = readProperty(value, \"value\");\r\n const flagA = readProperty(value, \"flagA\");\r\n const flagB = readProperty(value, \"flagB\");\r\n const flagC = readProperty(value, \"flagC\");\r\n const flagD = readProperty(value, \"flagD\");\r\n let flags: FlagValue[] | undefined = undefined;\r\n\r\n if (flagA || flagB || flagC || flagD) {\r\n flags = [];\r\n\r\n if (flagA) flags.push(\"A\");\r\n if (flagB) flags.push(\"B\");\r\n if (flagC) flags.push(\"C\");\r\n if (flagD) flags.push(\"D\");\r\n }\r\n\r\n result.push({\r\n val: {\r\n type: UnivalTypeEnum.REAL,\r\n value: val ? Number(val) : undefined,\r\n valueTime: time.valueOf(),\r\n flags: flags,\r\n }\r\n })\r\n }\r\n return result;\r\n}\r\n\r\nfunction importGroup(doc: GroupXML, result: ResolvedData[]) {\r\n const groupData: Partial<GroupDetail> = {}\r\n\r\n GroupAttributes.importFromJson(doc, groupData);\r\n\r\n result.push({\r\n type: IdType.GROUP,\r\n data: {data: groupData},\r\n subgroup: doc.podskupina?.map((p) => p.$.meno) ?? [],\r\n vectors: doc.vektor?.map((v) => v.$.meno) ?? [],\r\n });\r\n}\r\n\r\nfunction importScenario(doc: ScenarioXML, result: ResolvedData[]) {\r\n const scenarioData: Partial<ScenarioDetail> = {}\r\n\r\n ScenarioAttributes.importFromJson(doc, scenarioData);\r\n\r\n result.push({\r\n type: IdType.SCENARIO,\r\n data: {data: scenarioData},\r\n subscenario: doc.podscenar?.map((p) => p.$.meno) ?? [],\r\n vectors: doc.vektor?.map((v) => v.$.meno) ?? [],\r\n });\r\n}\r\n\r\nasync function parseXmlWithDoctype<T = any>(xmlString: string): Promise<XmlContent<T>> {\r\n const getDoctype = (): Promise<string | null> => {\r\n return new Promise((resolve) => {\r\n const saxStream = sax.parser(true);\r\n let foundDoctype: string | null = null;\r\n\r\n saxStream.ondoctype = (doctypeStr: any) => {\r\n foundDoctype = doctypeStr.trim();\r\n saxStream.close();\r\n };\r\n saxStream.onend = () => resolve(foundDoctype);\r\n saxStream.onerror = () => resolve(null);\r\n saxStream.write(xmlString).close();\r\n });\r\n };\r\n\r\n const doctype = await getDoctype();\r\n\r\n return new Promise((resolve, reject) => {\r\n const parser = new xml2js.Parser({explicitArray: true});\r\n parser.parseString(xmlString, (err, result) => {\r\n if (err) return reject(err);\r\n resolve({result: result as T, doctype});\r\n });\r\n });\r\n}\r\n\r\nfunction readProperty(value: { $: { [k: string]: string } }, name: string): string | undefined {\r\n const v = value.$[name];\r\n\r\n if (v !== undefined && v !== null) {\r\n return v;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction flattenTree(node: DataNode, result: DataNode[]) {\r\n result.push(node);\r\n\r\n if (node.children && node.children.length > 0) {\r\n for (let child of node.children) {\r\n flattenTree(child, result);\r\n }\r\n }\r\n}\r\n\r\nfunction createNode(id: string, item: ResolvedData, settings: XmlVectorImportConfig, values?: VectorValue[]): DataNode {\r\n const isVector = item.type === IdType.VECTOR;\r\n\r\n return {\r\n id,\r\n key: id,\r\n data: item,\r\n import: (isVector && item.data.data.TYP !== undefined) ? (settings.vectorTypes[item.data.data.TYP as EdaVectorType]) : true,\r\n importValues: true,\r\n validationStatus: EdaImportValidationStatus.ERROR,\r\n title: item.data.data.ZOBRAZ_MENO,\r\n newName: item.data.data.MENO ?? \"\",\r\n newDisplayName: item.data.data.ZOBRAZ_MENO ?? \"\",\r\n isLeaf: item.type === IdType.VECTOR,\r\n icon: getIcon(item),\r\n values,\r\n };\r\n}\r\n\r\nfunction getIcon(item: ResolvedData): ReactNode {\r\n if (item.type === IdType.VECTOR && item.data.data.TYP !== undefined) {\r\n return getVectorIcon(item.data.data.TYP);\r\n }\r\n\r\n return (<FolderOpenOutlined />);\r\n}\r\n\r\nasync function loadDataFromResolvedData(api: EdaManagerApi, data: ResolvedData): Promise<TreeItem | undefined> {\r\n switch (data.type) {\r\n case IdType.VECTOR:\r\n if (data.data.data.ID_VEKTOR) {\r\n return await api.getVector(data.data.data.ID_VEKTOR);\r\n } else {\r\n throw new Error(i18n(\"Missing object ID in %{i}\", {i: String(data.data.data.MENO)}));\r\n }\r\n case IdType.GROUP:\r\n if (data.data.data.ID_SKVEKTOR) {\r\n return await api.getGroup(data.data.data.ID_SKVEKTOR);\r\n } else {\r\n throw new Error(i18n(\"Missing object ID in %{i}\", {i: String(data.data.data.MENO)}));\r\n }\r\n case IdType.SCENARIO:\r\n if (data.data.data.ID_SCENAR) {\r\n return await api.getScenario(data.data.data.ID_SCENAR);\r\n } else {\r\n throw new Error(i18n(\"Missing object ID in %{i}\", {i: String(data.data.data.MENO)}));\r\n }\r\n }\r\n}\r\n\r\nfunction getParentId(data: ResolvedData) {\r\n switch (data.type) {\r\n case IdType.VECTOR:\r\n return data.data.data.ID_SKVEKTOR;\r\n case IdType.GROUP:\r\n return data.data.data.EDA_ID_SKVEKTOR;\r\n case IdType.SCENARIO:\r\n return data.data.data.EDA_ID_SCENAR;\r\n }\r\n}"]}
|
|
@@ -4,7 +4,6 @@ import i18n from "d2core/i18n/i18n";
|
|
|
4
4
|
import { CalculatedVectors, SpecifiedVectors } from "./export";
|
|
5
5
|
import { VectorTypeCheckbox } from "./vectorTypeCheckbox";
|
|
6
6
|
export const VectorTypeSelection = ({ vectorTypes, onSelectAllSpecified, onSelectAllCalculated }) => {
|
|
7
|
-
console.log(vectorTypes);
|
|
8
7
|
const allSpecifiedSelected = SpecifiedVectors.every(vector => vectorTypes[vector]);
|
|
9
8
|
const noneSpecifiedSelected = !SpecifiedVectors.some(vector => vectorTypes[vector]);
|
|
10
9
|
const allCalculatedSelected = CalculatedVectors.every(vector => vectorTypes[vector]);
|
package/coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectorTypeSelection.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAC,MAAM,MAAM,CAAC;AACvD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AASxD,MAAM,CAAC,MAAM,mBAAmB,GAAc,CAAC,EAAC,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAC,EAAE,EAAE;IACzG,
|
|
1
|
+
{"version":3,"file":"vectorTypeSelection.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAC,MAAM,MAAM,CAAC;AACvD,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AASxD,MAAM,CAAC,MAAM,mBAAmB,GAAc,CAAC,EAAC,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAC,EAAE,EAAE;IACzG,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,MAAM,qBAAqB,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpF,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACrF,MAAM,sBAAsB,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtF,OAAO,CACH,oBAAC,IAAI,IAAC,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC;QACtC,oBAAC,GAAG,IAAC,MAAM,EAAE,CAAC;YACV,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE;gBACT,oBAAC,QAAQ,IACL,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,CAAC,qBAAqB,IAAI,CAAC,oBAAoB,EAC9D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAEpD,IAAI,CAAC,WAAW,CAAC,CACX,CACT;YACN,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE;gBACT,oBAAC,QAAQ,IACL,OAAO,EAAE,qBAAqB,EAC9B,aAAa,EAAE,CAAC,sBAAsB,IAAI,CAAC,qBAAqB,EAChE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAErD,IAAI,CAAC,YAAY,CAAC,CACZ,CACT,CACJ;QACN,oBAAC,OAAO,OAAG;QACV,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CACjG,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACtB,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE,IAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,oBAAC,kBAAkB,IAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAO;YACpH,oBAAC,GAAG,IAAC,IAAI,EAAE,EAAE,IAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,oBAAC,kBAAkB,IAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAO,CACpH,CACT,CAAC,CACC,CACV,CAAC;AACN,CAAC,CAAA","sourcesContent":["import React, {FC} from \"react\";\r\nimport {Card, Checkbox, Col, Divider, Row} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {CalculatedVectors, SpecifiedVectors} from \"./export\";\r\nimport {VectorTypeCheckbox} from \"./vectorTypeCheckbox\";\r\nimport {EdaVectorType} from \"../../constants/edaTypes\";\r\n\r\ninterface Props {\r\n vectorTypes: Record<EdaVectorType, boolean>\r\n onSelectAllSpecified: (selected: boolean) => void\r\n onSelectAllCalculated: (selected: boolean) => void\r\n}\r\n\r\nexport const VectorTypeSelection: FC<Props> = ({vectorTypes, onSelectAllSpecified, onSelectAllCalculated}) => {\r\n const allSpecifiedSelected = SpecifiedVectors.every(vector => vectorTypes[vector]);\r\n const noneSpecifiedSelected = !SpecifiedVectors.some(vector => vectorTypes[vector]);\r\n\r\n const allCalculatedSelected = CalculatedVectors.every(vector => vectorTypes[vector]);\r\n const noneCalculatedSelected = !CalculatedVectors.some(vector => vectorTypes[vector]);\r\n\r\n return (\r\n <Card title={i18n(\"Select by vector type\")}>\r\n <Row gutter={8}>\r\n <Col span={12}>\r\n <Checkbox\r\n checked={allSpecifiedSelected}\r\n indeterminate={!noneSpecifiedSelected && !allSpecifiedSelected}\r\n onChange={e => onSelectAllSpecified(e.target.checked)}\r\n >\r\n {i18n(\"Specified\")}\r\n </Checkbox>\r\n </Col>\r\n <Col span={12}>\r\n <Checkbox\r\n checked={allCalculatedSelected}\r\n indeterminate={!noneCalculatedSelected && !allCalculatedSelected}\r\n onChange={e => onSelectAllCalculated(e.target.checked)}\r\n >\r\n {i18n(\"Calculated\")}\r\n </Checkbox>\r\n </Col>\r\n </Row>\r\n <Divider />\r\n {Array.from({length: Math.max(SpecifiedVectors.length, CalculatedVectors.length)}).map((_, index) => (\r\n <Row key={index} gutter={8}>\r\n <Col span={12}>{SpecifiedVectors[index] !== undefined && <VectorTypeCheckbox type={SpecifiedVectors[index]}/>}</Col>\r\n <Col span={12}>{CalculatedVectors[index] !== undefined && <VectorTypeCheckbox type={CalculatedVectors[index]}/>}</Col>\r\n </Row>\r\n ))}\r\n </Card>\r\n );\r\n}"]}
|