d2aura 26.0.13 → 26.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/api/eda/edaManagerApi.d.ts +50 -15
  2. package/api/eda/edaManagerApi.js +80 -29
  3. package/api/eda/edaManagerApi.js.map +1 -1
  4. package/api/eda/generated/events.d.ts +109 -60
  5. package/api/eda/generated/events.js +182 -88
  6. package/api/eda/generated/events.js.map +1 -1
  7. package/api/eda/generated/structures.d.ts +78 -14
  8. package/api/eda/generated/structures.js.map +1 -1
  9. package/core/i18n/d2aura.sk.json +30 -2
  10. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.d.ts +1 -1
  11. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js +2 -2
  12. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js.map +1 -1
  13. package/coreui/components/edaManagerComponent/components/edaChartViewer.d.ts +14 -0
  14. package/coreui/components/edaManagerComponent/components/edaChartViewer.js +370 -0
  15. package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -0
  16. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.d.ts +4 -8
  17. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +18 -75
  18. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  19. package/coreui/components/edaManagerComponent/components/edaDetailPanel.d.ts +5 -14
  20. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +80 -19
  21. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
  22. package/coreui/components/edaManagerComponent/components/edaGraphPanel.d.ts +2 -7
  23. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +15 -380
  24. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  25. package/coreui/components/edaManagerComponent/components/edaGroupDetailPanel.d.ts +3 -14
  26. package/coreui/components/edaManagerComponent/components/edaGroupDetailPanel.js +54 -67
  27. package/coreui/components/edaManagerComponent/components/edaGroupDetailPanel.js.map +1 -1
  28. package/coreui/components/edaManagerComponent/components/edaLoadingOverlay.d.ts +7 -0
  29. package/coreui/components/edaManagerComponent/components/edaLoadingOverlay.js +35 -0
  30. package/coreui/components/edaManagerComponent/components/edaLoadingOverlay.js.map +1 -0
  31. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.d.ts +2 -16
  32. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +47 -50
  33. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
  34. package/coreui/components/edaManagerComponent/components/edaScenarioDetailPanel.d.ts +3 -14
  35. package/coreui/components/edaManagerComponent/components/edaScenarioDetailPanel.js +67 -81
  36. package/coreui/components/edaManagerComponent/components/edaScenarioDetailPanel.js.map +1 -1
  37. package/coreui/components/edaManagerComponent/components/edaTableEditorDialog.d.ts +12 -0
  38. package/coreui/components/edaManagerComponent/components/edaTableEditorDialog.js +268 -0
  39. package/coreui/components/edaManagerComponent/components/edaTableEditorDialog.js.map +1 -0
  40. package/coreui/components/edaManagerComponent/components/edaTablePanel.d.ts +2 -6
  41. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +119 -62
  42. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  43. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.d.ts +2 -13
  44. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +57 -88
  45. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
  46. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +4 -51
  47. package/coreui/components/edaManagerComponent/components/edaTreeView.js +299 -259
  48. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  49. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.d.ts +3 -21
  50. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +160 -179
  51. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
  52. package/coreui/components/edaManagerComponent/components/exportDialog.d.ts +18 -0
  53. package/coreui/components/edaManagerComponent/components/exportDialog.js +157 -0
  54. package/coreui/components/edaManagerComponent/components/exportDialog.js.map +1 -0
  55. package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +10 -11
  56. package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
  57. package/coreui/components/edaManagerComponent/context/edaConfigContext.d.ts +26 -0
  58. package/coreui/components/edaManagerComponent/context/edaConfigContext.js +20 -0
  59. package/coreui/components/edaManagerComponent/context/edaConfigContext.js.map +1 -0
  60. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +9 -16
  61. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -1
  62. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.d.ts +0 -1
  63. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +71 -66
  64. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
  65. package/coreui/components/edaManagerComponent/context/loadingContext.d.ts +1 -1
  66. package/coreui/components/edaManagerComponent/context/loadingContext.js.map +1 -1
  67. package/coreui/components/edaManagerComponent/context/{sharedSampleRange.d.ts → sharedSampleRangeContext.d.ts} +6 -3
  68. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js +3 -0
  69. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js.map +1 -0
  70. package/coreui/components/edaManagerComponent/context/useEdaActions.d.ts +7 -0
  71. package/coreui/components/edaManagerComponent/context/useEdaActions.js +22 -0
  72. package/coreui/components/edaManagerComponent/context/useEdaActions.js.map +1 -0
  73. package/coreui/components/edaManagerComponent/edaDetail.d.ts +7 -26
  74. package/coreui/components/edaManagerComponent/edaDetail.js +124 -106
  75. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  76. package/coreui/components/edaManagerComponent/edaManager.d.ts +4 -11
  77. package/coreui/components/edaManagerComponent/edaManager.js +29 -22
  78. package/coreui/components/edaManagerComponent/edaManager.js.map +1 -1
  79. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +4 -12
  80. package/coreui/components/edaManagerComponent/edaNavigator.js +36 -41
  81. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  82. package/coreui/components/edaManagerComponent/edaSelect.d.ts +2 -3
  83. package/coreui/components/edaManagerComponent/edaSelect.js +22 -44
  84. package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
  85. package/coreui/components/edaManagerComponent/utils/export.d.ts +9 -0
  86. package/coreui/components/edaManagerComponent/utils/export.js +573 -0
  87. package/coreui/components/edaManagerComponent/utils/export.js.map +1 -0
  88. package/coreui/components/edaManagerComponent/utils/utils.d.ts +6 -12
  89. package/coreui/components/edaManagerComponent/utils/utils.js +26 -15
  90. package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
  91. package/d2configuration/edaManager/DB.EM_EDA_DescriptiveVector.xml +65 -0
  92. package/d2configuration/edaManager/DB.EM_EDA_FunctionPrescription.xml +65 -0
  93. package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +67 -1
  94. package/d2configuration/edaManager/E.EM_DETAIL_SQL.xml +85 -0
  95. package/d2configuration/edaManager/E.EM_DETAIL_UNIT.xml +123 -2
  96. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +1 -1
  97. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +1 -1
  98. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +20 -6
  99. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +95 -17
  100. package/d2configuration/edaManager/SD.EM_EDA_DescriptiveVector.xml +179 -0
  101. package/d2configuration/edaManager/SD.EM_EDA_FunctionPrescription.xml +91 -0
  102. package/d2configuration/edaManager/SD.EM_EDA_InsertValuesToVector_V1.xml +227 -0
  103. package/d2configuration/edaManager/SD.EM_EDA_PairVector.xml +454 -0
  104. package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_V1.xml +13 -3
  105. package/d2configuration/edaManager/SD.EM_EDA_VectorStats.xml +91 -0
  106. package/d2configuration/edaManager/SD.EM_Filter_Condition.xml +1 -1
  107. package/package.json +5 -3
  108. package/coreui/components/edaManagerComponent/components/edaBasePanel.d.ts +0 -16
  109. package/coreui/components/edaManagerComponent/components/edaBasePanel.js +0 -85
  110. package/coreui/components/edaManagerComponent/components/edaBasePanel.js.map +0 -1
  111. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js +0 -13
  112. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js.map +0 -1
  113. package/d2configuration/edaManager/EDA_CancelSession.xml +0 -54
  114. package/d2configuration/edaManager/EDA_GetSessionId.xml +0 -54
  115. package/d2configuration/edaManager/EDA_ReadValuesFromVektorRec.xml +0 -54
  116. package/d2configuration/edaManager/EDA_StatVectorRec.xml +0 -56
