d2aura 26.0.11 → 26.0.13

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 (75) hide show
  1. package/api/eda/edaManagerApi.d.ts +19 -2
  2. package/api/eda/edaManagerApi.js +36 -3
  3. package/api/eda/edaManagerApi.js.map +1 -1
  4. package/api/eda/generated/events.d.ts +86 -28
  5. package/api/eda/generated/events.js +154 -42
  6. package/api/eda/generated/events.js.map +1 -1
  7. package/api/eda/generated/structures.d.ts +21 -0
  8. package/api/eda/generated/structures.js.map +1 -1
  9. package/api/impl/utils/reportError.js +16 -0
  10. package/api/impl/utils/reportError.js.map +1 -1
  11. package/api/webPush/webPushApi.js.map +1 -1
  12. package/api/webPush/webPushUtils.js.map +1 -1
  13. package/core/i18n/d2aura.sk.json +8 -0
  14. package/core/i18n/jsapi.sk.json +4 -0
  15. package/core/i18n/jsapi.ua.json +4 -0
  16. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.d.ts +13 -37
  17. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +114 -211
  18. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  19. package/coreui/components/edaManagerComponent/components/edaDetailPanel.d.ts +2 -0
  20. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +2 -2
  21. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
  22. package/coreui/components/edaManagerComponent/components/edaGraphPanel.d.ts +14 -5
  23. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +338 -326
  24. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  25. package/coreui/components/edaManagerComponent/components/edaTablePanel.d.ts +15 -4
  26. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +139 -64
  27. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  28. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.d.ts +3 -8
  29. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +12 -38
  30. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
  31. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +1 -1
  32. package/coreui/components/edaManagerComponent/components/edaTreeView.js +5 -5
  33. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  34. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.d.ts +8 -2
  35. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +39 -11
  36. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
  37. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +33 -0
  38. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +3 -0
  39. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -0
  40. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.d.ts +9 -0
  41. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +267 -0
  42. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -0
  43. package/coreui/components/edaManagerComponent/context/loadingContext.d.ts +7 -0
  44. package/coreui/components/edaManagerComponent/context/loadingContext.js +3 -0
  45. package/coreui/components/edaManagerComponent/context/loadingContext.js.map +1 -0
  46. package/coreui/components/edaManagerComponent/context/sharedSampleRange.d.ts +1 -2
  47. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js +10 -0
  48. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js.map +1 -1
  49. package/coreui/components/edaManagerComponent/edaDetail.d.ts +4 -12
  50. package/coreui/components/edaManagerComponent/edaDetail.js +53 -88
  51. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  52. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +2 -1
  53. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  54. package/coreui/components/edaManagerComponent/edaSelect.d.ts +13 -7
  55. package/coreui/components/edaManagerComponent/edaSelect.js +211 -7
  56. package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
  57. package/coreui/components/edaManagerComponent/utils/utils.d.ts +17 -0
  58. package/coreui/components/edaManagerComponent/utils/utils.js +57 -0
  59. package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
  60. package/coreui/components/webPush/webPushSwitch.js.map +1 -1
  61. package/coreui/images/logo.svg +9 -9
  62. package/coreui/images/logo_full.svg +11 -11
  63. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +64 -2
  64. package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +51 -13
  65. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +304 -4
  66. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +9 -3
  67. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +89 -3
  68. package/d2configuration/edaManager/EDA_StatVectorRec.xml +56 -0
  69. package/d2configuration/edaManager/SD.EM_EDA_StatVectorRec_V1.xml +125 -0
  70. package/d2configuration/edaManager/SD.EM_Filter_Condition.xml +156 -0
  71. package/d2configuration/edaManager/SD.EM_Tree_Item.xml +34 -1
  72. package/package.json +3 -3
  73. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.d.ts +0 -6
  74. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.js +0 -14
  75. package/coreui/components/edaManagerComponent/context/sharedSampleRangeWrapper.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import { createContext } from "react";
