d2aura 26.0.18 → 26.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/api/abstractApi.d.ts +1 -1
  2. package/api/abstractApi.js +2 -2
  3. package/api/abstractApi.js.map +1 -1
  4. package/api/eda/edaManagerApi.d.ts +13 -10
  5. package/api/eda/edaManagerApi.js +45 -12
  6. package/api/eda/edaManagerApi.js.map +1 -1
  7. package/api/eda/generated/events.d.ts +47 -14
  8. package/api/eda/generated/events.js +74 -14
  9. package/api/eda/generated/events.js.map +1 -1
  10. package/api/eda/generated/structures.d.ts +121 -121
  11. package/api/eda/generated/structures.js.map +1 -1
  12. package/core/i18n/d2aura.sk.json +2 -0
  13. package/coreui/components/edaManagerComponent/components/edaChartViewer.js +11 -11
  14. package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -1
  15. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +2 -2
  16. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  17. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +1 -1
  18. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
  19. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +1 -1
  20. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  21. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +3 -2
  22. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
  23. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +5 -5
  24. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  25. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +3 -0
  26. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
  27. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +1 -0
  28. package/coreui/components/edaManagerComponent/components/edaTreeView.js +82 -33
  29. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  30. package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +11 -2
  31. package/coreui/components/edaManagerComponent/constants/edaTypes.js +6 -0
  32. package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
  33. package/coreui/components/edaManagerComponent/context/edaConfigContext.d.ts +5 -4
  34. package/coreui/components/edaManagerComponent/context/edaConfigContext.js +4 -1
  35. package/coreui/components/edaManagerComponent/context/edaConfigContext.js.map +1 -1
  36. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +36 -23
  37. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
  38. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js +1 -1
  39. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js.map +1 -1
  40. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js +5 -5
  41. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js.map +1 -1
  42. package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js +4 -2
  43. package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js.map +1 -1
  44. package/coreui/components/edaManagerComponent/dialogs/importDialog.js +56 -8
  45. package/coreui/components/edaManagerComponent/dialogs/importDialog.js.map +1 -1
  46. package/coreui/components/edaManagerComponent/dialogs/importExport/export.js +48 -28
  47. package/coreui/components/edaManagerComponent/dialogs/importExport/export.js.map +1 -1
  48. package/coreui/components/edaManagerComponent/dialogs/importExport/import.d.ts +4 -2
  49. package/coreui/components/edaManagerComponent/dialogs/importExport/import.js +26 -2
  50. package/coreui/components/edaManagerComponent/dialogs/importExport/import.js.map +1 -1
  51. package/coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.js +0 -1
  52. package/coreui/components/edaManagerComponent/dialogs/importExport/vectorTypeSelection.js.map +1 -1
  53. package/coreui/components/edaManagerComponent/dialogs/vectorSelectionDialog.js +4 -5
  54. package/coreui/components/edaManagerComponent/dialogs/vectorSelectionDialog.js.map +1 -1
  55. package/coreui/components/edaManagerComponent/edaDetail.js +3 -1
  56. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  57. package/coreui/components/edaManagerComponent/edaManager.d.ts +1 -1
  58. package/coreui/components/edaManagerComponent/edaManager.js +1 -1
  59. package/coreui/components/edaManagerComponent/edaManager.js.map +1 -1
  60. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +1 -0
  61. package/coreui/components/edaManagerComponent/edaNavigator.js +4 -4
  62. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  63. package/coreui/components/edaManagerComponent/utils/utils.d.ts +1 -1
  64. package/coreui/components/edaManagerComponent/utils/utils.js +4 -5
  65. package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
  66. package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +18 -0
  67. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +8 -8
  68. package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +4 -38
  69. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +224 -79
  70. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +12 -12
  71. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +116 -116
  72. package/d2configuration/edaManager/SD.EM_EDA_CalcFunction_Params_V2.xml +245 -0
  73. package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_Params_V2.xml +159 -0
  74. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  import React, { useCallback, useRef, useState } from "react";
2
2
  import { EdaVectorDataContext } from "./edaVectorDataContext";
3
3
  import { useSampleRange } from "./sharedSampleRangeContext";
4
- import { EdaValueClassType } from "../constants/edaTypes";
4
+ import { EdaRoundingType, EdaValueClassType } from "../constants/edaTypes";
5
5
  import { useLoading } from "./loadingContext";
6
6
  import { App } from "antd";
7
7
  import i18n from "d2core/i18n/i18n";
@@ -21,7 +21,9 @@ export const EdaVectorDataProvider = ({ api, children }) => {
21
21
  });