@@ -1,10 +1,16 @@
1
1
  import React, { useCallback, useContext, useRef, useState } from "react";
2
2
  import { EdaVectorDataContext } from "./edaVectorDataContext";
3
- import { SharedSampleRangeContext } from "./sharedSampleRange";
3
+ import { SharedSampleRangeContext } from "./sharedSampleRangeContext";
4
4
  import { LoadingContext } from "./loadingContext";
5
- import { message } from "antd";
5
+ import { App } from "antd";
6
6
  import i18n from "d2core/i18n/i18n";
7
- export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
7
+ import { useEdaConfig } from "./edaConfigContext";
8
+ export const EdaVectorDataProvider = ({ api, children }) => {
9
+ const { detail } = useEdaConfig();
10
+ const { message } = App.useApp();
11
+ const range = useContext(SharedSampleRangeContext);
12
+ const lastRequestId = useRef(0);
13
+ const loadingRef = useRef(false);
8
14
  const [dataState, setDataState] = useState({
9
15
  data: {},
10
16
  vectors: [],
@@ -14,34 +20,28 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
14
20
  const [loadingState, setLoadingState] = useState({
15
21
  loading: false,
16
22
  loadingPercentage: 0,
17
- loadingVector: "",
23
+ loadingItem: "",
18
24
  loadingCount: 0,
19
25
  });
20
- const range = useContext(SharedSampleRangeContext);
21
- const lastRequestId = useRef(0);
22
- const loadingRef = useRef(false);
23
26
  const safeReadVectorValues = async (id, name, from, to, step) => {
24
27
  try {
25
28
  return await api.readVectorValues(id, from, to, step);
26
29
  }
27
30
  catch (e) {
28
- message.warning({
29
- type: "warning",
30
- content: React.createElement("span", null, i18n("Failed to load vector %{n} with error: '%{e}'", { n: name, e: e?.value }))
31
- });
31
+ message.warning(React.createElement("span", null, i18n("Failed to load vector %{n} with error: '%{e}'", { n: name, e: e?.value })));
32
32
  console.error(e);
33
33
  return {
34
34
  data: []
35
35
  };
36
36
  }
37
37
  };
38
- const loadAllData = useCallback(async (type, data) => {
38
+ const loadAllData = useCallback(async (data) => {
39
39
  if (!range) {
40
40
  return;
41
41
  }
42
42
  const requestId = ++lastRequestId.current;
43
43
  loadingRef.current = true;
44
- setDataState((s) => ({ ...s, loadedType: type, loadedData: data, loadedRange: range }));
44
+ setDataState((s) => ({ ...s, vectors: [], loadedData: data, loadedRange: range }));
45
45
  setLoadingState((s) => ({ ...s, loading: true, loadingPercentage: 0 }));
46
46
  try {
47
47
  const { btTotal, etTotal, sampling, vectorPage } = range;
@@ -49,20 +49,20 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
49
49
  const columns = [];
50
50
  const visible = new Set();
51
51
  let { btWindow, etWindow } = range;
52
- if (!showTimeWindow) {
52
+ if (!detail?.showTimeWindow) {
53
53
  btWindow = btTotal;
54
54
  etWindow = etTotal;
55
55
  }
56
- switch (type) {
56
+ switch (data.type) {
57
57
  case 1:
58
58
  case 2: {
59
59
  let vectors;
60
60
  try {
61
- if (type === 1) {
62
- vectors = await api.getGroupVectors(data.data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);
61
+ if (data.type === 1) {
62
+ vectors = await api.getGroupVectors(data.data.data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);
63
63
  }
64
64
  else {
65
- vectors = await api.getScenarioVectors(data.data.ID_SCENAR, (vectorPage - 1) * api.pageSize, undefined, true);
65
+ vectors = await api.getScenarioVectors(data.data.data.ID_SCENAR, (vectorPage - 1) * api.pageSize, undefined, true);
66
66
  }
67
67
  }
68
68
  catch (error) {
@@ -70,6 +70,9 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
70
70
  vectors = { items: [], leftCount: 0 };
71
71
  }
72
72
  setLoadingState((s) => ({ ...s, loadingCount: vectors.items.length }));
73
+ if (range.vectorPage === 1) {
74
+ range.updateTotalCount(vectors.items.length + vectors.leftCount);
75
+ }
73
76
  if (requestId !== lastRequestId.current) {
74
77
  return;
75
78
  }
@@ -79,24 +82,25 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
79
82
  }
80
83
  for (let i = 0; i < vectors.items.length; i++) {
81
84
  const vector = vectors.items[i];
82
- setLoadingState((s) => ({ ...s, loadingVector: vector.DisplayName ?? "" }));
85
+ setLoadingState((s) => ({ ...s, loadingItem: vector.DisplayName ?? "" }));
86
+ const valuesData = await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling);
87
+ if (!loadingRef.current) {
88
+ break;
89
+ }
83
90
  result[vector.ID] = {
84
- data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),
91
+ data: valuesData,
85
92
  from: btWindow,
86
93
  to: etWindow,
87
94
  sampling: sampling,
88
95
  };
89
- if (!loadingRef.current) {
90
- break;
91
- }
92
96
  setLoadingState((s) => ({ ...s, loadingPercentage: (i + 1) / vectors.items.length * 100 }));
93
97
  }
94
98
  break;
95
99
  }
96
100
  case 0: {
97
- const column = data.data;
98
- const id = data.data.ID_VEKTOR;
99
- setLoadingState((s) => ({ ...s, loadingCount: 1, loadingVector: column.ZOBRAZ_MENO }));
101
+ const column = data.data.data;
102
+ const id = data.data.data.ID_VEKTOR;
103
+ setLoadingState((s) => ({ ...s, loadingCount: 1, loadingItem: column.ZOBRAZ_MENO }));
100
104
  result[id] = {
101
105
  data: await safeReadVectorValues(id, column.ZOBRAZ_MENO, btWindow, etWindow, sampling),
102
106
  from: btWindow,
@@ -134,21 +138,26 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
134
138
  }
135
139
  loadingRef.current = false;
136
140
  }
137
- }, [api, showTimeWindow, range]);
138
- const loadSpecificVectors = useCallback(async (vectors) => {
141
+ }, [api, detail?.showTimeWindow, range]);
142
+ const loadSpecificVectors = useCallback(async (vectors, forceUpdate) => {
139
143
  if (!range) {
140
144
  return;
141
145
  }
142
146
  const { btTotal, etTotal, sampling } = range;
143
147
  let { btWindow, etWindow } = range;
144
- if (!showTimeWindow) {
148
+ if (!detail?.showTimeWindow) {
145
149
  btWindow = btTotal;
146
150
  etWindow = etTotal;
147
151
  }
148
- vectors = vectors.filter((vector) => {
149
- const loadedVector = dataState.data[vector.ID];
150
- return !loadedVector.from.isSame(btWindow) || !loadedVector.to.isSame(etWindow) || loadedVector.sampling !== sampling;
151
- });
152
+ if (!forceUpdate) {
153
+ vectors = vectors.filter((vector) => {
154
+ const loadedVector = dataState.data[vector.ID];
155
+ if (!loadedVector) {
156
+ return true;
157
+ }
158
+ return !loadedVector.from.isSame(btWindow) || !loadedVector.to.isSame(etWindow) || loadedVector.sampling !== sampling;
159
+ });
160
+ }
152
161
  if (vectors.length === 0) {
153
162
  return;
154
163
  }
@@ -166,7 +175,7 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
166
175
  }
167
176
  for (let i = 0; i < vectors.length; i++) {
168
177
  const vector = vectors[i];
169
- setLoadingState((s) => ({ ...s, loadingVector: vector.DisplayName ?? "" }));
178
+ setLoadingState((s) => ({ ...s, loadingItem: vector.DisplayName ?? "" }));
170
179
  result[vector.ID] = {
171
180
  data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),
172
181
  from: btWindow,
@@ -190,42 +199,44 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
190
199
  loadingRef.current = false;
191
200
  setLoadingState((s) => ({ ...s, loading: false }));
192
201
  }
193
- }, [api, showTimeWindow, range, dataState]);
194
- const cancelLoading = async () => {
202
+ }, [api, detail?.showTimeWindow, range, dataState]);
203
+ const cancelLoading = useCallback(async () => {
195
204
  loadingRef.current = false;
196
205
  await api.cancelSession();
197
- };
198
- const toggleVectorVisibility = async (id, visible) => {
206
+ }, []);
207
+ const toggleVectorVisibility = useCallback(async (id, visible) => {
199
208
  if (!range) {
200
209
  return;
201
210
  }
202
- const state = dataState.data[id];
203
- const visibleSet = new Set(dataState.visible);
204
- const { btTotal, etTotal } = range;
205
- let { btWindow, etWindow } = range;
206
- if (!showTimeWindow) {
207
- btWindow = btTotal;
208
- etWindow = etTotal;
209
- }
210
- const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);
211
- if (visible) {
212
- if (needsLoadData) {
213
- await loadSpecificVectors(dataState.vectors.filter((v) => v.ID === id));
211
+ setDataState((prev) => {
212
+ const state = prev.data[id];
213
+ const visibleSet = new Set(prev.visible);
214
+ const { btTotal, etTotal } = range;
215
+ let { btWindow, etWindow } = range;
216
+ if (!detail?.showTimeWindow) {
217
+ btWindow = btTotal;
218
+ etWindow = etTotal;
214
219
  }
215
- visibleSet.add(id);
216
- }
217
- else {
218
- visibleSet.delete(id);
219
- }
220
- setDataState((s) => ({ ...s, visible: visibleSet }));
221
- };
222
- const setAllVectorVisibility = async (visible) => {
220
+ const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);
221
+ if (visible) {
222
+ if (needsLoadData) {
223
+ loadSpecificVectors(prev.vectors.filter((v) => v.ID === id));
224
+ }
225
+ visibleSet.add(id);
226
+ }
227
+ else {
228
+ visibleSet.delete(id);
229
+ }
230
+ return { ...prev, visible: visibleSet };
231
+ });
232
+ }, [range, detail?.showTimeWindow, loadSpecificVectors]);
233
+ const setAllVectorVisibility = useCallback(async (visible) => {
223
234
  if (!range) {
224
235
  return;
225
236
  }
226
237
  const { btTotal, etTotal } = range;
227
238
  let { btWindow, etWindow } = range;
228
- if (!showTimeWindow) {
239
+ if (!detail?.showTimeWindow) {
229
240
  btWindow = btTotal;
230
241
  etWindow = etTotal;
231
242
  }
@@ -247,10 +258,7 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
247
258
  else {
248
259
  setDataState((s) => ({ ...s, visible: new Set() }));
249
260
  }
250
- };
251
- const isVectorVisible = (id) => dataState.visible.has(id);
252
- const allVectorsVisible = () => dataState.visible.size === dataState.vectors.length;
253
- const noVectorsVisible = () => dataState.visible.size === 0;
261
+ }, [range, dataState.vectors, dataState.data, loadSpecificVectors]);
254
262
  return (React.createElement(EdaVectorDataContext.Provider, { value: {
255
263
  ...dataState,
256
264
  loadAllData,
@@ -258,9 +266,6 @@ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
258
266
  cancelLoading,
259
267
  toggleVectorVisibility,
260
268
  setAllVectorVisibility,
261
- isVectorVisible,
262
- allVectorsVisible,
263
- noVectorsVisible,
264
269
  } },
265
270
  React.createElement(LoadingContext.Provider, { value: loadingState }, children)));
266
271
  };
@@ -1 +1 @@
1
- {"version":3,"file":"edaVectorDataProvider.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/edaVectorDataProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useContext, useRef, useState} from \"react\";\r\nimport EdaManagerApi, {VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {EdaVectorDataContext, EdaVectorDataState, VectorDataState} from \"./edaVectorDataContext\";\r\nimport {SharedSampleRangeContext} from \"./sharedSampleRange\";\r\nimport {GroupData, IdType, ScenarioData, VectorData} from \"../constants/edaTypes\";\r\nimport {SD_EM_Tree_Item} from \"../../../../api/eda/generated/structures\";\r\nimport {LoadingContext, LoadingContextValue} from \"./loadingContext\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {message} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n showTimeWindow?: boolean\r\n children?: React.ReactNode\r\n}\r\n\r\nexport const EdaVectorDataProvider: FC<Props> = ({api, showTimeWindow, children}) => {\r\n const [dataState, setDataState] = useState<EdaVectorDataState>({\r\n data: {},\r\n vectors: [],\r\n visible: new Set<number>(),\r\n initialized: false,\r\n });\r\n const [loadingState, setLoadingState] = useState<LoadingContextValue>({\r\n loading: false,\r\n loadingPercentage: 0,\r\n loadingVector: \"\",\r\n loadingCount: 0,\r\n })\r\n const range = useContext(SharedSampleRangeContext);\r\n const lastRequestId = useRef(0);\r\n const loadingRef = useRef(false);\r\n\r\n const safeReadVectorValues = async (id: number, name: string, from: dayjs.Dayjs, to: dayjs.Dayjs, step: number): Promise<VectorValuesData> => {\r\n try {\r\n return await api.readVectorValues(id, from, to, step);\r\n } catch (e: any) {\r\n message.warning({\r\n type: \"warning\",\r\n content: <span>{i18n(\"Failed to load vector %{n} with error: '%{e}'\", {n: name, e: e?.value})}</span>\r\n });\r\n console.error(e);\r\n return {\r\n data: []\r\n };\r\n }\r\n }\r\n\r\n const loadAllData = useCallback(async (type: IdType, data: VectorData | GroupData | ScenarioData) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const requestId = ++lastRequestId.current;\r\n\r\n loadingRef.current = true;\r\n setDataState((s): EdaVectorDataState => ({...s, loadedType: type, loadedData: data, loadedRange: range}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: true, loadingPercentage: 0}));\r\n\r\n try {\r\n const {btTotal, etTotal, sampling, vectorPage} = range;\r\n const result: { [id: number]: VectorDataState } = {};\r\n const columns: SD_EM_Tree_Item[] = [];\r\n const visible: Set<number> = new Set<number>();\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n switch (type) {\r\n case IdType.GROUP:\r\n case IdType.SCENARIO: {\r\n let vectors: { items: Partial<SD_EM_Tree_Item>[], leftCount: number };\r\n\r\n try {\r\n if (type === IdType.GROUP) {\r\n vectors = await api.getGroupVectors((data as GroupData).data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);\r\n } else {\r\n vectors = await api.getScenarioVectors((data as ScenarioData).data.ID_SCENAR, (vectorPage - 1) * api.pageSize, undefined, true);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n vectors = {items: [], leftCount: 0};\r\n }\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingCount: vectors.items.length}));\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n\r\n for (const vector of vectors.items) {\r\n columns.push(vector as SD_EM_Tree_Item);\r\n visible.add(vector.ID!);\r\n }\r\n\r\n for (let i = 0; i < vectors.items.length; i++) {\r\n const vector = vectors.items[i] as SD_EM_Tree_Item;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingVector: vector.DisplayName ?? \"\"}));\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n }\r\n\r\n if (!loadingRef.current) {\r\n break;\r\n }\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (i + 1) / vectors.items.length * 100}));\r\n }\r\n\r\n break;\r\n }\r\n case IdType.VECTOR: {\r\n const column = (data as VectorData).data;\r\n const id = (data as VectorData).data.ID_VEKTOR;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingCount: 1, loadingVector: column.ZOBRAZ_MENO}));\r\n result[id] = {\r\n data: await safeReadVectorValues(id, column.ZOBRAZ_MENO, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n\r\n visible.add(column.ID_VEKTOR);\r\n columns.push({\r\n ID: column.ID_VEKTOR,\r\n DisplayName: column.ZOBRAZ_MENO,\r\n Name: column.MENO,\r\n ParentID: column.ID_SKVEKTOR,\r\n Path: \"\",\r\n Type: 0,\r\n Units: column.TECH_JEDNOTKY,\r\n RoundingType: column.VIEW_ROUND,\r\n RoundingPlaces: column.VIEW_DEC_PL\r\n });\r\n }\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, data: result, vectors: columns, visible: visible}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 100}));\r\n } catch (e) {\r\n console.error(\"Failed to load all data\", e);\r\n await api.cancelSession();\r\n } finally {\r\n if (requestId === lastRequestId.current) {\r\n setDataState((s): EdaVectorDataState => ({...s, initialized: true}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: false}));\r\n }\r\n\r\n loadingRef.current = false;\r\n }\r\n }, [api, showTimeWindow, range]);\r\n\r\n const loadSpecificVectors = useCallback(async (vectors: SD_EM_Tree_Item[]) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const {btTotal, etTotal, sampling} = range;\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n vectors = vectors.filter((vector) => {\r\n const loadedVector = dataState.data[vector.ID];\r\n return !loadedVector.from.isSame(btWindow) || !loadedVector.to.isSame(etWindow) || loadedVector.sampling !== sampling;\r\n });\r\n\r\n if (vectors.length === 0) {\r\n return;\r\n }\r\n\r\n const requestId = ++lastRequestId.current;\r\n\r\n loadingRef.current = true;\r\n setDataState((s): EdaVectorDataState => ({...s, loadedRange: range}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: true, loadingPercentage: 0}));\r\n\r\n try {\r\n const result: { [id: number]: VectorDataState } = {...dataState.data};\r\n const visible = new Set(dataState.visible);\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: true, loadingPercentage: 0}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingCount: vectors.length}));\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < vectors.length; i++) {\r\n const vector = vectors[i] as SD_EM_Tree_Item;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingVector: vector.DisplayName ?? \"\"}));\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n visible.add(vector.ID);\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (i + 1) / vectors.length * 100}));\r\n\r\n if (!loadingRef.current) {\r\n break;\r\n }\r\n }\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 100}));\r\n setDataState((s): EdaVectorDataState => ({...s, data: result, visible}));\r\n } catch (e) {\r\n console.log(\"Failed to load specific vectors\", e);\r\n await api.cancelSession();\r\n } finally {\r\n loadingRef.current = false;\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: false}));\r\n }\r\n }, [api, showTimeWindow, range, dataState]);\r\n\r\n const cancelLoading = async () => {\r\n loadingRef.current = false;\r\n await api.cancelSession();\r\n }\r\n\r\n const toggleVectorVisibility = async (id: number, visible: boolean) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const state = dataState.data[id];\r\n const visibleSet = new Set<number>(dataState.visible);\r\n const {btTotal, etTotal} = range;\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);\r\n\r\n if (visible) {\r\n if (needsLoadData) {\r\n await loadSpecificVectors(dataState.vectors.filter((v) => v.ID === id));\r\n }\r\n\r\n visibleSet.add(id);\r\n } else {\r\n visibleSet.delete(id);\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, visible: visibleSet}));\r\n };\r\n\r\n const setAllVectorVisibility = async (visible: boolean) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const {btTotal, etTotal} = range;\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n if (visible) {\r\n const toLoad: SD_EM_Tree_Item[] = [];\r\n const visibleSet = new Set<number>(dataState.visible);\r\n\r\n for (let vector of dataState.vectors) {\r\n const id = vector.ID;\r\n const state = dataState.data[id];\r\n const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);\r\n\r\n if (needsLoadData) {\r\n toLoad.push(vector);\r\n }\r\n\r\n visibleSet.add(id);\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, visible: visibleSet}));\r\n await loadSpecificVectors(toLoad);\r\n } else {\r\n setDataState((s): EdaVectorDataState => ({...s, visible: new Set<number>()}));\r\n }\r\n }\r\n\r\n const isVectorVisible = (id: number) => dataState.visible.has(id);\r\n const allVectorsVisible = () => dataState.visible.size === dataState.vectors.length;\r\n const noVectorsVisible = () => dataState.visible.size === 0;\r\n\r\n return (\r\n <EdaVectorDataContext.Provider\r\n value={{\r\n ...dataState,\r\n loadAllData,\r\n loadSpecificVectors,\r\n cancelLoading,\r\n toggleVectorVisibility,\r\n setAllVectorVisibility,\r\n isVectorVisible,\r\n allVectorsVisible,\r\n noVectorsVisible,\r\n }}\r\n >\r\n <LoadingContext.Provider value={loadingState}>\r\n {children}\r\n </LoadingContext.Provider>\r\n </EdaVectorDataContext.Provider>\r\n )\r\n}\r\n"]}
1
+ {"version":3,"file":"edaVectorDataProvider.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/edaVectorDataProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useContext, useRef, useState} from \"react\";\r\nimport EdaManagerApi, {TreeItem, TreeItemsResult, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {EdaVectorDataContext, EdaVectorDataState, VectorDataState} from \"./edaVectorDataContext\";\r\nimport {SharedSampleRangeContext} from \"./sharedSampleRangeContext\";\r\nimport {IdType, TypedData} from \"../constants/edaTypes\";\r\nimport {LoadingContext, LoadingContextValue} from \"./loadingContext\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {App} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {useEdaConfig} from \"./edaConfigContext\";\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n children?: React.ReactNode\r\n}\r\n\r\nexport const EdaVectorDataProvider: FC<Props> = ({api, children}) => {\r\n const {detail} = useEdaConfig();\r\n const {message} = App.useApp();\r\n const range = useContext(SharedSampleRangeContext);\r\n\r\n const lastRequestId = useRef(0);\r\n const loadingRef = useRef(false);\r\n\r\n const [dataState, setDataState] = useState<EdaVectorDataState>({\r\n data: {},\r\n vectors: [],\r\n visible: new Set<number>(),\r\n initialized: false,\r\n });\r\n\r\n const [loadingState, setLoadingState] = useState<LoadingContextValue>({\r\n loading: false,\r\n loadingPercentage: 0,\r\n loadingItem: \"\",\r\n loadingCount: 0,\r\n });\r\n\r\n const safeReadVectorValues = async (id: number, name: string, from: dayjs.Dayjs, to: dayjs.Dayjs, step: number): Promise<VectorValuesData> => {\r\n try {\r\n return await api.readVectorValues(id, from, to, step);\r\n } catch (e: any) {\r\n message.warning(<span>{i18n(\"Failed to load vector %{n} with error: '%{e}'\", {n: name, e: e?.value})}</span>);\r\n console.error(e);\r\n return {\r\n data: []\r\n };\r\n }\r\n }\r\n\r\n const loadAllData = useCallback(async (data: TypedData) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const requestId = ++lastRequestId.current;\r\n\r\n loadingRef.current = true;\r\n setDataState((s): EdaVectorDataState => ({...s, vectors: [], loadedData: data, loadedRange: range}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: true, loadingPercentage: 0}));\r\n\r\n try {\r\n const {btTotal, etTotal, sampling, vectorPage} = range;\r\n const result: { [id: number]: VectorDataState } = {};\r\n const columns: TreeItem[] = [];\r\n const visible: Set<number> = new Set<number>();\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!detail?.showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n switch (data.type) {\r\n case IdType.GROUP:\r\n case IdType.SCENARIO: {\r\n let vectors: TreeItemsResult;\r\n\r\n try {\r\n if (data.type === IdType.GROUP) {\r\n vectors = await api.getGroupVectors(data.data.data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);\r\n } else {\r\n vectors = await api.getScenarioVectors(data.data.data.ID_SCENAR, (vectorPage - 1) * api.pageSize, undefined, true);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n vectors = {items: [], leftCount: 0};\r\n }\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingCount: vectors.items.length}));\r\n\r\n if (range.vectorPage === 1) {\r\n range.updateTotalCount(vectors.items.length + vectors.leftCount);\r\n }\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n\r\n for (const vector of vectors.items) {\r\n columns.push(vector);\r\n visible.add(vector.ID!);\r\n }\r\n\r\n for (let i = 0; i < vectors.items.length; i++) {\r\n const vector = vectors.items[i];\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingItem: vector.DisplayName ?? \"\"}));\r\n\r\n const valuesData: VectorValuesData = await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling);\r\n\r\n if (!loadingRef.current) {\r\n break;\r\n }\r\n\r\n result[vector.ID] = {\r\n data: valuesData,\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n }\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (i + 1) / vectors.items.length * 100}));\r\n }\r\n\r\n break;\r\n }\r\n case IdType.VECTOR: {\r\n const column = data.data.data;\r\n const id = data.data.data.ID_VEKTOR;\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingCount: 1, loadingItem: column.ZOBRAZ_MENO}));\r\n result[id] = {\r\n data: await safeReadVectorValues(id, column.ZOBRAZ_MENO, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n\r\n visible.add(column.ID_VEKTOR);\r\n columns.push({\r\n ID: column.ID_VEKTOR,\r\n DisplayName: column.ZOBRAZ_MENO,\r\n Name: column.MENO,\r\n ParentID: column.ID_SKVEKTOR,\r\n Path: \"\",\r\n Type: 0,\r\n Units: column.TECH_JEDNOTKY,\r\n RoundingType: column.VIEW_ROUND,\r\n RoundingPlaces: column.VIEW_DEC_PL\r\n });\r\n }\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, data: result, vectors: columns, visible: visible}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 100}));\r\n } catch (e) {\r\n console.error(\"Failed to load all data\", e);\r\n await api.cancelSession();\r\n } finally {\r\n if (requestId === lastRequestId.current) {\r\n setDataState((s): EdaVectorDataState => ({...s, initialized: true}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: false}));\r\n }\r\n\r\n loadingRef.current = false;\r\n }\r\n }, [api, detail?.showTimeWindow, range]);\r\n\r\n const loadSpecificVectors = useCallback(async (vectors: TreeItem[], forceUpdate?: boolean) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const {btTotal, etTotal, sampling} = range;\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!detail?.showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n if (!forceUpdate) {\r\n vectors = vectors.filter((vector) => {\r\n const loadedVector = dataState.data[vector.ID];\r\n\r\n if (!loadedVector) {\r\n return true;\r\n }\r\n\r\n return !loadedVector.from.isSame(btWindow) || !loadedVector.to.isSame(etWindow) || loadedVector.sampling !== sampling;\r\n });\r\n }\r\n\r\n if (vectors.length === 0) {\r\n return;\r\n }\r\n\r\n const requestId = ++lastRequestId.current;\r\n\r\n loadingRef.current = true;\r\n setDataState((s): EdaVectorDataState => ({...s, loadedRange: range}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: true, loadingPercentage: 0}));\r\n\r\n try {\r\n const result: { [id: number]: VectorDataState } = {...dataState.data};\r\n const visible = new Set(dataState.visible);\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: true, loadingPercentage: 0}));\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingCount: vectors.length}));\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < vectors.length; i++) {\r\n const vector = vectors[i];\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingItem: vector.DisplayName ?? \"\"}));\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n visible.add(vector.ID);\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: (i + 1) / vectors.length * 100}));\r\n\r\n if (!loadingRef.current) {\r\n break;\r\n }\r\n }\r\n\r\n setLoadingState((s): LoadingContextValue => ({...s, loadingPercentage: 100}));\r\n setDataState((s): EdaVectorDataState => ({...s, data: result, visible}));\r\n } catch (e) {\r\n console.log(\"Failed to load specific vectors\", e);\r\n await api.cancelSession();\r\n } finally {\r\n loadingRef.current = false;\r\n setLoadingState((s): LoadingContextValue => ({...s, loading: false}));\r\n }\r\n }, [api, detail?.showTimeWindow, range, dataState]);\r\n\r\n const cancelLoading = useCallback(async () => {\r\n loadingRef.current = false;\r\n await api.cancelSession();\r\n }, []);\r\n\r\n const toggleVectorVisibility = useCallback(async (id: number, visible: boolean) => {\r\n if (!range) {\r\n return;\r\n }\r\n setDataState((prev) => {\r\n const state = prev.data[id];\r\n const visibleSet = new Set<number>(prev.visible);\r\n const {btTotal, etTotal} = range;\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!detail?.showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);\r\n\r\n if (visible) {\r\n if (needsLoadData) {\r\n loadSpecificVectors(prev.vectors.filter((v) => v.ID === id));\r\n }\r\n\r\n visibleSet.add(id);\r\n } else {\r\n visibleSet.delete(id);\r\n }\r\n\r\n return {...prev, visible: visibleSet};\r\n });\r\n }, [range, detail?.showTimeWindow, loadSpecificVectors]);\r\n\r\n const setAllVectorVisibility = useCallback(async (visible: boolean) => {\r\n if (!range) {\r\n return;\r\n }\r\n\r\n const {btTotal, etTotal} = range;\r\n let {btWindow, etWindow} = range;\r\n\r\n if (!detail?.showTimeWindow) {\r\n btWindow = btTotal;\r\n etWindow = etTotal;\r\n }\r\n\r\n if (visible) {\r\n const toLoad: TreeItem[] = [];\r\n const visibleSet = new Set<number>(dataState.visible);\r\n\r\n for (let vector of dataState.vectors) {\r\n const id = vector.ID;\r\n const state = dataState.data[id];\r\n const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);\r\n\r\n if (needsLoadData) {\r\n toLoad.push(vector);\r\n }\r\n\r\n visibleSet.add(id);\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, visible: visibleSet}));\r\n await loadSpecificVectors(toLoad);\r\n } else {\r\n setDataState((s): EdaVectorDataState => ({...s, visible: new Set<number>()}));\r\n }\r\n }, [range, dataState.vectors, dataState.data, loadSpecificVectors]);\r\n\r\n return (\r\n <EdaVectorDataContext.Provider\r\n value={{\r\n ...dataState,\r\n loadAllData,\r\n loadSpecificVectors,\r\n cancelLoading,\r\n toggleVectorVisibility,\r\n setAllVectorVisibility,\r\n }}\r\n >\r\n <LoadingContext.Provider value={loadingState}>\r\n {children}\r\n </LoadingContext.Provider>\r\n </EdaVectorDataContext.Provider>\r\n )\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  export interface LoadingContextValue {
2
2
  loading: boolean;
3
3
  loadingPercentage: number;
4
- loadingVector: string;
4
+ loadingItem: string;
5
5
  loadingCount: number;
6
6
  }
7
7
  export declare const LoadingContext: import("react").Context<LoadingContextValue | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"loadingContext.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/loadingContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AASpC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAkC,SAAS,CAAC,CAAC","sourcesContent":["import {createContext} from \"react\";\r\n\r\nexport interface LoadingContextValue {\r\n loading: boolean\r\n loadingPercentage: number\r\n loadingVector: string\r\n loadingCount: number\r\n}\r\n\r\nexport const LoadingContext = createContext<LoadingContextValue | undefined>(undefined);"]}
1
+ {"version":3,"file":"loadingContext.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/loadingContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AASpC,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAkC,SAAS,CAAC,CAAC","sourcesContent":["import {createContext} from \"react\";\r\n\r\nexport interface LoadingContextValue {\r\n loading: boolean\r\n loadingPercentage: number\r\n loadingItem: string\r\n loadingCount: number\r\n}\r\n\r\nexport const LoadingContext = createContext<LoadingContextValue | undefined>(undefined);"]}
@@ -1,7 +1,7 @@
1
1
  import dayjs from "d2core/dayjs";
2
2
  import { EdaSamplingType, StepType } from "../constants/edaTypes";
3
3
  import React from "react";
4
- export interface SharedSampleRange {
4
+ export interface SharedSampleRangeState {
5
5
  btTotal: dayjs.Dayjs;
6
6
  etTotal: dayjs.Dayjs;
7
7
  btWindow: dayjs.Dayjs;
@@ -9,8 +9,11 @@ export interface SharedSampleRange {
9
9
  sampling: EdaSamplingType;
10
10
  step: StepType;
11
11
  vectorPage: number;
12
+ totalCount: number;
13
+ }
14
+ export interface SharedSampleRangeContext extends SharedSampleRangeState {
12
15
  updateValues: (bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType, vectorPage: number) => void;
13
16
  updateTimeWindow: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: StepType) => void;
17
+ updateTotalCount: (totalCount: number) => void;
14
18
  }
15
- export declare function isSame(a?: SharedSampleRange, b?: SharedSampleRange): boolean;
16
- export declare const SharedSampleRangeContext: React.Context<SharedSampleRange | undefined>;
19
+ export declare const SharedSampleRangeContext: React.Context<SharedSampleRangeContext | undefined>;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export const SharedSampleRangeContext = React.createContext(undefined);
3
+ //# sourceMappingURL=sharedSampleRangeContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedSampleRangeContext.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/sharedSampleRangeContext.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAAuC,SAAS,CAAC,CAAC","sourcesContent":["import dayjs from \"d2core/dayjs\";\r\nimport {EdaSamplingType, StepType} from \"../constants/edaTypes\";\r\nimport React from \"react\";\r\n\r\nexport interface SharedSampleRangeState {\r\n btTotal: dayjs.Dayjs\r\n etTotal: dayjs.Dayjs\r\n btWindow: dayjs.Dayjs\r\n etWindow: dayjs.Dayjs\r\n sampling: EdaSamplingType\r\n step: StepType\r\n vectorPage: number\r\n totalCount: number\r\n}\r\n\r\nexport interface SharedSampleRangeContext extends SharedSampleRangeState {\r\n updateValues: (bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType, vectorPage: number) => void\r\n updateTimeWindow: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: StepType) => void\r\n updateTotalCount: (totalCount: number) => void\r\n}\r\n\r\nexport const SharedSampleRangeContext = React.createContext<SharedSampleRangeContext | undefined>(undefined);"]}
@@ -0,0 +1,7 @@
1
+ import { TypedData } from "../constants/edaTypes";
2
+ import EdaManagerApi from "../../../../api/eda/edaManagerApi";
3
+ import React from "react";
4
+ export declare const useEdaActions: (api: EdaManagerApi) => {
5
+ triggerExport: (data: TypedData) => void;
6
+ renderActionDialogs: () => React.JSX.Element | null;
7
+ };
@@ -0,0 +1,22 @@
1
+ import React, { useCallback, useState } from "react";
2
+ import { ExportDialog } from "../components/exportDialog";
3
+ export const useEdaActions = (api) => {
4
+ const [exportTarget, setExportTarget] = useState();
5
+ const [exportOpen, setExportOpen] = useState(false);
6
+ const triggerExport = useCallback((data) => {
7
+ setExportTarget({ data });
8
+ setExportOpen(true);
9
+ }, []);
10
+ const renderActionDialogs = () => {
11
+ if (!exportTarget) {
12
+ return null;
13
+ }
14
+ return (React.createElement(React.Fragment, null,
15
+ React.createElement(ExportDialog, { api: api, open: exportOpen, data: exportTarget.data, onCancel: () => setExportOpen(false), onOk: () => setExportOpen(false) })));
16
+ };
17
+ return {
18
+ triggerExport,
19
+ renderActionDialogs,
20
+ };
21
+ };
22
+ //# sourceMappingURL=useEdaActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEdaActions.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/useEdaActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACnD,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAMxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAE,EAAE;IAChD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAgB,CAAC;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,IAAe,EAAE,EAAE;QAClD,eAAe,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC;QACxB,aAAa,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,CACH;YACI,oBAAC,YAAY,IACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACpC,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAClC,CACH,CACN,CAAA;IACL,CAAC,CAAA;IAED,OAAO;QACH,aAAa;QACb,mBAAmB;KACtB,CAAA;AACL,CAAC,CAAA","sourcesContent":["import {TypedData} from \"../constants/edaTypes\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport React, {useCallback, useState} from \"react\";\r\nimport {ExportDialog} from \"../components/exportDialog\";\r\n\r\ninterface ExportTarget {\r\n data: TypedData\r\n}\r\n\r\nexport const useEdaActions = (api: EdaManagerApi) => {\r\n const [exportTarget, setExportTarget] = useState<ExportTarget>();\r\n const [exportOpen, setExportOpen] = useState(false);\r\n\r\n const triggerExport = useCallback((data: TypedData) => {\r\n setExportTarget({data});\r\n setExportOpen(true);\r\n }, []);\r\n\r\n const renderActionDialogs = () => {\r\n if (!exportTarget) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n <ExportDialog\r\n api={api}\r\n open={exportOpen}\r\n data={exportTarget.data}\r\n onCancel={() => setExportOpen(false)}\r\n onOk={() => setExportOpen(false)}\r\n />\r\n </>\r\n )\r\n }\r\n\r\n return {\r\n triggerExport,\r\n renderActionDialogs,\r\n }\r\n}"]}
@@ -1,12 +1,10 @@
1
- import EdaManagerApi from "../../../api/eda/edaManagerApi";
2
- import React from "react";
3
- import { SD_EM_Tree_Item } from "../../../api/eda/generated/structures";
4
- import { GroupData, IdType, ScenarioData, TypedIndex, VectorData } from "./constants/edaTypes";
5
- import { Tab } from "rc-tabs/lib/interface";
1
+ import React, { FC } from "react";
2
+ import { TypedIndex } from "./constants/edaTypes";
3
+ import EdaManagerApi, { TreeItem } from "../../../api/eda/edaManagerApi";
6
4
  import { SizeType } from "antd/lib/config-provider/SizeContext";
7
- import { SharedSampleRange } from "./context/sharedSampleRange";
8
5
  import { Variant } from "antd/es/config-provider";
9
- export type ItemType = SD_EM_Tree_Item[] | TypedIndex;
6
+ import { EdaConfiguration } from "./context/edaConfigContext";
7
+ export type ItemType = TreeItem[] | TypedIndex;
10
8
  interface Props {
11
9
  api: EdaManagerApi;
12
10
  item?: ItemType;
@@ -14,24 +12,7 @@ interface Props {
14
12
  style?: React.CSSProperties;
15
13
  size?: SizeType;
16
14
  variant?: Variant;
17
- showTimeWindow?: boolean;
18
- showChartLegend?: boolean;
19
- }
20
- interface State {
21
- type?: IdType;
22
- data?: VectorData | GroupData | ScenarioData;
23
- tabs: Tab[];
24
- activeTabKey: string;
25
- context: SharedSampleRange;
26
- }
27
- export declare class EdaDetail extends React.Component<Props, State> {
28
- constructor(props: Readonly<Props>);
29
- componentDidMount(): Promise<void>;
30
- componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<State>): Promise<void>;
31
- render(): React.JSX.Element;
32
- private updateSampleRange;
33
- private updateTimeWindow;
34
- private getTabs;
35
- private setContextState;
15
+ configuration?: EdaConfiguration;
36
16
  }
17
+ export declare const EdaDetail: FC<Props>;
37
18
  export {};