2
+ export const EdaVectorDataContext = createContext(undefined);
3
+ //# sourceMappingURL=edaVectorDataContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edaVectorDataContext.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/edaVectorDataContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAiCpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAwC,SAAS,CAAC,CAAC","sourcesContent":["import {VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {SD_EM_Tree_Item} from \"../../../../api/eda/generated/structures\";\r\nimport {EdaSamplingType, GroupData, IdType, ScenarioData, VectorData} from \"../constants/edaTypes\";\r\nimport {createContext} from \"react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {SharedSampleRange} from \"./sharedSampleRange\";\r\n\r\nexport interface VectorDataState {\r\n data: VectorValuesData\r\n from: dayjs.Dayjs\r\n to: dayjs.Dayjs\r\n sampling: EdaSamplingType\r\n}\r\n\r\nexport interface EdaVectorDataState {\r\n data: {[id: number]: VectorDataState}\r\n vectors: SD_EM_Tree_Item[]\r\n visible: Set<number>\r\n initialized: boolean\r\n\r\n loadedType?: IdType\r\n loadedData?: VectorData | GroupData | ScenarioData\r\n loadedRange?: SharedSampleRange\r\n}\r\n\r\nexport interface EdaVectorDataContextValue extends EdaVectorDataState {\r\n loadAllData: (type: IdType, data: VectorData | GroupData | ScenarioData) => void\r\n loadSpecificVectors: (vectors: SD_EM_Tree_Item[]) => void\r\n cancelLoading: () => void\r\n toggleVectorVisibility: (id: number, visible: boolean) => void\r\n setAllVectorVisibility: (visible: boolean) => void\r\n isVectorVisible: (id: number) => boolean\r\n allVectorsVisible: () => boolean\r\n noVectorsVisible: () => boolean\r\n}\r\n\r\nexport const EdaVectorDataContext = createContext<EdaVectorDataContextValue | undefined>(undefined);"]}
@@ -0,0 +1,9 @@
1
+ import React, { FC } from "react";
2
+ import EdaManagerApi from "../../../../api/eda/edaManagerApi";
3
+ interface Props {
4
+ api: EdaManagerApi;
5
+ showTimeWindow?: boolean;
6
+ children?: React.ReactNode;
7
+ }
8
+ export declare const EdaVectorDataProvider: FC<Props>;
9
+ export {};
@@ -0,0 +1,267 @@
1
+ import React, { useCallback, useContext, useRef, useState } from "react";
2
+ import { EdaVectorDataContext } from "./edaVectorDataContext";
3
+ import { SharedSampleRangeContext } from "./sharedSampleRange";
4
+ import { LoadingContext } from "./loadingContext";
5
+ import { message } from "antd";
6
+ import i18n from "d2core/i18n/i18n";
7
+ export const EdaVectorDataProvider = ({ api, showTimeWindow, children }) => {
8
+ const [dataState, setDataState] = useState({
9
+ data: {},
10
+ vectors: [],
11
+ visible: new Set(),
12
+ initialized: false,
13
+ });
14
+ const [loadingState, setLoadingState] = useState({
15
+ loading: false,
16
+ loadingPercentage: 0,
17
+ loadingVector: "",
18
+ loadingCount: 0,
19
+ });
20
+ const range = useContext(SharedSampleRangeContext);
21
+ const lastRequestId = useRef(0);
22
+ const loadingRef = useRef(false);
23
+ const safeReadVectorValues = async (id, name, from, to, step) => {
24
+ try {
25
+ return await api.readVectorValues(id, from, to, step);
26
+ }
27
+ 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
+ });
32
+ console.error(e);
33
+ return {
34
+ data: []
35
+ };
36
+ }
37
+ };
38
+ const loadAllData = useCallback(async (type, data) => {
39
+ if (!range) {
40
+ return;
41
+ }
42
+ const requestId = ++lastRequestId.current;
43
+ loadingRef.current = true;
44
+ setDataState((s) => ({ ...s, loadedType: type, loadedData: data, loadedRange: range }));
45
+ setLoadingState((s) => ({ ...s, loading: true, loadingPercentage: 0 }));
46
+ try {
47
+ const { btTotal, etTotal, sampling, vectorPage } = range;
48
+ const result = {};
49
+ const columns = [];
50
+ const visible = new Set();
51
+ let { btWindow, etWindow } = range;
52
+ if (!showTimeWindow) {
53
+ btWindow = btTotal;
54
+ etWindow = etTotal;
55
+ }
56
+ switch (type) {
57
+ case 1:
58
+ case 2: {
59
+ let vectors;
60
+ try {
61
+ if (type === 1) {
62
+ vectors = await api.getGroupVectors(data.data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);
63
+ }
64
+ else {
65
+ vectors = await api.getScenarioVectors(data.data.ID_SCENAR, (vectorPage - 1) * api.pageSize, undefined, true);
66
+ }
67
+ }
68
+ catch (error) {
69
+ console.error(error);
70
+ vectors = { items: [], leftCount: 0 };
71
+ }
72
+ setLoadingState((s) => ({ ...s, loadingCount: vectors.items.length }));
73
+ if (requestId !== lastRequestId.current) {
74
+ return;
75
+ }
76
+ for (const vector of vectors.items) {
77
+ columns.push(vector);
78
+ visible.add(vector.ID);
79
+ }
80
+ for (let i = 0; i < vectors.items.length; i++) {
81
+ const vector = vectors.items[i];
82
+ setLoadingState((s) => ({ ...s, loadingVector: vector.DisplayName ?? "" }));
83
+ result[vector.ID] = {
84
+ data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),
85
+ from: btWindow,
86
+ to: etWindow,
87
+ sampling: sampling,
88
+ };
89
+ if (!loadingRef.current) {
90
+ break;
91
+ }
92
+ setLoadingState((s) => ({ ...s, loadingPercentage: (i + 1) / vectors.items.length * 100 }));
93
+ }
94
+ break;
95
+ }
96
+ case 0: {
97
+ const column = data.data;
98
+ const id = data.data.ID_VEKTOR;
99
+ setLoadingState((s) => ({ ...s, loadingCount: 1, loadingVector: column.ZOBRAZ_MENO }));
100
+ result[id] = {
101
+ data: await safeReadVectorValues(id, column.ZOBRAZ_MENO, btWindow, etWindow, sampling),
102
+ from: btWindow,
103
+ to: etWindow,
104
+ sampling: sampling,
105
+ };
106
+ if (requestId !== lastRequestId.current) {
107
+ return;
108
+ }
109
+ visible.add(column.ID_VEKTOR);
110
+ columns.push({
111
+ ID: column.ID_VEKTOR,
112
+ DisplayName: column.ZOBRAZ_MENO,
113
+ Name: column.MENO,
114
+ ParentID: column.ID_SKVEKTOR,
115
+ Path: "",
116
+ Type: 0,
117
+ Units: column.TECH_JEDNOTKY,
118
+ RoundingType: column.VIEW_ROUND,
119
+ RoundingPlaces: column.VIEW_DEC_PL
120
+ });
121
+ }
122
+ }
123
+ setDataState((s) => ({ ...s, data: result, vectors: columns, visible: visible }));
124
+ setLoadingState((s) => ({ ...s, loadingPercentage: 100 }));
125
+ }
126
+ catch (e) {
127
+ console.error("Failed to load all data", e);
128
+ await api.cancelSession();
129
+ }
130
+ finally {
131
+ if (requestId === lastRequestId.current) {
132
+ setDataState((s) => ({ ...s, initialized: true }));
133
+ setLoadingState((s) => ({ ...s, loading: false }));
134
+ }
135
+ loadingRef.current = false;
136
+ }
137
+ }, [api, showTimeWindow, range]);
138
+ const loadSpecificVectors = useCallback(async (vectors) => {
139
+ if (!range) {
140
+ return;
141
+ }
142
+ const { btTotal, etTotal, sampling } = range;
143
+ let { btWindow, etWindow } = range;
144
+ if (!showTimeWindow) {
145
+ btWindow = btTotal;
146
+ etWindow = etTotal;
147
+ }
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 (vectors.length === 0) {
153
+ return;
154
+ }
155
+ const requestId = ++lastRequestId.current;
156
+ loadingRef.current = true;
157
+ setDataState((s) => ({ ...s, loadedRange: range }));
158
+ setLoadingState((s) => ({ ...s, loading: true, loadingPercentage: 0 }));
159
+ try {
160
+ const result = { ...dataState.data };
161
+ const visible = new Set(dataState.visible);
162
+ setLoadingState((s) => ({ ...s, loading: true, loadingPercentage: 0 }));
163
+ setLoadingState((s) => ({ ...s, loadingCount: vectors.length }));
164
+ if (requestId !== lastRequestId.current) {
165
+ return;
166
+ }
167
+ for (let i = 0; i < vectors.length; i++) {
168
+ const vector = vectors[i];
169
+ setLoadingState((s) => ({ ...s, loadingVector: vector.DisplayName ?? "" }));
170
+ result[vector.ID] = {
171
+ data: await safeReadVectorValues(vector.ID, vector.DisplayName, btWindow, etWindow, sampling),
172
+ from: btWindow,
173
+ to: etWindow,
174
+ sampling: sampling,
175
+ };
176
+ visible.add(vector.ID);
177
+ setLoadingState((s) => ({ ...s, loadingPercentage: (i + 1) / vectors.length * 100 }));
178
+ if (!loadingRef.current) {
179
+ break;
180
+ }
181
+ }
182
+ setLoadingState((s) => ({ ...s, loadingPercentage: 100 }));
183
+ setDataState((s) => ({ ...s, data: result, visible }));
184
+ }
185
+ catch (e) {
186
+ console.log("Failed to load specific vectors", e);
187
+ await api.cancelSession();
188
+ }
189
+ finally {
190
+ loadingRef.current = false;
191
+ setLoadingState((s) => ({ ...s, loading: false }));
192
+ }
193
+ }, [api, showTimeWindow, range, dataState]);
194
+ const cancelLoading = async () => {
195
+ loadingRef.current = false;
196
+ await api.cancelSession();
197
+ };
198
+ const toggleVectorVisibility = async (id, visible) => {
199
+ if (!range) {
200
+ return;
201
+ }
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));
214
+ }
215
+ visibleSet.add(id);
216
+ }
217
+ else {
218
+ visibleSet.delete(id);
219
+ }
220
+ setDataState((s) => ({ ...s, visible: visibleSet }));
221
+ };
222
+ const setAllVectorVisibility = async (visible) => {
223
+ if (!range) {
224
+ return;
225
+ }
226
+ const { btTotal, etTotal } = range;
227
+ let { btWindow, etWindow } = range;
228
+ if (!showTimeWindow) {
229
+ btWindow = btTotal;
230
+ etWindow = etTotal;
231
+ }
232
+ if (visible) {
233
+ const toLoad = [];
234
+ const visibleSet = new Set(dataState.visible);
235
+ for (let vector of dataState.vectors) {
236
+ const id = vector.ID;
237
+ const state = dataState.data[id];
238
+ const needsLoadData = !state.from.isSame(btWindow) || !state.to.isSame(etWindow);
239
+ if (needsLoadData) {
240
+ toLoad.push(vector);
241
+ }
242
+ visibleSet.add(id);
243
+ }
244
+ setDataState((s) => ({ ...s, visible: visibleSet }));
245
+ await loadSpecificVectors(toLoad);
246
+ }
247
+ else {
248
+ setDataState((s) => ({ ...s, visible: new Set() }));
249
+ }
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;
254
+ return (React.createElement(EdaVectorDataContext.Provider, { value: {
255
+ ...dataState,
256
+ loadAllData,
257
+ loadSpecificVectors,
258
+ cancelLoading,
259
+ toggleVectorVisibility,
260
+ setAllVectorVisibility,
261
+ isVectorVisible,
262
+ allVectorsVisible,
263
+ noVectorsVisible,
264
+ } },
265
+ React.createElement(LoadingContext.Provider, { value: loadingState }, children)));
266
+ };
267
+ //# sourceMappingURL=edaVectorDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edaVectorDataProvider.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/edaVectorDataProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE3E,OAAO,EAAC,oBAAoB,EAAsC,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAC,cAAc,EAAsB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAC,OAAO,EAAC,MAAM,MAAM,CAAC;AAC7B,OAAO,IAAI,MAAM,kBAAkB,CAAC;AAQpC,MAAM,CAAC,MAAM,qBAAqB,GAAc,CAAC,EAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAC,EAAE,EAAE;IAChF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAqB;QAC3D,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,IAAI,GAAG,EAAU;QAC1B,WAAW,EAAE,KAAK;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAsB;QAClE,OAAO,EAAE,KAAK;QACd,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAClB,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EAAU,EAAE,IAAY,EAAE,IAAiB,EAAE,EAAe,EAAE,IAAY,EAA6B,EAAE;QACzI,IAAI,CAAC;YACD,OAAO,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,OAAO,CAAC,OAAO,CAAC;gBACZ,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kCAAO,IAAI,CAAC,+CAA+C,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAC,CAAC,CAAQ;aACxG,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO;gBACH,IAAI,EAAE,EAAE;aACX,CAAC;QACN,CAAC;IACL,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,IAAY,EAAE,IAA2C,EAAE,EAAE;QAChG,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;QAE1C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QAC1G,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAE3F,IAAI,CAAC;YACD,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAC,GAAG,KAAK,CAAC;YACvD,MAAM,MAAM,GAAsC,EAAE,CAAC;YACrD,MAAM,OAAO,GAAsB,EAAE,CAAC;YACtC,MAAM,OAAO,GAAgB,IAAI,GAAG,EAAU,CAAC;YAC/C,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;YAEjC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,QAAQ,GAAG,OAAO,CAAC;gBACnB,QAAQ,GAAG,OAAO,CAAC;YACvB,CAAC;YAED,QAAQ,IAAI,EAAE,CAAC;gBACX,OAAkB;gBAClB,MAAoB,CAAC,CAAC,CAAC;oBACnB,IAAI,OAAiE,CAAC;oBAEtE,IAAI,CAAC;wBACD,IAAI,IAAI,MAAiB,EAAE,CAAC;4BACxB,OAAO,GAAG,MAAM,GAAG,CAAC,eAAe,CAAE,IAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/G,CAAC;6BAAM,CAAC;4BACJ,OAAO,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAE,IAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;wBACpI,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACrB,OAAO,GAAG,EAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAC,CAAC;oBACxC,CAAC;oBAED,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC;oBAE1F,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;wBACtC,OAAO;oBACX,CAAC;oBAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBACjC,OAAO,CAAC,IAAI,CAAC,MAAyB,CAAC,CAAC;wBACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAG,CAAC,CAAC;oBAC5B,CAAC;oBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAoB,CAAC;wBAEnD,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAC,CAAC,CAAC,CAAC;wBAC/F,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;4BAChB,IAAI,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;4BAC7F,IAAI,EAAE,QAAQ;4BACd,EAAE,EAAE,QAAQ;4BACZ,QAAQ,EAAE,QAAQ;yBACrB,CAAA;wBAED,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;4BACtB,MAAM;wBACV,CAAC;wBAED,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAC,CAAC,CAAC,CAAC;oBACnH,CAAC;oBAED,MAAM;gBACV,CAAC;gBACD,MAAkB,CAAC,CAAC,CAAC;oBACjB,MAAM,MAAM,GAAI,IAAmB,CAAC,IAAI,CAAC;oBACzC,MAAM,EAAE,GAAI,IAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;oBAE/C,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;oBAC1G,MAAM,CAAC,EAAE,CAAC,GAAG;wBACT,IAAI,EAAE,MAAM,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;wBACtF,IAAI,EAAE,QAAQ;wBACd,EAAE,EAAE,QAAQ;wBACZ,QAAQ,EAAE,QAAQ;qBACrB,CAAC;oBAEF,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;wBACtC,OAAO;oBACX,CAAC;oBAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC;wBACT,EAAE,EAAE,MAAM,CAAC,SAAS;wBACpB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,QAAQ,EAAE,MAAM,CAAC,WAAW;wBAC5B,IAAI,EAAE,EAAE;wBACR,IAAI,EAAE,CAAC;wBACP,KAAK,EAAE,MAAM,CAAC,aAAa;wBAC3B,YAAY,EAAE,MAAM,CAAC,UAAU;wBAC/B,cAAc,EAAE,MAAM,CAAC,WAAW;qBACrC,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAED,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC;YACpG,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAC5C,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACP,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;gBACtC,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;gBACrE,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjC,MAAM,mBAAmB,GAAG,WAAW,CAAC,KAAK,EAAE,OAA0B,EAAE,EAAE;QACzE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO;QACX,CAAC;QAED,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;QAC3C,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,QAAQ,GAAG,OAAO,CAAC;YACnB,QAAQ,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC1H,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;QAE1C,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC1B,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QACtE,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAE3F,IAAI,CAAC;YACD,MAAM,MAAM,GAAsC,EAAC,GAAG,SAAS,CAAC,IAAI,EAAC,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAE3C,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAC3F,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC;YAEpF,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;gBACtC,OAAO;YACX,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAoB,CAAC;gBAE7C,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAC,CAAC,CAAC,CAAC;gBAC/F,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;oBAChB,IAAI,EAAE,MAAM,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBAC7F,IAAI,EAAE,QAAQ;oBACd,EAAE,EAAE,QAAQ;oBACZ,QAAQ,EAAE,QAAQ;iBACrB,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvB,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,EAAC,CAAC,CAAC,CAAC;gBAEzG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBACtB,MAAM;gBACV,CAAC;YACL,CAAC;YAED,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;YAC9E,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;YAC3B,eAAe,CAAC,CAAC,CAAC,EAAuB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC7B,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC3B,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAA;IAED,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAAU,EAAE,OAAgB,EAAE,EAAE;QAClE,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;QACjC,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,QAAQ,GAAG,OAAO,CAAC;YACnB,QAAQ,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjF,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC;YAED,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACtD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO;QACX,CAAC;QAED,MAAM,EAAC,OAAO,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;QACjC,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,QAAQ,GAAG,OAAO,CAAC;YACnB,QAAQ,GAAG,OAAO,CAAC;QACvB,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,OAAO,CAAC,CAAC;YAEtD,KAAK,IAAI,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAEjF,IAAI,aAAa,EAAE,CAAC;oBAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxB,CAAC;gBAED,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;YAED,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAC,CAAC,CAAC,CAAC;YACvE,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAU,EAAC,CAAC,CAAC,CAAC;QAClF,CAAC;IACL,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;IACpF,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IAE5D,OAAO,CACH,oBAAC,oBAAoB,CAAC,QAAQ,IAC1B,KAAK,EAAE;YACH,GAAG,SAAS;YACZ,WAAW;YACX,mBAAmB;YACnB,aAAa;YACb,sBAAsB;YACtB,sBAAsB;YACtB,eAAe;YACf,iBAAiB;YACjB,gBAAgB;SACnB;QAED,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IACvC,QAAQ,CACa,CACE,CACnC,CAAA;AACL,CAAC,CAAA","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"]}
@@ -0,0 +1,7 @@
1
+ export interface LoadingContextValue {
2
+ loading: boolean;
3
+ loadingPercentage: number;
4
+ loadingVector: string;
5
+ loadingCount: number;
6
+ }
7
+ export declare const LoadingContext: import("react").Context<LoadingContextValue | undefined>;
@@ -0,0 +1,3 @@
1
+ import { createContext } from "react";
2
+ export const LoadingContext = createContext(undefined);
3
+ //# sourceMappingURL=loadingContext.js.map
@@ -0,0 +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);"]}
@@ -9,9 +9,8 @@ export interface SharedSampleRange {
9
9
  sampling: EdaSamplingType;
10
10
  step: StepType;
11
11
  vectorPage: number;
12
- totalCount: number;
13
12
  updateValues: (bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType, vectorPage: number) => void;
14
13
  updateTimeWindow: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: StepType) => void;