22
22
  const safeReadVectorValues = useCallback(async (vector, from, to, step) => {
23
23
  try {
24
- return await api.readVectorValues(vector.ID, from, to, step);
24
+ return await api.readVectorValues(vector.ID, from, to, step, {
25
+ useRounding: vector.RoundingType !== EdaRoundingType.NoRounding
26
+ });
25
27
  }
26
28
  catch (e) {
27
29
  message.warning(React.createElement("span", null, i18n("Failed to load vector %{n} with error: '%{e}'", { n: vector.DisplayName, e: e?.value })));
@@ -33,7 +35,13 @@ export const EdaVectorDataProvider = ({ api, children }) => {
33
35
  }, [api, message]);
34
36
  const safeCalcVectorValues = useCallback(async (vector, from, to, step) => {
35
37
  try {
36
- return await api.calcValuesForUnsavedVector(vector.Type, vector.Prescription ?? "", from, to, step);
38
+ return await api.calcValuesForUnsavedVector(vector.Type, vector.Prescription ?? "", from, to, step, {
39
+ valueType: vector.ValueType,
40
+ roundType: vector.RoundingType,
41
+ decimalPlaces: vector.RoundingPlaces,
42
+ isIntegral: vector.IsIntegral,
43
+ userName: vector.UserName,
44
+ });
37
45
  }
38
46
  catch (e) {
39
47
  message.warning(React.createElement("span", null, i18n("Failed to load vector %{n} with error: '%{e}'", { n: vector.DisplayName, e: e?.value })));
@@ -61,7 +69,7 @@ export const EdaVectorDataProvider = ({ api, children }) => {
61
69
  const vectors = [];
62
70
  const visible = new Set();
63
71
  let { btWindow, etWindow } = range;
64
- if (!detail?.showTimeWindow) {
72
+ if (!detail.showTimeWindow) {
65
73
  btWindow = btTotal;
66
74
  etWindow = etTotal;
67
75
  }
@@ -70,24 +78,24 @@ export const EdaVectorDataProvider = ({ api, children }) => {
70
78
  case 2: {
71
79
  let resultVectors;
72
80
  if (range.vectors) {
73
- resultVectors = { items: range.vectors, leftCount: 0 };
81
+ resultVectors = { items: range.vectors, totalCount: 0 };
74
82
  }
75
83
  else {
76
84
  try {
77
85
  if (data.type === 1) {
78
- resultVectors = await api.getGroupVectors(data.data.data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);
86
+ resultVectors = await api.getGroupVectors(data.data.data.ID_SKVEKTOR, vectorPage);
79
87
  }
80
88
  else {
81
- resultVectors = await api.getScenarioVectors(data.data.data.ID_SCENAR, (vectorPage - 1) * api.pageSize, undefined, true);
89
+ resultVectors = await api.getScenarioVectors(data.data.data.ID_SCENAR, vectorPage, undefined, true);
82
90
  }
83
91
  }
84
92
  catch (error) {
85
93
  console.error(error);
86
- resultVectors = { items: [], leftCount: 0 };
94
+ resultVectors = { items: [], totalCount: 0 };
87
95
  }
88
96
  loading.updateLoading({ loadingCount: resultVectors.items.length });
89
97
  if (range.vectorPage === 1) {
90
- range.updateTotalCount(resultVectors.items.length + resultVectors.leftCount);
98
+ range.updateTotalCount(resultVectors.totalCount);
91
99
  }
92
100
  if (requestId !== lastRequestId.current) {
93
101
  return;
@@ -99,7 +107,7 @@ export const EdaVectorDataProvider = ({ api, children }) => {
99
107
  }
100
108
  for (let i = 0; i < resultVectors.items.length; i++) {
101
109
  const vector = resultVectors.items[i];
102
- loading.updateLoading({ loadingItem: vector.DisplayName ?? "" });
110
+ loading.updateLoading({ loadingItem: vector.DisplayName });
103
111
  const valuesData = await safeReadVectorValues(vector, btWindow, etWindow, sampling);
104
112
  if (!loadingRef.current) {
105
113
  break;
@@ -162,10 +170,11 @@ export const EdaVectorDataProvider = ({ api, children }) => {
162
170
  };
163
171
  }
164
172
  else {
165
- visible.add(entry.ID);
166
- vectors.push({ ...entry, _isCustom: true });
167
- result[entry.ID] = {
168
- data: await safeCalcVectorValues(entry, btWindow, etWindow, sampling),
173
+ const vector = { ...entry, ID: getInternalId(), _isCustom: true };
174
+ visible.add(vector.ID);
175
+ vectors.push(vector);
176
+ result[vector.ID] = {
177
+ data: await safeCalcVectorValues(vector, btWindow, etWindow, sampling),
169
178
  from: btWindow,
170
179
  to: etWindow,
171
180
  sampling: sampling,
@@ -188,11 +197,11 @@ export const EdaVectorDataProvider = ({ api, children }) => {
188
197
  }
189
198
  loadingRef.current = false;
190
199
  }
191
- }, [api, cancelLoading, cancelLoadingAll, detail, loading, range, safeCalcVectorValues, safeReadVectorValues]);
200
+ }, [api, cancelLoading, cancelLoadingAll, detail.showTimeWindow, loading, range, safeCalcVectorValues, safeReadVectorValues]);
192
201
  const loadSpecificVectors = useCallback(async (vectors, forceUpdate) => {
193
202
  const { btTotal, etTotal, sampling } = range;
194
203
  let { btWindow, etWindow } = range;
195
- if (!detail?.showTimeWindow) {
204
+ if (!detail.showTimeWindow) {
196
205
  btWindow = btTotal;
197
206
  etWindow = etTotal;
198
207
  }
@@ -221,8 +230,8 @@ export const EdaVectorDataProvider = ({ api, children }) => {
221
230
  }
222
231
  for (let i = 0; i < vectors.length; i++) {
223
232
  const vector = vectors[i];
224
- loading.updateLoading({ loadingItem: vector.DisplayName ?? "" });
225
- if (dataState.loadedData.type === 3 && vector.Prescription !== undefined) {
233
+ loading.updateLoading({ loadingItem: vector.DisplayName });
234
+ if (dataState.loadedData.type === 3 && typeof dataState.loadedData.data[i] === "object") {
226
235
  result[vector.ID] = {
227
236
  data: await safeCalcVectorValues(vector, btWindow, etWindow, sampling),
228
237
  from: btWindow,
@@ -255,14 +264,14 @@ export const EdaVectorDataProvider = ({ api, children }) => {
255
264
  loadingRef.current = false;
256
265
  loading.stopLoading();
257
266
  }
258
- }, [range, detail, dataState.loadedData, dataState.data, dataState.visible, loading, cancelLoading, cancelLoadingAll, safeReadVectorValues, safeCalcVectorValues, api]);
267
+ }, [range, detail.showTimeWindow, dataState.loadedData, dataState.data, dataState.visible, loading, cancelLoading, cancelLoadingAll, safeReadVectorValues, safeCalcVectorValues, api]);
259
268
  const toggleVectorVisibility = useCallback(async (id, visible) => {
260
269
  setDataState((prev) => {
261
270
  const state = prev.data[id];
262
271
  const visibleSet = new Set(prev.visible);
263
272
  const { btTotal, etTotal } = range;
264
273
  let { btWindow, etWindow } = range;
265
- if (!detail?.showTimeWindow) {
274
+ if (!detail.showTimeWindow) {
266
275
  btWindow = btTotal;
267
276
  etWindow = etTotal;
268
277
  }
@@ -278,11 +287,11 @@ export const EdaVectorDataProvider = ({ api, children }) => {
278
287
  }
279
288
  return { ...prev, visible: visibleSet };
280
289
  });
281
- }, [range, detail?.showTimeWindow, loadSpecificVectors]);
290
+ }, [range, detail.showTimeWindow, loadSpecificVectors]);
282
291
  const setAllVectorVisibility = useCallback(async (visible) => {
283
292
  const { btTotal, etTotal } = range;
284
293
  let { btWindow, etWindow } = range;
285
- if (!detail?.showTimeWindow) {
294
+ if (!detail.showTimeWindow) {
286
295
  btWindow = btTotal;
287
296
  etWindow = etTotal;
288
297
  }
@@ -304,7 +313,7 @@ export const EdaVectorDataProvider = ({ api, children }) => {
304
313
  else {
305
314
  setDataState((s) => ({ ...s, visible: new Set() }));
306
315
  }
307
- }, [range, dataState.vectors, dataState.data, loadSpecificVectors, dataState.visible, detail?.showTimeWindow]);
316
+ }, [range, dataState.vectors, dataState.data, loadSpecificVectors, dataState.visible, detail.showTimeWindow]);
308
317
  return (React.createElement(EdaVectorDataContext.Provider, { value: {
309
318
  ...dataState,
310
319
  loadAllData,
@@ -313,4 +322,8 @@ export const EdaVectorDataProvider = ({ api, children }) => {
313
322
  setAllVectorVisibility,
314
323
  } }, children));
315
324
  };
325
+ let id = -1;
326
+ function getInternalId() {
327
+ return id--;
328
+ }
316
329
  //# sourceMappingURL=edaVectorDataProvider.js.map
@@ -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, PropsWithChildren, useCallback, useRef, useState} from \"react\";\r\nimport EdaManagerApi, {TreeItem, TreeItemsResult, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {DataTreeItem, EdaVectorDataContext, EdaVectorDataState, VectorDataState} from \"./edaVectorDataContext\";\r\nimport {useSampleRange} from \"./sharedSampleRangeContext\";\r\nimport {EdaSamplingType, EdaValueClassType, IdType, TypedData} from \"../constants/edaTypes\";\r\nimport {useLoading} 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}\r\n\r\nexport const EdaVectorDataProvider: FC<PropsWithChildren<Props>> = ({api, children}) => {\r\n const {detail} = useEdaConfig();\r\n const {message} = App.useApp();\r\n const range = useSampleRange();\r\n const loading = useLoading();\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 safeReadVectorValues = useCallback(async (vector: TreeItem, from: dayjs.Dayjs, to: dayjs.Dayjs, step: EdaSamplingType): Promise<VectorValuesData> => {\r\n try {\r\n return await api.readVectorValues(vector.ID, from, to, step);\r\n } catch (e: any) {\r\n message.warning(<span>{i18n(\"Failed to load vector %{n} with error: '%{e}'\", {n: vector.DisplayName, e: e?.value})}</span>);\r\n console.error(e);\r\n return {\r\n data: []\r\n };\r\n }\r\n }, [api, message]);\r\n\r\n const safeCalcVectorValues = useCallback(async (vector: TreeItem, from: dayjs.Dayjs, to: dayjs.Dayjs, step: EdaSamplingType): Promise<VectorValuesData> => {\r\n try {\r\n return await api.calcValuesForUnsavedVector(vector.Type, vector.Prescription ?? \"\", from, to, step);\r\n } catch (e: any) {\r\n message.warning(<span>{i18n(\"Failed to load vector %{n} with error: '%{e}'\", {n: vector.DisplayName, e: e?.value})}</span>);\r\n console.error(e);\r\n return {\r\n data: []\r\n };\r\n }\r\n }, [api, message]);\r\n\r\n const cancelLoading = useCallback(async () => {\r\n await api.cancelSession();\r\n }, [api]);\r\n\r\n const cancelLoadingAll = useCallback(async () => {\r\n loadingRef.current = false;\r\n await api.cancelSession();\r\n }, [api]);\r\n\r\n const loadAllData = useCallback(async (data: TypedData) => {\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 loading.startLoading(cancelLoading, cancelLoadingAll);\r\n\r\n try {\r\n const {btTotal, etTotal, sampling, vectorPage} = range;\r\n const result: { [id: number]: VectorDataState } = {};\r\n const vectors: DataTreeItem[] = [];\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 resultVectors: TreeItemsResult;\r\n\r\n if (range.vectors) {\r\n resultVectors = {items: range.vectors, leftCount: 0}\r\n } else {\r\n try {\r\n if (data.type === IdType.GROUP) {\r\n resultVectors = await api.getGroupVectors(data.data.data.ID_SKVEKTOR, (vectorPage - 1) * api.pageSize);\r\n } else {\r\n resultVectors = 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 resultVectors = {items: [], leftCount: 0};\r\n }\r\n\r\n loading.updateLoading({loadingCount: resultVectors.items.length});\r\n\r\n if (range.vectorPage === 1) {\r\n range.updateTotalCount(resultVectors.items.length + resultVectors.leftCount);\r\n }\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n }\r\n\r\n for (const vector of resultVectors.items) {\r\n vectors.push({...vector, _isCustom: false});\r\n visible.add(vector.ID);\r\n }\r\n\r\n for (let i = 0; i < resultVectors.items.length; i++) {\r\n const vector = resultVectors.items[i];\r\n\r\n loading.updateLoading({loadingItem: vector.DisplayName ?? \"\"});\r\n\r\n const valuesData: VectorValuesData = await safeReadVectorValues(vector, 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 loading.updateLoading({loadingPercentage: (i + 1) / resultVectors.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 vector: DataTreeItem = {\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: column.TYP,\r\n Units: column.TECH_JEDNOTKY,\r\n RoundingType: column.VIEW_ROUND,\r\n RoundingPlaces: column.VIEW_DEC_PL,\r\n IsIntegral: column.INTEGRAL === EdaValueClassType.Integral,\r\n _isCustom: false,\r\n }\r\n\r\n loading.updateLoading({loadingCount: 1, loadingItem: vector.DisplayName})\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector, 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(vector.ID);\r\n vectors.push(vector);\r\n\r\n break;\r\n }\r\n case IdType.SET: {\r\n for (let entry of data.data) {\r\n if (typeof entry === \"number\") {\r\n const id = entry;\r\n\r\n const item = await api.getVector(id);\r\n\r\n if (!item) {\r\n console.log(\"Invalid vector ID \" + id)\r\n continue;\r\n }\r\n\r\n visible.add(id);\r\n vectors.push({...item, _isCustom: false});\r\n\r\n result[id] = {\r\n data: await safeReadVectorValues(item, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n }\r\n } else {\r\n visible.add(entry.ID);\r\n vectors.push({...entry, _isCustom: true});\r\n\r\n result[entry.ID] = {\r\n data: await safeCalcVectorValues(entry, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, data: result, vectors: vectors, visible: visible}));\r\n loading.updateLoading({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 loading.stopLoading();\r\n }\r\n\r\n loadingRef.current = false;\r\n }\r\n }, [api, cancelLoading, cancelLoadingAll, detail, loading, range, safeCalcVectorValues, safeReadVectorValues]);\r\n\r\n const loadSpecificVectors = useCallback(async (vectors: TreeItem[], forceUpdate?: boolean) => {\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 || !dataState.loadedData) {\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 loading.startLoading(cancelLoading, cancelLoadingAll);\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 loading.updateLoading({loadingPercentage: 0, 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 loading.updateLoading({loadingItem: vector.DisplayName ?? \"\"});\r\n\r\n if (dataState.loadedData.type === IdType.SET && vector.Prescription !== undefined) {\r\n result[vector.ID] = {\r\n data: await safeCalcVectorValues(vector, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n } else {\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n }\r\n\r\n visible.add(vector.ID);\r\n loading.updateLoading({loadingPercentage: (i + 1) / vectors.length * 100});\r\n\r\n if (!loadingRef.current) {\r\n break;\r\n }\r\n }\r\n\r\n loading.updateLoading({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 loading.stopLoading();\r\n }\r\n }, [range, detail, dataState.loadedData, dataState.data, dataState.visible, loading, cancelLoading, cancelLoadingAll, safeReadVectorValues, safeCalcVectorValues, api]);\r\n\r\n const toggleVectorVisibility = useCallback(async (id: number, visible: boolean) => {\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 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, dataState.visible, detail?.showTimeWindow]);\r\n\r\n return (\r\n <EdaVectorDataContext.Provider\r\n value={{\r\n ...dataState,\r\n loadAllData,\r\n loadSpecificVectors,\r\n toggleVectorVisibility,\r\n setAllVectorVisibility,\r\n }}\r\n >\r\n {children}\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, PropsWithChildren, useCallback, useRef, useState} from \"react\";\r\nimport EdaManagerApi, {TreeItem, TreeItemsResult, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\nimport {DataTreeItem, EdaVectorDataContext, EdaVectorDataState, VectorDataState} from \"./edaVectorDataContext\";\r\nimport {useSampleRange} from \"./sharedSampleRangeContext\";\r\nimport {EdaRoundingType, EdaSamplingType, EdaValueClassType, IdType, TypedData, UnsavedTreeItem} from \"../constants/edaTypes\";\r\nimport {useLoading} 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}\r\n\r\nexport const EdaVectorDataProvider: FC<PropsWithChildren<Props>> = ({api, children}) => {\r\n const {detail} = useEdaConfig();\r\n const {message} = App.useApp();\r\n const range = useSampleRange();\r\n const loading = useLoading();\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 safeReadVectorValues = useCallback(async (vector: TreeItem, from: dayjs.Dayjs, to: dayjs.Dayjs, step: EdaSamplingType): Promise<VectorValuesData> => {\r\n try {\r\n return await api.readVectorValues(vector.ID, from, to, step, {\r\n useRounding: vector.RoundingType !== EdaRoundingType.NoRounding\r\n });\r\n } catch (e: any) {\r\n message.warning(<span>{i18n(\"Failed to load vector %{n} with error: '%{e}'\", {n: vector.DisplayName, e: e?.value})}</span>);\r\n console.error(e);\r\n return {\r\n data: []\r\n };\r\n }\r\n }, [api, message]);\r\n\r\n const safeCalcVectorValues = useCallback(async (vector: UnsavedTreeItem, from: dayjs.Dayjs, to: dayjs.Dayjs, step: EdaSamplingType): Promise<VectorValuesData> => {\r\n try {\r\n return await api.calcValuesForUnsavedVector(vector.Type, vector.Prescription ?? \"\", from, to, step, {\r\n valueType: vector.ValueType,\r\n roundType: vector.RoundingType,\r\n decimalPlaces: vector.RoundingPlaces,\r\n isIntegral: vector.IsIntegral,\r\n userName: vector.UserName,\r\n });\r\n } catch (e: any) {\r\n message.warning(<span>{i18n(\"Failed to load vector %{n} with error: '%{e}'\", {n: vector.DisplayName, e: e?.value})}</span>);\r\n console.error(e);\r\n return {\r\n data: []\r\n };\r\n }\r\n }, [api, message]);\r\n\r\n const cancelLoading = useCallback(async () => {\r\n await api.cancelSession();\r\n }, [api]);\r\n\r\n const cancelLoadingAll = useCallback(async () => {\r\n loadingRef.current = false;\r\n await api.cancelSession();\r\n }, [api]);\r\n\r\n const loadAllData = useCallback(async (data: TypedData) => {\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 loading.startLoading(cancelLoading, cancelLoadingAll);\r\n\r\n try {\r\n const {btTotal, etTotal, sampling, vectorPage} = range;\r\n const result: { [id: number]: VectorDataState } = {};\r\n const vectors: DataTreeItem[] = [];\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 resultVectors: TreeItemsResult;\r\n\r\n if (range.vectors) {\r\n resultVectors = {items: range.vectors, totalCount: 0}\r\n } else {\r\n try {\r\n if (data.type === IdType.GROUP) {\r\n resultVectors = await api.getGroupVectors(data.data.data.ID_SKVEKTOR, vectorPage);\r\n } else {\r\n resultVectors = await api.getScenarioVectors(data.data.data.ID_SCENAR, vectorPage, undefined, true);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n resultVectors = {items: [], totalCount: 0};\r\n }\r\n\r\n loading.updateLoading({loadingCount: resultVectors.items.length});\r\n\r\n if (range.vectorPage === 1) {\r\n range.updateTotalCount(resultVectors.totalCount);\r\n }\r\n\r\n if (requestId !== lastRequestId.current) {\r\n return;\r\n }\r\n }\r\n\r\n for (const vector of resultVectors.items) {\r\n vectors.push({...vector, _isCustom: false});\r\n visible.add(vector.ID);\r\n }\r\n\r\n for (let i = 0; i < resultVectors.items.length; i++) {\r\n const vector = resultVectors.items[i];\r\n\r\n loading.updateLoading({loadingItem: vector.DisplayName});\r\n\r\n const valuesData: VectorValuesData = await safeReadVectorValues(vector, 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 loading.updateLoading({loadingPercentage: (i + 1) / resultVectors.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 vector: DataTreeItem = {\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: column.TYP,\r\n Units: column.TECH_JEDNOTKY,\r\n RoundingType: column.VIEW_ROUND,\r\n RoundingPlaces: column.VIEW_DEC_PL,\r\n IsIntegral: column.INTEGRAL === EdaValueClassType.Integral,\r\n _isCustom: false,\r\n }\r\n\r\n loading.updateLoading({loadingCount: 1, loadingItem: vector.DisplayName})\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector, 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(vector.ID);\r\n vectors.push(vector);\r\n\r\n break;\r\n }\r\n case IdType.SET: {\r\n for (let entry of data.data) {\r\n if (typeof entry === \"number\") {\r\n const id = entry;\r\n\r\n const item = await api.getVector(id);\r\n\r\n if (!item) {\r\n console.log(\"Invalid vector ID \" + id)\r\n continue;\r\n }\r\n\r\n visible.add(id);\r\n vectors.push({...item, _isCustom: false});\r\n\r\n result[id] = {\r\n data: await safeReadVectorValues(item, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n }\r\n } else {\r\n const vector: DataTreeItem & UnsavedTreeItem = {...entry, ID: getInternalId(), _isCustom: true};\r\n\r\n visible.add(vector.ID);\r\n vectors.push(vector);\r\n\r\n result[vector.ID] = {\r\n data: await safeCalcVectorValues(vector, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n setDataState((s): EdaVectorDataState => ({...s, data: result, vectors: vectors, visible: visible}));\r\n loading.updateLoading({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 loading.stopLoading();\r\n }\r\n\r\n loadingRef.current = false;\r\n }\r\n }, [api, cancelLoading, cancelLoadingAll, detail.showTimeWindow, loading, range, safeCalcVectorValues, safeReadVectorValues]);\r\n\r\n const loadSpecificVectors = useCallback(async (vectors: TreeItem[], forceUpdate?: boolean) => {\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 || !dataState.loadedData) {\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 loading.startLoading(cancelLoading, cancelLoadingAll);\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 loading.updateLoading({loadingPercentage: 0, 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 loading.updateLoading({loadingItem: vector.DisplayName});\r\n\r\n if (dataState.loadedData.type === IdType.SET && typeof dataState.loadedData.data[i] === \"object\") {\r\n result[vector.ID] = {\r\n data: await safeCalcVectorValues(vector as unknown as UnsavedTreeItem, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n } else {\r\n result[vector.ID] = {\r\n data: await safeReadVectorValues(vector, btWindow, etWindow, sampling),\r\n from: btWindow,\r\n to: etWindow,\r\n sampling: sampling,\r\n };\r\n }\r\n\r\n visible.add(vector.ID);\r\n loading.updateLoading({loadingPercentage: (i + 1) / vectors.length * 100});\r\n\r\n if (!loadingRef.current) {\r\n break;\r\n }\r\n }\r\n\r\n loading.updateLoading({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 loading.stopLoading();\r\n }\r\n }, [range, detail.showTimeWindow, dataState.loadedData, dataState.data, dataState.visible, loading, cancelLoading, cancelLoadingAll, safeReadVectorValues, safeCalcVectorValues, api]);\r\n\r\n const toggleVectorVisibility = useCallback(async (id: number, visible: boolean) => {\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 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, dataState.visible, detail.showTimeWindow]);\r\n\r\n return (\r\n <EdaVectorDataContext.Provider\r\n value={{\r\n ...dataState,\r\n loadAllData,\r\n loadSpecificVectors,\r\n toggleVectorVisibility,\r\n setAllVectorVisibility,\r\n }}\r\n >\r\n {children}\r\n </EdaVectorDataContext.Provider>\r\n )\r\n}\r\n\r\nlet id = -1;\r\n\r\nfunction getInternalId(): number {\r\n return id--;\r\n}"]}
@@ -20,7 +20,7 @@ const useStyles = createStyles(({ css, token }) => {
20
20
 
21
21
  > div {
22
22
  height: 100%;
23
- overflow-x: hidden;
23
+ overflow-x: auto;
24
24
  overflow-y: auto;
25
25
  }
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graphPanel.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useMemo, useState} from \"react\";\r\nimport {Card, Space} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {EdaSampleRangePickerPanel} from \"../../components/edaSampleRangePickerPanel\";\r\nimport {EdaSamplingType} from \"../../constants/edaTypes\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {VectorValuesData} from \"../../../../../api/eda/edaManagerApi\";\r\nimport {EdaChartViewer} from \"../../components/edaChartViewer\";\r\nimport {getOrigModifiedVectors} from \"./utils\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface Props {\r\n displayData: Record<number, {data: VectorValuesData}>;\r\n params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType };\r\n onParamsChange: (params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType }) => void;\r\n}\r\n\r\nexport const GraphPanel: FC<Props> = ({displayData, params, onParamsChange}) => {\r\n const {styles} = useStyles();\r\n\r\n const vectors = useMemo(() => getOrigModifiedVectors(), []);\r\n const [visibleVectors, setVisibleVectors] = useState<Set<number>>(new Set([0, 1]));\r\n\r\n const handleRangeChange = useCallback((bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType) => onParamsChange({bt, et, sampling}), [onParamsChange]);\r\n\r\n const handleToggleVisibility = useCallback((id: number, visible: boolean) => {\r\n setVisibleVectors((prev) => {\r\n const next = new Set(prev);\r\n\r\n if (visible) {\r\n next.add(id);\r\n } else {\r\n next.delete(id);\r\n }\r\n\r\n return next;\r\n });\r\n }, []);\r\n\r\n const handleToggleAllVisibility = useCallback((visible: boolean) => {\r\n if (visible) {\r\n setVisibleVectors(new Set([0, 1]));\r\n } else {\r\n setVisibleVectors(new Set());\r\n }\r\n }, []);\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <Space direction=\"vertical\" style={{width: \"100%\", height: \"100%\"}}>\r\n <EdaSampleRangePickerPanel\r\n bt={params.bt}\r\n et={params.et}\r\n sampling={params.sampling}\r\n totalCount={1}\r\n pageSize={1}\r\n page={1}\r\n onChangeRange={handleRangeChange}\r\n onChangePage={() => {}}\r\n onChangeVectors={() => {}}\r\n />\r\n <EdaChartViewer\r\n vectors={vectors}\r\n data={displayData}\r\n visibleVectors={visibleVectors}\r\n isDataInitialized\r\n onToggleVisibility={handleToggleVisibility}\r\n onToggleAllVisibility={handleToggleAllVisibility}\r\n />\r\n </Space>\r\n </Card>\r\n );\r\n}"]}
1
+ {"version":3,"file":"graphPanel.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useMemo, useState} from \"react\";\r\nimport {Card, Space} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {EdaSampleRangePickerPanel} from \"../../components/edaSampleRangePickerPanel\";\r\nimport {EdaSamplingType} from \"../../constants/edaTypes\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {VectorValuesData} from \"../../../../../api/eda/edaManagerApi\";\r\nimport {EdaChartViewer} from \"../../components/edaChartViewer\";\r\nimport {getOrigModifiedVectors} from \"./utils\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: auto;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface Props {\r\n displayData: Record<number, {data: VectorValuesData}>;\r\n params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType };\r\n onParamsChange: (params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType }) => void;\r\n}\r\n\r\nexport const GraphPanel: FC<Props> = ({displayData, params, onParamsChange}) => {\r\n const {styles} = useStyles();\r\n\r\n const vectors = useMemo(() => getOrigModifiedVectors(), []);\r\n const [visibleVectors, setVisibleVectors] = useState<Set<number>>(new Set([0, 1]));\r\n\r\n const handleRangeChange = useCallback((bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType) => onParamsChange({bt, et, sampling}), [onParamsChange]);\r\n\r\n const handleToggleVisibility = useCallback((id: number, visible: boolean) => {\r\n setVisibleVectors((prev) => {\r\n const next = new Set(prev);\r\n\r\n if (visible) {\r\n next.add(id);\r\n } else {\r\n next.delete(id);\r\n }\r\n\r\n return next;\r\n });\r\n }, []);\r\n\r\n const handleToggleAllVisibility = useCallback((visible: boolean) => {\r\n if (visible) {\r\n setVisibleVectors(new Set([0, 1]));\r\n } else {\r\n setVisibleVectors(new Set());\r\n }\r\n }, []);\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <Space direction=\"vertical\" style={{width: \"100%\", height: \"100%\"}}>\r\n <EdaSampleRangePickerPanel\r\n bt={params.bt}\r\n et={params.et}\r\n sampling={params.sampling}\r\n totalCount={1}\r\n pageSize={1}\r\n page={1}\r\n onChangeRange={handleRangeChange}\r\n onChangePage={() => {}}\r\n onChangeVectors={() => {}}\r\n />\r\n <EdaChartViewer\r\n vectors={vectors}\r\n data={displayData}\r\n visibleVectors={visibleVectors}\r\n isDataInitialized\r\n onToggleVisibility={handleToggleVisibility}\r\n onToggleAllVisibility={handleToggleAllVisibility}\r\n />\r\n </Space>\r\n </Card>\r\n );\r\n}"]}
@@ -23,7 +23,7 @@ const useStyles = createStyles(({ css, token }) => {
23
23
 
24
24
  > div {
25
25
  height: 100%;
26
- overflow-x: hidden;
26
+ overflow-x: auto;
27
27
  overflow-y: auto;
28
28
  }
29
29
  }
@@ -46,7 +46,7 @@ const useStyles = createStyles(({ css, token }) => {
46
46
  export const TablePanel = ({ displayData, params, onParamsChange }) => {
47
47
  const { token } = theme.useToken();
48
48
  const { styles } = useStyles();
49
- const { table } = useEdaConfig();
49
+ const { table, maxDecimalPlaces } = useEdaConfig();
50
50
  const vectors = useMemo(() => getOrigModifiedVectors(), []);
51
51
  const tablePanelStyle = useMemo(() => ({ marginTop: token.paddingXXS }), [token.paddingXXS]);
52
52
  const panelStyle = useMemo(() => ({ padding: `0, ${token.paddingXXS}px` }), [token.paddingXXS]);
@@ -95,14 +95,14 @@ export const TablePanel = ({ displayData, params, onParamsChange }) => {
95
95
  field: `${v.ID}.value`,
96
96
  colId: String(v.ID),
97
97
  type: ["alignRight"],
98
- valueFormatter: (props) => formatValue(props.value, v.RoundingType, v.RoundingPlaces),
98
+ valueFormatter: (props) => formatValue(props.value, v.RoundingType, v.RoundingPlaces, maxDecimalPlaces),
99
99
  headerName: v.DisplayName,
100
100
  headerTooltip: v.DisplayName,
101
101
  group: i18n("Basic Columns"),
102
102
  }))
103
103
  ];
104
- return table?.detailTable?.modifyColumns ? table.detailTable.modifyColumns(columns) : columns;
105
- }, [vectors, table]);
104
+ return table.detailTable?.modifyColumns ? table.detailTable.modifyColumns(columns) : columns;
105
+ }, [vectors, table.detailTable]);
106
106
  return (React.createElement(Card, { className: styles.baseLayout },
107
107
  React.createElement(Space, { direction: "vertical", style: { width: "100%", height: "100%" } },
108
108
  React.createElement(EdaSampleRangePickerPanel, { bt: params.bt, et: params.et, sampling: params.sampling, totalCount: 1, pageSize: 1, page: 1, onChangeRange: handleRangeChange, onChangePage: () => { }, onChangeVectors: () => { } }),
@@ -1 +1 @@
1
- {"version":3,"file":"tablePanel.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useMemo} from \"react\";\r\nimport {VectorValuesData} from \"../../../../../api/eda/edaManagerApi\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {EdaSamplingType} from \"../../constants/edaTypes\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {Card, Empty, Space, theme} from \"antd\";\r\nimport {EdaSampleRangePickerPanel} from \"../../components/edaSampleRangePickerPanel\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {UnixTime} from \"d2jsapi\";\r\nimport {UnivalValue} from \"d2jsapi/dist/unival\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef, MenuElement} from \"d2coreui/components/grid/dataGrid\";\r\nimport {formatValue} from \"../../utils/utils\";\r\nimport {getOrigModifiedVectors} from \"./utils\";\r\nimport {useEdaConfig} from \"../../context/edaConfigContext\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface GridRow {\r\n id: number\r\n time?: UnixTime\r\n\r\n [id: number]: UnivalValue\r\n}\r\n\r\ninterface Props {\r\n displayData: Record<number, { data: VectorValuesData }>;\r\n params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType };\r\n onParamsChange: (params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType }) => void;\r\n}\r\n\r\nexport const TablePanel: FC<Props> = ({displayData, params, onParamsChange}) => {\r\n const {token} = theme.useToken();\r\n const {styles} = useStyles();\r\n const {table} = useEdaConfig();\r\n\r\n const vectors = useMemo(() => getOrigModifiedVectors(), []);\r\n\r\n const tablePanelStyle = useMemo(() => ({marginTop: token.paddingXXS}), [token.paddingXXS]);\r\n const panelStyle = useMemo(() => ({padding: `0, ${token.paddingXXS}px`}), [token.paddingXXS]);\r\n\r\n const getRowStyle = useCallback((params: any) => {\r\n if (params.node.isRowPinned()) {\r\n return {backgroundColor: token.colorFillAlter};\r\n }\r\n\r\n return undefined;\r\n }, [token.colorFillAlter]);\r\n\r\n const handleRangeChange = useCallback((bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType) => onParamsChange({bt, et, sampling}), [onParamsChange]);\r\n\r\n const tableData = useMemo(() => {\r\n const ids = Object.keys(displayData).map(Number);\r\n const rowByTime = new Map<number, GridRow>();\r\n\r\n for (const id of ids) {\r\n const vectorPoints = displayData[id]?.data?.data || [];\r\n\r\n for (const point of vectorPoints) {\r\n const time = point.val.valueTime;\r\n\r\n if (time === undefined) continue;\r\n\r\n let row = rowByTime.get(time);\r\n\r\n if (!row) {\r\n row = {\r\n id: time,\r\n time: time\r\n }\r\n rowByTime.set(time, row);\r\n }\r\n\r\n row[id] = point.val;\r\n }\r\n }\r\n\r\n return Array.from(rowByTime.values()).sort((a, b) => (a.time || 0) - (b.time || 0));\r\n }, [displayData]);\r\n\r\n const columnDefs = useMemo(() => {\r\n if (!vectors) {\r\n return []\r\n }\r\n\r\n const columns: DataGridColDef[] = [\r\n {\r\n field: \"time\",\r\n colId: \"time\",\r\n type: [\"dateTimeColumn\"],\r\n headerName: i18n(\"Vector Time\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ...vectors.map((v): DataGridColDef => ({\r\n field: `${v.ID}.value`,\r\n colId: String(v.ID),\r\n type: [\"alignRight\"],\r\n valueFormatter: (props) => formatValue(props.value, v.RoundingType, v.RoundingPlaces),\r\n headerName: v.DisplayName,\r\n headerTooltip: v.DisplayName,\r\n group: i18n(\"Basic Columns\"),\r\n }))\r\n ];\r\n\r\n return table?.detailTable?.modifyColumns ? table.detailTable.modifyColumns(columns) : columns;\r\n }, [vectors, table]);\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <Space direction=\"vertical\" style={{width: \"100%\", height: \"100%\"}}>\r\n <EdaSampleRangePickerPanel\r\n bt={params.bt}\r\n et={params.et}\r\n sampling={params.sampling}\r\n totalCount={1}\r\n pageSize={1}\r\n page={1}\r\n onChangeRange={handleRangeChange}\r\n onChangePage={() => {}}\r\n onChangeVectors={() => {}}\r\n />\r\n <div style={{height: '100%'}}>\r\n <ExtendedDataGrid<GridRow>\r\n columnDefs={columnDefs}\r\n onLoadData={handleLoadData}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n rowData={tableData}\r\n tablePanelStyle={tablePanelStyle}\r\n panelStyle={panelStyle}\r\n settingsMenu={{renderer: handleSettingsMenu}}\r\n toolbar={{\r\n hideRecordCount: true,\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={renderNoRecordsOverlay}\r\n getRowStyle={getRowStyle}\r\n rowSelection=\"multiple\"\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n </div>\r\n </Space>\r\n </Card>\r\n );\r\n}\r\n\r\nfunction handleLoadData(callback: (v: number) => void) {\r\n callback(1);\r\n}\r\n\r\nfunction renderNoRecordsOverlay() {\r\n return <Empty description={i18n(\"No records found.\")} styles={{image: {height: \"8vh\"}}}/>;\r\n}\r\n\r\nfunction handleSettingsMenu(menuElements: MenuElement[]) {\r\n return menuElements.filter((e) => ![\"columnFilter\", \"columnsConfig\"].includes(e.key as string));\r\n}"]}
1
+ {"version":3,"file":"tablePanel.js","sourceRoot":"","sources":["../../../../../../../coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useMemo} from \"react\";\r\nimport {VectorValuesData} from \"../../../../../api/eda/edaManagerApi\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {EdaSamplingType} from \"../../constants/edaTypes\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {Card, Empty, Space, theme} from \"antd\";\r\nimport {EdaSampleRangePickerPanel} from \"../../components/edaSampleRangePickerPanel\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {UnixTime} from \"d2jsapi\";\r\nimport {UnivalValue} from \"d2jsapi/dist/unival\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef, MenuElement} from \"d2coreui/components/grid/dataGrid\";\r\nimport {formatValue} from \"../../utils/utils\";\r\nimport {getOrigModifiedVectors} from \"./utils\";\r\nimport {useEdaConfig} from \"../../context/edaConfigContext\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: auto;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface GridRow {\r\n id: number\r\n time?: UnixTime\r\n\r\n [id: number]: UnivalValue\r\n}\r\n\r\ninterface Props {\r\n displayData: Record<number, { data: VectorValuesData }>;\r\n params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType };\r\n onParamsChange: (params: { bt: dayjs.Dayjs; et: dayjs.Dayjs; sampling: EdaSamplingType }) => void;\r\n}\r\n\r\nexport const TablePanel: FC<Props> = ({displayData, params, onParamsChange}) => {\r\n const {token} = theme.useToken();\r\n const {styles} = useStyles();\r\n const {table, maxDecimalPlaces} = useEdaConfig();\r\n\r\n const vectors = useMemo(() => getOrigModifiedVectors(), []);\r\n\r\n const tablePanelStyle = useMemo(() => ({marginTop: token.paddingXXS}), [token.paddingXXS]);\r\n const panelStyle = useMemo(() => ({padding: `0, ${token.paddingXXS}px`}), [token.paddingXXS]);\r\n\r\n const getRowStyle = useCallback((params: any) => {\r\n if (params.node.isRowPinned()) {\r\n return {backgroundColor: token.colorFillAlter};\r\n }\r\n\r\n return undefined;\r\n }, [token.colorFillAlter]);\r\n\r\n const handleRangeChange = useCallback((bt: dayjs.Dayjs, et: dayjs.Dayjs, sampling: EdaSamplingType) => onParamsChange({bt, et, sampling}), [onParamsChange]);\r\n\r\n const tableData = useMemo(() => {\r\n const ids = Object.keys(displayData).map(Number);\r\n const rowByTime = new Map<number, GridRow>();\r\n\r\n for (const id of ids) {\r\n const vectorPoints = displayData[id]?.data?.data || [];\r\n\r\n for (const point of vectorPoints) {\r\n const time = point.val.valueTime;\r\n\r\n if (time === undefined) continue;\r\n\r\n let row = rowByTime.get(time);\r\n\r\n if (!row) {\r\n row = {\r\n id: time,\r\n time: time\r\n }\r\n rowByTime.set(time, row);\r\n }\r\n\r\n row[id] = point.val;\r\n }\r\n }\r\n\r\n return Array.from(rowByTime.values()).sort((a, b) => (a.time || 0) - (b.time || 0));\r\n }, [displayData]);\r\n\r\n const columnDefs = useMemo(() => {\r\n if (!vectors) {\r\n return []\r\n }\r\n\r\n const columns: DataGridColDef[] = [\r\n {\r\n field: \"time\",\r\n colId: \"time\",\r\n type: [\"dateTimeColumn\"],\r\n headerName: i18n(\"Vector Time\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ...vectors.map((v): DataGridColDef => ({\r\n field: `${v.ID}.value`,\r\n colId: String(v.ID),\r\n type: [\"alignRight\"],\r\n valueFormatter: (props) => formatValue(props.value, v.RoundingType, v.RoundingPlaces, maxDecimalPlaces),\r\n headerName: v.DisplayName,\r\n headerTooltip: v.DisplayName,\r\n group: i18n(\"Basic Columns\"),\r\n }))\r\n ];\r\n\r\n return table.detailTable?.modifyColumns ? table.detailTable.modifyColumns(columns) : columns;\r\n }, [vectors, table.detailTable]);\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <Space direction=\"vertical\" style={{width: \"100%\", height: \"100%\"}}>\r\n <EdaSampleRangePickerPanel\r\n bt={params.bt}\r\n et={params.et}\r\n sampling={params.sampling}\r\n totalCount={1}\r\n pageSize={1}\r\n page={1}\r\n onChangeRange={handleRangeChange}\r\n onChangePage={() => {}}\r\n onChangeVectors={() => {}}\r\n />\r\n <div style={{height: '100%'}}>\r\n <ExtendedDataGrid<GridRow>\r\n columnDefs={columnDefs}\r\n onLoadData={handleLoadData}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n rowData={tableData}\r\n tablePanelStyle={tablePanelStyle}\r\n panelStyle={panelStyle}\r\n settingsMenu={{renderer: handleSettingsMenu}}\r\n toolbar={{\r\n hideRecordCount: true,\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={renderNoRecordsOverlay}\r\n getRowStyle={getRowStyle}\r\n rowSelection=\"multiple\"\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n </div>\r\n </Space>\r\n </Card>\r\n );\r\n}\r\n\r\nfunction handleLoadData(callback: (v: number) => void) {\r\n callback(1);\r\n}\r\n\r\nfunction renderNoRecordsOverlay() {\r\n return <Empty description={i18n(\"No records found.\")} styles={{image: {height: \"8vh\"}}}/>;\r\n}\r\n\r\nfunction handleSettingsMenu(menuElements: MenuElement[]) {\r\n return menuElements.filter((e) => ![\"columnFilter\", \"columnsConfig\"].includes(e.key as string));\r\n}"]}
@@ -10,6 +10,7 @@ import { ModalDialog } from "d2coreui/components/modal/modalDialog";
10
10
  import { EdaChartViewer } from "../components/edaChartViewer";
11
11
  import EdaVectorMassChangeButton, { EdaVectorMassChangeOperationType } from "../../edaManager/components/detail/components/edaVectorMassChangeButton";
12
12
  import dayjs from "d2core/dayjs";
13
+ import { useEdaConfig } from "../context/edaConfigContext";
13
14
  const useStyles = createStyles(({ css, token }) => {
14
15
  return {
15
16
  baseLayout: css `
@@ -42,6 +43,7 @@ export const EdaTableEditorDialog = ({ api, data: { data, from, to }, vector, on
42
43
  const { styles } = useStyles();
43
44
  const { token } = theme.useToken();
44
45
  const { message } = App.useApp();
46
+ const { maxDecimalPlaces } = useEdaConfig();
45
47
  const [prevData, setPrevData] = useState();
46
48
  const [editedData, setEditedData] = useState(cloneData(data.data ?? []));
47
49
  const [dataModified, setDataModified] = useState(false);
@@ -92,7 +94,7 @@ export const EdaTableEditorDialog = ({ api, data: { data, from, to }, vector, on
92
94
  editable: true,
93
95
  cellEditor: "numberCellEditor",
94
96
  valueSetter: onValueSetter,
95
- valueFormatter: (props) => formatValue(props.value, vector.RoundingType, vector.RoundingPlaces),
97
+ valueFormatter: (props) => formatValue(props.value, vector.RoundingType, vector.RoundingPlaces, maxDecimalPlaces),
96
98
  headerName: i18n("Value"),
97
99
  group: i18n("Basic Columns"),
98
100
  },
@@ -108,7 +110,7 @@ export const EdaTableEditorDialog = ({ api, data: { data, from, to }, vector, on
108
110
  headerName: i18n("Flags"),
109
111
  group: i18n("Basic Columns"),
110
112
  },
111
- ], [onValueSetter, vector.RoundingPlaces, vector.RoundingType]);
113
+ ], [onValueSetter, maxDecimalPlaces, vector.RoundingPlaces, vector.RoundingType]);
112
114
  const getRowStyle = useCallback((params) => {
113
115
  if (params.data.isDirty) {
114
116
  return { backgroundColor: token.colorWarningBg };