15
- updateTotalCount: (totalCount: number) => void;
16
14
  }
15
+ export declare function isSame(a?: SharedSampleRange, b?: SharedSampleRange): boolean;
17
16
  export declare const SharedSampleRangeContext: React.Context<SharedSampleRange | undefined>;
@@ -1,3 +1,13 @@
1
1
  import React from "react";
2
+ export function isSame(a, b) {
3
+ return !!a && !!b &&
4
+ a.btTotal.isSame(b.btTotal) &&
5
+ a.etTotal.isSame(b.etTotal) &&
6
+ a.btWindow.isSame(b.btWindow) &&
7
+ a.etWindow.isSame(b.etWindow) &&
8
+ a.sampling === b.sampling &&
9
+ a.step === b.step &&
10
+ a.vectorPage === b.vectorPage;
11
+ }
2
12
  export const SharedSampleRangeContext = React.createContext(undefined);
3
13
  //# sourceMappingURL=sharedSampleRange.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sharedSampleRange.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/sharedSampleRange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAiB1B,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAAgC,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 SharedSampleRange {\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 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<SharedSampleRange | undefined>(undefined);"]}
1
+ {"version":3,"file":"sharedSampleRange.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/context/sharedSampleRange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,UAAU,MAAM,CAAC,CAAqB,EAAE,CAAqB;IAC/D,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7B,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QACzB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACjB,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAAgC,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 SharedSampleRange {\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\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}\r\n\r\nexport function isSame(a?: SharedSampleRange, b?: SharedSampleRange): boolean {\r\n return !!a && !!b &&\r\n a.btTotal.isSame(b.btTotal) &&\r\n a.etTotal.isSame(b.etTotal) &&\r\n a.btWindow.isSame(b.btWindow) &&\r\n a.etWindow.isSame(b.etWindow) &&\r\n a.sampling === b.sampling &&\r\n a.step === b.step &&\r\n a.vectorPage === b.vectorPage\r\n}\r\n\r\nexport const SharedSampleRangeContext = React.createContext<SharedSampleRange | undefined>(undefined);"]}
@@ -1,10 +1,10 @@
1
1
  import EdaManagerApi from "../../../api/eda/edaManagerApi";
2
2
  import React from "react";
3
3
  import { SD_EM_Tree_Item } from "../../../api/eda/generated/structures";
4
- import { EdaSamplingType, GroupData, IdType, ScenarioData, StepType, TypedIndex, VectorData } from "./constants/edaTypes";
4
+ import { GroupData, IdType, ScenarioData, TypedIndex, VectorData } from "./constants/edaTypes";
5
5
  import { Tab } from "rc-tabs/lib/interface";
6
6
  import { SizeType } from "antd/lib/config-provider/SizeContext";
7
- import dayjs from "d2core/dayjs";
7
+ import { SharedSampleRange } from "./context/sharedSampleRange";
8
8
  import { Variant } from "antd/es/config-provider";
9
9
  export type ItemType = SD_EM_Tree_Item[] | TypedIndex;
10
10
  interface Props {
@@ -22,14 +22,7 @@ interface State {
22
22
  data?: VectorData | GroupData | ScenarioData;
23
23
  tabs: Tab[];
24
24
  activeTabKey: string;
25
- btTotal: dayjs.Dayjs;
26
- etTotal: dayjs.Dayjs;
27
- btWindow: dayjs.Dayjs;
28
- etWindow: dayjs.Dayjs;
29
- sampling: EdaSamplingType;
30
- vectorPage: number;
31
- totalCount: number;
32
- step: StepType;
25
+ context: SharedSampleRange;
33
26
  }
34
27
  export declare class EdaDetail extends React.Component<Props, State> {
35
28
  constructor(props: Readonly<Props>);
@@ -37,9 +30,8 @@ export declare class EdaDetail extends React.Component<Props, State> {
37
30
  componentDidUpdate(prevProps: Readonly<Props>, prevState: Readonly<State>): Promise<void>;
38
31
  render(): React.JSX.Element;
39
32
  private updateSampleRange;
40
- private updateTotalCount;
41
33
  private updateTimeWindow;
42
34
  private getTabs;
43
- private loadData;
35
+ private setContextState;
44
36
  }
45
37
  export {};
@@ -3,14 +3,15 @@ import { EdaSamplingType, StepType } from "./constants/edaTypes";
3
3
  import i18n from "d2core/i18n/i18n";
4
4
  import { Tabs } from "antd";
5
5
  import { EdaDetailPanel } from "./components/edaDetailPanel";
6
- import EdaTablePanel from "./components/edaTablePanel";
7
6
  import { createStyles } from "antd-style";
8
7
  import WithCss from "d2coreui/components/style/withCss";
9
- import EdaGraphPanel from "./components/edaGraphPanel";
10
8
  import { SharedSampleRangeContext } from "./context/sharedSampleRange";
11
9
  import dayjs from "d2core/dayjs";
12
10
  import { getRange } from "./components/edaTimeWindowPickerPanel";
13
- import { loadPreference, savePreference } from "./utils/utils";
11
+ import { loadDetail, loadPreference, savePreference } from "./utils/utils";
12
+ import { EdaVectorDataProvider } from "./context/edaVectorDataProvider";
13
+ import { EdaTablePanel } from "./components/edaTablePanel";
14
+ import { EdaGraphPanel } from "./components/edaGraphPanel";
14
15
  const useStyles = createStyles(({ css }) => {
15
16
  return {
16
17
  baseLayout: css `
@@ -30,32 +31,53 @@ export class EdaDetail extends React.Component {
30
31
  const etTotal = dayjs(loadPreference("EDA_DETAIL_ET", dayjs().endOf('day').toISOString()));
31
32
  const step = loadPreference("EDA_DETAIL_STEP", StepType.Daily);
32
33
  const { bt, et } = getRange(btTotal, etTotal, step);
33
- this.state = {
34
- tabs: [],
35
- activeTabKey: "detail",
36
- btTotal: btTotal,
37
- etTotal: etTotal,
34
+ const context = {
35
+ btTotal,
36
+ etTotal,
38
37
  btWindow: bt,
39
38
  etWindow: et,
40
39
  sampling: EdaSamplingType.Default,
40
+ step,
41
41
  vectorPage: 1,
42
- totalCount: 0,
43
- step: step
42
+ updateValues: (bt, et, step, vectorPage) => this.updateSampleRange(bt, et, step, vectorPage),
43
+ updateTimeWindow: (bt, et, step) => this.updateTimeWindow(bt, et, step),
44
+ };
45
+ this.state = {
46
+ tabs: [],
47
+ activeTabKey: "detail",
48
+ context: context,
44
49
  };
45
50
  this.updateSampleRange = this.updateSampleRange.bind(this);
46
51
  this.updateTimeWindow = this.updateTimeWindow.bind(this);
47
- this.updateTotalCount = this.updateTotalCount.bind(this);
52
+ this.setContextState = this.setContextState.bind(this);
48
53
  }
49
54
  async componentDidMount() {
55
+ const { api, item } = this.props;
50
56
  const { data, type } = this.state;
51
- await this.loadData(this.props.item);
52
- this.setState({ tabs: this.getTabs(data, type) });
57
+ if (item && !Array.isArray(item)) {
58
+ const result = await loadDetail(api, item);
59
+ this.setState({
60
+ type: item.type,
61
+ data: result,
62
+ tabs: this.getTabs(result, item.type),
63
+ });
64
+ }
65
+ else {
66
+ this.setState({ tabs: this.getTabs(data, type) });
67
+ }
53
68
  }
54
69
  async componentDidUpdate(prevProps, prevState) {
55
- const { data, type, activeTabKey, btTotal, etTotal, step } = this.state;
56
- const { item, size, variant, showTimeWindow, showChartLegend } = this.props;
70
+ const { data, type, activeTabKey, context } = this.state;
71
+ const { api, item, size, variant, showTimeWindow, showChartLegend } = this.props;
57
72
  if (prevProps.item !== item) {
58
- await this.loadData(item);
73
+ if (item && !Array.isArray(item)) {
74
+ const result = await loadDetail(api, item);
75
+ this.setState({
76
+ type: item.type,
77
+ data: result,
78
+ tabs: this.getTabs(result, item.type),
79
+ });
80
+ }
59
81
  }
60
82
  else if (prevProps.size !== size ||
61
83
  prevProps.variant !== variant ||
@@ -64,44 +86,29 @@ export class EdaDetail extends React.Component {
64
86
  prevProps.showChartLegend !== showChartLegend) {
65
87
  this.setState({ tabs: this.getTabs(data, type) });
66
88
  }
67
- if (!prevState.btTotal.isSame(btTotal)) {
68
- savePreference("EDA_DETAIL_BT", btTotal);
89
+ if (!prevState.context.btTotal.isSame(context.btTotal)) {
90
+ savePreference("EDA_DETAIL_BT", context.btTotal);
69
91
  }
70
- if (!prevState.etTotal.isSame(etTotal)) {
71
- savePreference("EDA_DETAIL_ET", etTotal);
92
+ if (!prevState.context.etTotal.isSame(context.etTotal)) {
93
+ savePreference("EDA_DETAIL_ET", context.etTotal);
72
94
  }
73
- if (prevState.step !== step) {
74
- savePreference("EDA_DETAIL_STEP", step);
95
+ if (prevState.context.step !== context.step) {
96
+ savePreference("EDA_DETAIL_STEP", context.step);
75
97
  }
76
98
  }
77
99
  render() {
78
- const { className, style, size } = this.props;
79
- const { btTotal, etTotal, btWindow, etWindow, sampling, step, vectorPage, totalCount, activeTabKey } = this.state;
80
- const context = {
81
- btTotal,
82
- etTotal,
83
- btWindow,
84
- etWindow,
85
- sampling,
86
- step,
87
- vectorPage,
88
- totalCount,
89
- updateValues: this.updateSampleRange,
90
- updateTimeWindow: this.updateTimeWindow,
91
- updateTotalCount: this.updateTotalCount,
92
- };
100
+ const { api, className, style, size, showTimeWindow } = this.props;
101
+ const { context, activeTabKey } = this.state;
93
102
  return (React.createElement("div", { className: className, style: style },
94
103
  React.createElement(WithCss, { useStyles: useStyles }, (css) => React.createElement(SharedSampleRangeContext.Provider, { value: context },
95
- React.createElement(Tabs, { size: size, type: "card", className: css.styles.baseLayout, onChange: (key) => this.setState({ activeTabKey: key }), activeKey: activeTabKey, items: this.state.tabs })))));
104
+ React.createElement(EdaVectorDataProvider, { api: api, showTimeWindow: showTimeWindow },
105
+ React.createElement(Tabs, { size: size, type: "card", className: css.styles.baseLayout, onChange: (key) => this.setState({ activeTabKey: key }), activeKey: activeTabKey, items: this.state.tabs }))))));
96
106
  }
97
107
  updateSampleRange(bt, et, step, vectorPage) {
98
- this.setState({ btTotal: bt, etTotal: et, sampling: step, vectorPage: vectorPage });
99
- }
100
- updateTotalCount(totalCount) {
101
- this.setState({ totalCount: totalCount });
108
+ this.setContextState({ btTotal: bt, etTotal: et, sampling: step, vectorPage: vectorPage });
102
109
  }
103
110
  updateTimeWindow(bt, et, step) {
104
- this.setState({ btWindow: bt, etWindow: et, step: step });
111
+ this.setContextState({ btWindow: bt, etWindow: et, step: step });
105
112
  }
106
113
  getTabs(data, type) {
107
114
  const { size, variant, api, showTimeWindow, showChartLegend } = this.props;
@@ -110,7 +117,7 @@ export class EdaDetail extends React.Component {
110
117
  {
111
118
  key: "detail",
112
119
  label: i18n("Detail"),
113
- children: (React.createElement(EdaDetailPanel, { data: data, type: type, size: size, variant: variant })),
120
+ children: (React.createElement(EdaDetailPanel, { api: api, data: data, type: type, size: size, variant: variant })),
114
121
  },
115
122
  {
116
123
  key: "table",
@@ -124,50 +131,8 @@ export class EdaDetail extends React.Component {
124
131
  },
125
132
  ];
126
133
  }
127
- async loadData(item) {
128
- const { api } = this.props;
129
- if (item) {
130
- if (Array.isArray(item)) {
131
- }
132
- else {
133
- let dataItem = null;
134
- switch (item.type) {
135
- case 0: {
136
- const data = await api.loadVectorData(item.id);
137
- if (data.data.length > 0) {
138
- const item = data.data[0];
139
- const itemEx = data.dataEx[0];
140
- const dataFunction = data.dataFunction[0];
141
- dataItem = { data: item, extData: itemEx, dataFunction: dataFunction };
142
- }
143
- break;
144
- }
145
- case 1: {
146
- const data = await api.loadGroupData(item.id);
147
- if (data.data.length > 0) {
148
- const item = data.data[0];
149
- dataItem = { data: item };
150
- }
151
- break;
152
- }
153
- case 2: {
154
- const data = await api.loadScenarioData(item.id);
155
- if (data.data.length > 0) {
156
- const item = data.data[0];
157
- dataItem = { data: item };
158
- }
159
- break;
160
- }
161
- }
162
- if (dataItem !== null) {
163
- this.setState({
164
- type: item.type,
165
- data: dataItem,
166
- tabs: this.getTabs(dataItem, item.type),
167
- });
168
- }
169
- }
170
- }
134
+ setContextState(partialContext) {
135
+ this.setState({ context: { ...this.state.context, ...partialContext } });
171
136
  }
172
137
  }
173
138
  //# sourceMappingURL=edaDetail.js.map