d2aura 26.0.13 → 26.0.15

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 (158) hide show
  1. package/api/eda/edaManagerApi.d.ts +54 -15
  2. package/api/eda/edaManagerApi.js +106 -29
  3. package/api/eda/edaManagerApi.js.map +1 -1
  4. package/api/eda/generated/events.d.ts +115 -35
  5. package/api/eda/generated/events.js +193 -41
  6. package/api/eda/generated/events.js.map +1 -1
  7. package/api/eda/generated/structures.d.ts +110 -33
  8. package/api/eda/generated/structures.js.map +1 -1
  9. package/core/i18n/d2aura.en.json +14 -0
  10. package/core/i18n/d2aura.sk.json +92 -2
  11. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.d.ts +1 -1
  12. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js +2 -2
  13. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js.map +1 -1
  14. package/coreui/components/edaManagerComponent/components/edaChartViewer.d.ts +14 -0
  15. package/coreui/components/edaManagerComponent/components/edaChartViewer.js +374 -0
  16. package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -0
  17. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.d.ts +4 -8
  18. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +18 -75
  19. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  20. package/coreui/components/edaManagerComponent/components/edaDetailPanel.d.ts +5 -14
  21. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js +80 -19
  22. package/coreui/components/edaManagerComponent/components/edaDetailPanel.js.map +1 -1
  23. package/coreui/components/edaManagerComponent/components/edaGraphPanel.d.ts +2 -7
  24. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +22 -390
  25. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  26. package/coreui/components/edaManagerComponent/components/edaGroupDetailPanel.d.ts +3 -14
  27. package/coreui/components/edaManagerComponent/components/edaGroupDetailPanel.js +54 -67
  28. package/coreui/components/edaManagerComponent/components/edaGroupDetailPanel.js.map +1 -1
  29. package/coreui/components/edaManagerComponent/components/edaLoadingOverlay.d.ts +7 -0
  30. package/coreui/components/edaManagerComponent/components/edaLoadingOverlay.js +35 -0
  31. package/coreui/components/edaManagerComponent/components/edaLoadingOverlay.js.map +1 -0
  32. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.d.ts +12 -18
  33. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +55 -51
  34. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
  35. package/coreui/components/edaManagerComponent/components/edaScenarioDetailPanel.d.ts +3 -14
  36. package/coreui/components/edaManagerComponent/components/edaScenarioDetailPanel.js +67 -81
  37. package/coreui/components/edaManagerComponent/components/edaScenarioDetailPanel.js.map +1 -1
  38. package/coreui/components/edaManagerComponent/components/edaTablePanel.d.ts +2 -6
  39. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +188 -110
  40. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  41. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.d.ts +2 -13
  42. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js +57 -88
  43. package/coreui/components/edaManagerComponent/components/edaTimeWindowPickerPanel.js.map +1 -1
  44. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +9 -51
  45. package/coreui/components/edaManagerComponent/components/edaTreeView.js +431 -262
  46. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  47. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.d.ts +3 -21
  48. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +160 -179
  49. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
  50. package/coreui/components/edaManagerComponent/constants/actionTypes.d.ts +5 -0
  51. package/coreui/components/edaManagerComponent/constants/actionTypes.js +7 -0
  52. package/coreui/components/edaManagerComponent/constants/actionTypes.js.map +1 -0
  53. package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +23 -11
  54. package/coreui/components/edaManagerComponent/constants/edaTypes.js +15 -0
  55. package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
  56. package/coreui/components/edaManagerComponent/context/edaConfigContext.d.ts +26 -0
  57. package/coreui/components/edaManagerComponent/context/edaConfigContext.js +20 -0
  58. package/coreui/components/edaManagerComponent/context/edaConfigContext.js.map +1 -0
  59. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +10 -16
  60. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +8 -1
  61. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -1
  62. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.d.ts +0 -1
  63. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +90 -92
  64. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
  65. package/coreui/components/edaManagerComponent/context/loadingContext.d.ts +1 -1
  66. package/coreui/components/edaManagerComponent/context/loadingContext.js.map +1 -1
  67. package/coreui/components/edaManagerComponent/context/{sharedSampleRange.d.ts → sharedSampleRangeContext.d.ts} +12 -4
  68. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js +10 -0
  69. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js.map +1 -0
  70. package/coreui/components/edaManagerComponent/context/useEdaActions.d.ts +9 -0
  71. package/coreui/components/edaManagerComponent/context/useEdaActions.js +36 -0
  72. package/coreui/components/edaManagerComponent/context/useEdaActions.js.map +1 -0
  73. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.d.ts +13 -0
  74. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js +19 -0
  75. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js.map +1 -0
  76. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.d.ts +8 -0
  77. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js +171 -0
  78. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js.map +1 -0
  79. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.d.ts +22 -0
  80. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js +75 -0
  81. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js.map +1 -0
  82. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.d.ts +12 -0
  83. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js +52 -0
  84. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js.map +1 -0
  85. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.d.ts +22 -0
  86. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js +130 -0
  87. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js.map +1 -0
  88. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.d.ts +58 -0
  89. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js +51 -0
  90. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js.map +1 -0
  91. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.d.ts +18 -0
  92. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js +74 -0
  93. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js.map +1 -0
  94. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.d.ts +38 -0
  95. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js +299 -0
  96. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js.map +1 -0
  97. package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.d.ts +10 -0
  98. package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js +343 -0
  99. package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js.map +1 -0
  100. package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.d.ts +12 -0
  101. package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js +268 -0
  102. package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js.map +1 -0
  103. package/coreui/components/edaManagerComponent/dialogs/exportDialog.d.ts +18 -0
  104. package/coreui/components/edaManagerComponent/dialogs/exportDialog.js +156 -0
  105. package/coreui/components/edaManagerComponent/dialogs/exportDialog.js.map +1 -0
  106. package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.d.ts +12 -0
  107. package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js +74 -0
  108. package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js.map +1 -0
  109. package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.d.ts +16 -0
  110. package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js +32 -0
  111. package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js.map +1 -0
  112. package/coreui/components/edaManagerComponent/edaDetail.d.ts +7 -26
  113. package/coreui/components/edaManagerComponent/edaDetail.js +138 -106
  114. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  115. package/coreui/components/edaManagerComponent/edaManager.d.ts +4 -11
  116. package/coreui/components/edaManagerComponent/edaManager.js +29 -22
  117. package/coreui/components/edaManagerComponent/edaManager.js.map +1 -1
  118. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +6 -12
  119. package/coreui/components/edaManagerComponent/edaNavigator.js +36 -41
  120. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  121. package/coreui/components/edaManagerComponent/edaSelect.d.ts +4 -3
  122. package/coreui/components/edaManagerComponent/edaSelect.js +32 -54
  123. package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
  124. package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.d.ts +6 -0
  125. package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js +7 -0
  126. package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js.map +1 -0
  127. package/coreui/components/edaManagerComponent/utils/export.d.ts +9 -0
  128. package/coreui/components/edaManagerComponent/utils/export.js +570 -0
  129. package/coreui/components/edaManagerComponent/utils/export.js.map +1 -0
  130. package/coreui/components/edaManagerComponent/utils/utils.d.ts +6 -12
  131. package/coreui/components/edaManagerComponent/utils/utils.js +26 -15
  132. package/coreui/components/edaManagerComponent/utils/utils.js.map +1 -1
  133. package/d2configuration/edaManager/DB.EM_EDA_FunctionPrescription.xml +65 -0
  134. package/d2configuration/edaManager/DB.EM_EDA_VectorScenario.xml +65 -0
  135. package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +67 -1
  136. package/d2configuration/edaManager/E.EM_DETAIL_SQL.xml +85 -0
  137. package/d2configuration/edaManager/E.EM_DETAIL_UNIT.xml +143 -2
  138. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +14 -6
  139. package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +12 -1
  140. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +114 -6
  141. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +30 -6
  142. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +119 -17
  143. package/d2configuration/edaManager/SD.EM_EDA_FunctionPrescription.xml +91 -0
  144. package/d2configuration/edaManager/SD.EM_EDA_PairVector.xml +454 -0
  145. package/d2configuration/edaManager/{SD.EM_EDA_StatVectorRec_V1.xml → SD.EM_EDA_VectorScenario.xml} +13 -36
  146. package/d2configuration/edaManager/{SD.EM_EDA_VectorValues.xml → SD.EM_EDA_VectorStats.xml} +39 -6
  147. package/d2configuration/edaManager/SD.EM_Filter_Condition.xml +1 -1
  148. package/package.json +5 -3
  149. package/coreui/components/edaManagerComponent/components/edaBasePanel.d.ts +0 -16
  150. package/coreui/components/edaManagerComponent/components/edaBasePanel.js +0 -85
  151. package/coreui/components/edaManagerComponent/components/edaBasePanel.js.map +0 -1
  152. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js +0 -13
  153. package/coreui/components/edaManagerComponent/context/sharedSampleRange.js.map +0 -1
  154. package/d2configuration/edaManager/EDA_CancelSession.xml +0 -54
  155. package/d2configuration/edaManager/EDA_GetSessionId.xml +0 -54
  156. package/d2configuration/edaManager/EDA_ReadValuesFromVektorRec.xml +0 -54
  157. package/d2configuration/edaManager/EDA_StatVectorRec.xml +0 -56
  158. package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_V1.xml +0 -168
@@ -0,0 +1,343 @@
1
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { ModalDialog } from "d2coreui/components/modal/modalDialog";
3
+ import { Button, Space, Splitter, Tabs, Tree } from "antd";
4
+ import { DownOutlined, SaveOutlined } from "@ant-design/icons";
5
+ import i18n from "d2core/i18n/i18n";
6
+ import { UndoIcon } from "d2coreui/components/icons/undoIcon";
7
+ import { createStyles } from "antd-style";
8
+ import { EdaPeriodType, EdaPeriodValueType } from "../constants/edaTypes";
9
+ import { LocaleHolder } from "d2core/i18n/localeHolder";
10
+ import dayjs from "d2core/dayjs";
11
+ import ExtendedDataGrid from "d2coreui/components/grid/extendedDataGrid";
12
+ import { DescriptiveVectorDetailPanel } from "./descriptiveVectorDialog/descriptiveVectorDetailPanel";
13
+ import { FullPeriodType } from "./descriptiveVectorDialog/types";
14
+ import { addEntry, addSubEntry, buildTable, buildTree, getFormattedPeriodTime, getPeriodName, removeEntry, removeSubEntries, reorder, toFullPeriodType } from "./descriptiveVectorDialog/utils";
15
+ import { ControlButtons } from "./descriptiveVectorDialog/controlButtons";
16
+ import { GraphPanel } from "./descriptiveVectorDialog/graphPanel";
17
+ import { useSharedEdaData } from "./descriptiveVectorDialog/useSharedData";
18
+ import { TablePanel } from "./descriptiveVectorDialog/tablePanel";
19
+ const useStyles = createStyles(({ css, token }) => {
20
+ return {
21
+ baseLayout: css `
22
+ height: 100%;
23
+ width: 100%;
24
+
25
+ .ant-space-item:first-child {
26
+ height: 100%;
27
+ }
28
+
29
+ .ant-tree-node-content-wrapper {
30
+ user-select: none;
31
+ -webkit-user-select: none;
32
+ -moz-user-select: none;
33
+ -ms-user-select: none;
34
+ white-space: nowrap;
35
+ text-overflow: ellipsis;
36
+ overflow: hidden;
37
+
38
+ .ant-tree-title {
39
+ white-space: nowrap;
40
+ }
41
+ }
42
+ `,
43
+ tabsLayout: css `
44
+ height: 100%;
45
+ width: 100%;
46
+ overflow: hidden;
47
+
48
+ .ant-tabs-content {
49
+ height: 100%;
50
+ background-color: ${token.colorBgContainer};
51
+ border-radius: ${token.borderRadius}px;
52
+ transition: background-color 0.3s;
53
+ }
54
+ `,
55
+ treeLayout: css `
56
+ .tree-splitter {
57
+ display: flex;
58
+ flex-direction: row;
59
+ gap: ${token.paddingXS}px;
60
+ }
61
+
62
+ .tree-view {
63
+ width: 100%;
64
+ height: 100%;
65
+ }
66
+
67
+ .tree-mover {
68
+ padding: ${token.paddingXS}px;
69
+ display: flex;
70
+ flex-direction: column;
71
+ }
72
+ `,
73
+ tableLayout: css `
74
+ width: 100%;
75
+ height: 100%;
76
+ display: flex;
77
+ flex-direction: row;
78
+ gap: ${token.paddingXS}px;
79
+
80
+ .tree-mover {
81
+ padding: ${token.paddingXS}px;
82
+ display: flex;
83
+ flex-direction: column;
84
+ }
85
+ `,
86
+ buttonsLayout: css `
87
+ width: 100%;
88
+ display: flex;
89
+ justify-content: center;
90
+ `
91
+ };
92
+ });
93
+ var TabType;
94
+ (function (TabType) {
95
+ TabType["TREE"] = "tree";
96
+ TabType["TABLE"] = "table";
97
+ TabType["GRAPH"] = "graph";
98
+ TabType["VALUES"] = "values";
99
+ })(TabType || (TabType = {}));
100
+ export const EdaDescriptiveVectorEditorDialog = ({ api, vector, onCancel, onSaved, ...modalProps }) => {
101
+ const { styles } = useStyles();
102
+ const [originalData, setOriginalData] = useState([]);
103
+ const [tableData, setTableData] = useState([]);
104
+ const [dataModified, setDataModified] = useState(false);
105
+ const [selectedRow, setSelectedRow] = useState();
106
+ const [height, setHeight] = useState(0);
107
+ const [activeTab, setActiveTab] = useState(TabType.TREE);
108
+ const gridRef = useRef(null);
109
+ const { displayData, isLoading, params, setParams } = useSharedEdaData(api, originalData, tableData, activeTab === TabType.GRAPH || activeTab === TabType.VALUES);
110
+ const fullMask = useMemo(() => LocaleHolder.getDateTimeFormat(true, false, false), []);
111
+ const dateMask = useMemo(() => LocaleHolder.getDateFormat(false), []);
112
+ const handleSave = useCallback(() => {
113
+ }, [api, vector]);
114
+ const divRef = useCallback((node) => {
115
+ if (!node) {
116
+ return;
117
+ }
118
+ new ResizeObserver((entries) => {
119
+ if (entries[0]) {
120
+ setHeight(entries[0].contentRect.height);
121
+ }
122
+ }).observe(node);
123
+ }, []);
124
+ const loadData = useCallback(() => {
125
+ api.loadDescriptiveVectorData(vector.ID).then((result) => {
126
+ const descriptiveVector = result.map((r) => ({ ...r, timeFrom: dayjs(r.timeFrom), timeTo: dayjs(r.timeTo) }));
127
+ const data = buildTable(descriptiveVector);
128
+ gridRef.current?.showDetailPanel(false);
129
+ setOriginalData(data);
130
+ setTableData(data);
131
+ setDataModified(false);
132
+ setSelectedRow(undefined);
133
+ });
134
+ }, [api, vector]);
135
+ const handleRevert = useCallback(() => {
136
+ loadData();
137
+ }, [loadData]);
138
+ const handleDataChanged = useCallback((newData) => {
139
+ setTableData((prev) => {
140
+ return buildTable(prev.map((row) => row.idx === newData.idx ? { ...row, ...newData } : row));
141
+ });
142
+ setDataModified(true);
143
+ }, [fullMask, dateMask]);
144
+ const handleRowSelected = useCallback((row) => {
145
+ if (row.node.isSelected()) {
146
+ setSelectedRow(row.data);
147
+ }
148
+ }, []);
149
+ const handleRowDoubleClicked = useCallback(() => {
150
+ gridRef.current?.showDetailPanel(true);
151
+ }, []);
152
+ const handleMove = useCallback((direction) => {
153
+ if (!selectedRow) {
154
+ return;
155
+ }
156
+ setTableData((prev) => {
157
+ const { data, selected } = reorder(prev, selectedRow, direction);
158
+ setSelectedRow(selected);
159
+ return buildTable(data);
160
+ });
161
+ setDataModified(true);
162
+ }, [selectedRow, fullMask, dateMask]);
163
+ const handleAddEntry = useCallback(() => {
164
+ setTableData((prev) => {
165
+ const { data, selected } = addEntry(prev, selectedRow);
166
+ setSelectedRow(selected);
167
+ return buildTable(data);
168
+ });
169
+ setDataModified(true);
170
+ }, [selectedRow]);
171
+ const handleAddSubEntry = useCallback(() => {
172
+ if (selectedRow) {
173
+ setTableData((prev) => {
174
+ const { data, selected } = addSubEntry(prev, selectedRow);
175
+ setSelectedRow(selected);
176
+ return buildTable(data);
177
+ });
178
+ setDataModified(true);
179
+ }
180
+ }, [selectedRow]);
181
+ const handleRemoveEntry = useCallback(() => {
182
+ if (selectedRow) {
183
+ setTableData((prev) => {
184
+ const { data, selected } = removeEntry(prev, selectedRow);
185
+ setSelectedRow(selected);
186
+ return buildTable(data);
187
+ });
188
+ setDataModified(true);
189
+ }
190
+ }, [selectedRow]);
191
+ const handleRemoveSubEntries = useCallback(() => {
192
+ if (selectedRow) {
193
+ setTableData((prev) => {
194
+ const { data, selected } = removeSubEntries(prev, selectedRow);
195
+ setSelectedRow(selected);
196
+ return buildTable(data);
197
+ });
198
+ setDataModified(true);
199
+ }
200
+ }, [selectedRow]);
201
+ const valueFormatter = useCallback((props) => {
202
+ if (props.data && props.value) {
203
+ const data = props.data;
204
+ const formatted = getFormattedPeriodTime(data.periodType, props.value, fullMask, dateMask);
205
+ if (props.data.periodType === EdaPeriodType.Year) {
206
+ const fullPeriodType = toFullPeriodType(data);
207
+ switch (fullPeriodType) {
208
+ case FullPeriodType.YearQuarter:
209
+ return `${formatted}. ${i18n("Quarter")}`;
210
+ case FullPeriodType.YearWeek:
211
+ return `${formatted}. ${i18n("Week")}`;
212
+ }
213
+ }
214
+ return formatted;
215
+ }
216
+ return "";
217
+ }, []);
218
+ const selectGridRow = useCallback(() => {
219
+ if (selectedRow && gridRef.current) {
220
+ gridRef.current.dataGrid?.gridApi?.forEachNode((node) => {
221
+ if (node.data?.idx === selectedRow.idx && !node.isSelected()) {
222
+ node.setSelected(true);
223
+ }
224
+ });
225
+ }
226
+ else if (!selectedRow) {
227
+ gridRef.current?.dataGrid?.gridApi?.deselectAll();
228
+ }
229
+ }, [selectedRow, tableData]);
230
+ const columnDefs = useMemo(() => [
231
+ {
232
+ field: "idx",
233
+ colId: "idx",
234
+ width: 100,
235
+ headerName: i18n("Index"),
236
+ group: i18n("Basic Columns")
237
+ },
238
+ {
239
+ field: "periodType",
240
+ colId: "periodType",
241
+ valueFormatter: (props) => getPeriodName(props.value),
242
+ headerName: i18n("Period Type"),
243
+ group: i18n("Basic Columns"),
244
+ },
245
+ {
246
+ field: "timeFrom",
247
+ colId: "timeFrom",
248
+ valueFormatter: valueFormatter,
249
+ headerName: i18n("Period From"),
250
+ group: i18n("Basic Columns")
251
+ },
252
+ {
253
+ field: "timeTo",
254
+ colId: "timeTo",
255
+ valueFormatter: valueFormatter,
256
+ headerName: i18n("Period To"),
257
+ group: i18n("Basic Columns")
258
+ },
259
+ {
260
+ field: "value",
261
+ colId: "value",
262
+ headerName: i18n("Value"),
263
+ group: i18n("Basic Columns"),
264
+ },
265
+ {
266
+ field: "valueType",
267
+ colId: "valueType",
268
+ valueFormatter: (props) => i18n("EdaPeriodValueType_" + EdaPeriodValueType[props.value]),
269
+ headerName: i18n("Value Type"),
270
+ group: i18n("Basic Columns"),
271
+ },
272
+ {
273
+ field: "parent",
274
+ colId: "parent",
275
+ valueFormatter: (props) => props.value > 0 ? props.value : "",
276
+ headerName: i18n("Parent"),
277
+ group: i18n("Basic Columns"),
278
+ },
279
+ ], []);
280
+ const treeData = useMemo(() => {
281
+ return buildTree(tableData, fullMask, dateMask);
282
+ }, [tableData, fullMask, dateMask]);
283
+ const items = useMemo(() => [
284
+ {
285
+ key: TabType.TREE,
286
+ label: i18n("Tree"),
287
+ children: (React.createElement(Splitter, { className: styles.treeLayout },
288
+ React.createElement(Splitter.Panel, { className: "tree-splitter" },
289
+ React.createElement("div", { ref: divRef, className: "tree-view" },
290
+ React.createElement(Tree, { showIcon: true, showLine: true, treeData: treeData, virtual: true, blockNode: true, switcherIcon: React.createElement(DownOutlined, null), height: height, selectedKeys: selectedRow?.idx ? [selectedRow.idx] : [], onSelect: (_, info) => {
291
+ setSelectedRow(info.selected ? info.node.data : undefined);
292
+ } })),
293
+ React.createElement(ControlButtons, { tableData: tableData, onMove: handleMove, selectedRow: selectedRow, addEntry: handleAddEntry, addSubEntry: handleAddSubEntry, removeEntry: handleRemoveEntry, removeSubEntries: handleRemoveSubEntries })),
294
+ React.createElement(Splitter.Panel, { defaultSize: 350 }, selectedRow && (React.createElement(DescriptiveVectorDetailPanel, { data: selectedRow, onChange: handleDataChanged })))))
295
+ },
296
+ {
297
+ key: TabType.TABLE,
298
+ label: i18n("Table"),
299
+ children: (React.createElement("div", { className: styles.tableLayout },
300
+ React.createElement(ExtendedDataGrid, { ref: gridRef, defaultGridConfiguration: { pageSize: -1 }, columnDefs: columnDefs, onLoadData: (callback) => callback(1), detailPanel: {
301
+ defaultWidth: 350,
302
+ renderer: () => selectedRow ? (React.createElement(DescriptiveVectorDetailPanel, { data: selectedRow, onChange: handleDataChanged })) : React.createElement(React.Fragment, null),
303
+ }, onGridReady: selectGridRow, onRowDoubleClicked: handleRowDoubleClicked, onRowSelected: handleRowSelected, rowSelection: "single", rowData: tableData }),
304
+ React.createElement(ControlButtons, { tableData: tableData, onMove: handleMove, selectedRow: selectedRow, addEntry: handleAddEntry, addSubEntry: handleAddSubEntry, removeEntry: handleRemoveEntry, removeSubEntries: handleRemoveSubEntries })))
305
+ },
306
+ {
307
+ key: TabType.GRAPH,
308
+ label: i18n("Graph"),
309
+ children: (React.createElement(GraphPanel, { displayData: displayData, isLoading: isLoading, params: params, onParamsChange: setParams }))
310
+ },
311
+ {
312
+ key: TabType.VALUES,
313
+ label: i18n("Values"),
314
+ children: (React.createElement(TablePanel, { displayData: displayData, isLoading: isLoading, params: params, onParamsChange: setParams }))
315
+ }
316
+ ], [treeData, columnDefs, originalData, tableData, selectedRow, height, handleRowSelected, handleDataChanged, displayData, isLoading, params, setParams, styles, activeTab]);
317
+ useEffect(() => {
318
+ loadData();
319
+ }, [loadData]);
320
+ useEffect(() => {
321
+ selectGridRow();
322
+ }, [selectGridRow]);
323
+ return (React.createElement(ModalDialog, { ...modalProps, mode: "NO_BUTTONS", footer: (React.createElement("div", { className: styles.buttonsLayout },
324
+ React.createElement(Space.Compact, null,
325
+ React.createElement(Button, { type: "primary", disabled: !dataModified, icon: React.createElement(SaveOutlined, null), onClick: handleSave }, i18n("Save")),
326
+ React.createElement(Button, { danger: true, disabled: !dataModified, icon: React.createElement(UndoIcon, null), onClick: handleRevert }, i18n("Revert"))))), onCancel: (event) => {
327
+ if (!dataModified) {
328
+ onCancel?.(event);
329
+ }
330
+ else {
331
+ ModalDialog.confirm({
332
+ mode: "YES_NO",
333
+ title: i18n("Discard unsaved changes?"),
334
+ onOk: () => {
335
+ onCancel?.(event);
336
+ }
337
+ });
338
+ }
339
+ } },
340
+ React.createElement("div", { className: styles.tabsLayout },
341
+ React.createElement(Tabs, { type: "card", items: items, style: { height: "100%" }, destroyOnHidden: false, activeKey: activeTab, onChange: (key) => setActiveTab(key) }))));
342
+ };
343
+ //# sourceMappingURL=edaDescriptiveVectorEditorDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edaDescriptiveVectorEditorDialog.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACnF,OAAO,EAAC,WAAW,EAAoC,MAAM,uCAAuC,CAAC;AAErG,OAAO,EAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAa,IAAI,EAAC,MAAM,MAAM,CAAC;AACpE,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC7D,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AAGzE,OAAO,EAAC,4BAA4B,EAAC,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAoB,cAAc,EAAY,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAC9L,OAAO,EAAC,cAAc,EAAC,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,sCAAsC,CAAC;AAChE,OAAO,EAAC,gBAAgB,EAAC,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAC,UAAU,EAAC,MAAM,sCAAsC,CAAC;AAEhE,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAG,EAAE;IAC7C,OAAO;QACH,UAAU,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;SAqBd;QACD,UAAU,EAAE,GAAG,CAAA;;;;;;;oCAOa,KAAK,CAAC,gBAAgB;iCACzB,KAAK,CAAC,YAAY;;;SAG1C;QACD,UAAU,EAAE,GAAG,CAAA;;;;uBAIA,KAAK,CAAC,SAAS;;;;;;;;;2BASX,KAAK,CAAC,SAAS;;;;SAIjC;QACD,WAAW,EAAE,GAAG,CAAA;;;;;mBAKL,KAAK,CAAC,SAAS;;;2BAGP,KAAK,CAAC,SAAS;;;;SAIjC;QACD,aAAa,EAAE,GAAG,CAAA;;;;SAIjB;KACJ,CAAC;AACN,CAAC,CAAC,CAAC;AAEH,IAAK,OAKJ;AALD,WAAK,OAAO;IACR,wBAAa,CAAA;IACb,0BAAe,CAAA;IACf,0BAAe,CAAA;IACf,4BAAiB,CAAA;AACrB,CAAC,EALI,OAAO,KAAP,OAAO,QAKX;AAQD,MAAM,CAAC,MAAM,gCAAgC,GAAc,CAAC,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,EAAC,EAAE,EAAE;IAC3G,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,EAAE,CAAC;IAE7B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACjE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,EAAqB,CAAC;IACpE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,OAAO,CAAC,IAAI,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,MAAM,CAA8B,IAAI,CAAC,CAAC;IAE1D,MAAM,EACF,WAAW,EACX,SAAS,EACT,MAAM,EACN,SAAS,EACZ,GAAG,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,KAAK,IAAI,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAEtE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;IAEpC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAElB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,IAA2B,EAAE,EAAE;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO;QACX,CAAC;QAED,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACrD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,EAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC;YAC/H,MAAM,IAAI,GAAgB,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAExD,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;YACxC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,cAAc,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAElB,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,EAAE,CAAC;IACf,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,OAA0B,EAAE,EAAE;QACjE,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;YAClB,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,GAAG,GAAG,EAAE,GAAG,OAAO,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,GAAgC,EAAE,EAAE;QACvE,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACxB,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,SAAwB,EAAE,EAAE;QACxD,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QAED,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;YAClB,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAE/D,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;YAClB,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAErD,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,WAAW,EAAE,CAAC;YACd,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClB,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAExD,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,WAAW,EAAE,CAAC;YACd,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClB,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACxD,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,IAAI,WAAW,EAAE,CAAC;YACd,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClB,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC7D,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAA;YACF,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,KAAmD,EAAU,EAAE;QAC/F,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAc,KAAK,CAAC,IAAI,CAAC;YACnC,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE3F,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAE9C,QAAQ,cAAc,EAAE,CAAC;oBACrB,KAAK,cAAc,CAAC,WAAW;wBAC3B,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9C,KAAK,cAAc,CAAC,QAAQ;wBACxB,OAAO,GAAG,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/C,CAAC;YACL,CAAC;YAED,OAAO,SAAS,CAAA;QACpB,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACjC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;gBACpD,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBAC3D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QACtD,CAAC;IACL,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAqB,EAAE,CAAC;QAC/C;YACI,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD;YACI,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,YAAY;YACnB,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;YACrD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD;YACI,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;YACjB,cAAc,EAAE,cAAc;YAC9B,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;YAC/B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD;YACI,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,cAAc;YAC9B,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC;YAC7B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD;YACI,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD;YACI,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,WAAW;YAClB,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxF,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD;YACI,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC7D,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;SAC/B;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,OAAO,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAuB,EAAE,CAAC;QAC5C;YACI,GAAG,EAAE,OAAO,CAAC,IAAI;YACjB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,QAAQ,EAAE,CACN,oBAAC,QAAQ,IAAC,SAAS,EAAE,MAAM,CAAC,UAAU;gBAClC,oBAAC,QAAQ,CAAC,KAAK,IAAC,SAAS,EAAE,eAAe;oBACtC,6BAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW;wBACpC,oBAAC,IAAI,IACD,QAAQ,QACR,QAAQ,QACR,QAAQ,EAAE,QAAQ,EAClB,OAAO,QACP,SAAS,QACT,YAAY,EAAE,oBAAC,YAAY,OAAE,EAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EACvD,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gCAClB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;4BAC/D,CAAC,GACH,CACA;oBACN,oBAAC,cAAc,IACX,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB,EAC9B,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,sBAAsB,GAC1C,CACW;gBACjB,oBAAC,QAAQ,CAAC,KAAK,IAAC,WAAW,EAAE,GAAG,IAC3B,WAAW,IAAI,CACZ,oBAAC,4BAA4B,IACzB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,iBAAiB,GAC7B,CACL,CACY,CACV,CACd;SACJ;QACD;YACI,GAAG,EAAE,OAAO,CAAC,KAAK;YAClB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,CACN,6BAAK,SAAS,EAAE,MAAM,CAAC,WAAW;gBAC9B,oBAAC,gBAAgB,IACb,GAAG,EAAE,OAAO,EACZ,wBAAwB,EAAE,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAC,EACxC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EACrC,WAAW,EAAE;wBACT,YAAY,EAAE,GAAG;wBACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAC1B,oBAAC,4BAA4B,IACzB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,iBAAiB,GAC7B,CACL,CAAC,CAAC,CAAC,yCAAK;qBACZ,EACD,WAAW,EAAE,aAAa,EAC1B,kBAAkB,EAAE,sBAAsB,EAC1C,aAAa,EAAE,iBAAiB,EAChC,YAAY,EAAE,QAAQ,EACtB,OAAO,EAAE,SAAS,GACpB;gBACF,oBAAC,cAAc,IACX,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,iBAAiB,EAC9B,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,sBAAsB,GAC1C,CACA,CACT;SACJ;QACD;YACI,GAAG,EAAE,OAAO,CAAC,KAAK;YAClB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,CACN,oBAAC,UAAU,IACP,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,SAAS,GAC3B,CACL;SACJ;QACD;YACI,GAAG,EAAE,OAAO,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;YACrB,QAAQ,EAAE,CACN,oBAAC,UAAU,IACP,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,SAAS,GAC3B,CACL;SACJ;KACJ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7K,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,EAAE,CAAC;IACf,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACX,aAAa,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACH,oBAAC,WAAW,OACJ,UAAU,EACd,IAAI,gBACJ,MAAM,EAAE,CACJ,6BAAK,SAAS,EAAE,MAAM,CAAC,aAAa;YAChC,oBAAC,KAAK,CAAC,OAAO;gBACV,oBAAC,MAAM,IACH,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,CAAC,YAAY,EACvB,IAAI,EAAE,oBAAC,YAAY,OAAE,EACrB,OAAO,EAAE,UAAU,IAElB,IAAI,CAAC,MAAM,CAAC,CACR;gBACT,oBAAC,MAAM,IACH,MAAM,QACN,QAAQ,EAAE,CAAC,YAAY,EACvB,IAAI,EAAE,oBAAC,QAAQ,OAAE,EACjB,OAAO,EAAE,YAAY,IAEpB,IAAI,CAAC,QAAQ,CAAC,CACV,CACG,CACd,CACT,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,OAAO,CAAC;oBAChB,IAAI,UAAwB;oBAC5B,KAAK,EAAE,IAAI,CAAC,0BAA0B,CAAC;oBACvC,IAAI,EAAE,GAAG,EAAE;wBACP,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;iBACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,6BAAK,SAAS,EAAE,MAAM,CAAC,UAAU;YAC7B,oBAAC,IAAI,IACD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC,EACvB,eAAe,EAAE,KAAK,EACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAc,CAAC,GACjD,CACA,CACI,CACjB,CAAA;AACL,CAAC,CAAA","sourcesContent":["import React, {FC, useCallback, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {ModalDialog, ModalDialogMode, ModalDialogProps} from \"d2coreui/components/modal/modalDialog\";\r\nimport EdaManagerApi, {TreeItem} from \"../../../../api/eda/edaManagerApi\";\r\nimport {Button, Space, Splitter, Tabs, TabsProps, Tree} from \"antd\";\r\nimport {DownOutlined, SaveOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {UndoIcon} from \"d2coreui/components/icons/undoIcon\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {EdaPeriodType, EdaPeriodValueType} from \"../constants/edaTypes\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {RowSelectedEvent, ValueFormatterParams} from \"ag-grid-community\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {DescriptiveVectorDetailPanel} from \"./descriptiveVectorDialog/descriptiveVectorDetailPanel\";\r\nimport {DescriptiveVector, FullPeriodType, TableNode} from \"./descriptiveVectorDialog/types\";\r\nimport {addEntry, addSubEntry, buildTable, buildTree, getFormattedPeriodTime, getPeriodName, removeEntry, removeSubEntries, reorder, toFullPeriodType} from \"./descriptiveVectorDialog/utils\";\r\nimport {ControlButtons} from \"./descriptiveVectorDialog/controlButtons\";\r\nimport {GraphPanel} from \"./descriptiveVectorDialog/graphPanel\";\r\nimport {useSharedEdaData} from \"./descriptiveVectorDialog/useSharedData\";\r\nimport {TablePanel} from \"./descriptiveVectorDialog/tablePanel\";\r\n\r\nconst useStyles = createStyles(({css, token},) => {\r\n return {\r\n baseLayout: css`\r\n height: 100%;\r\n width: 100%;\r\n\r\n .ant-space-item:first-child {\r\n height: 100%;\r\n }\r\n\r\n .ant-tree-node-content-wrapper {\r\n user-select: none;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n\r\n .ant-tree-title {\r\n white-space: nowrap;\r\n }\r\n }\r\n `,\r\n tabsLayout: css`\r\n height: 100%;\r\n width: 100%;\r\n overflow: hidden;\r\n\r\n .ant-tabs-content {\r\n height: 100%;\r\n background-color: ${token.colorBgContainer};\r\n border-radius: ${token.borderRadius}px;\r\n transition: background-color 0.3s;\r\n }\r\n `,\r\n treeLayout: css`\r\n .tree-splitter {\r\n display: flex;\r\n flex-direction: row;\r\n gap: ${token.paddingXS}px;\r\n }\r\n \r\n .tree-view {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n \r\n .tree-mover {\r\n padding: ${token.paddingXS}px;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n `,\r\n tableLayout: css`\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n gap: ${token.paddingXS}px;\r\n\r\n .tree-mover {\r\n padding: ${token.paddingXS}px;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n `,\r\n buttonsLayout: css`\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n `\r\n };\r\n});\r\n\r\nenum TabType {\r\n TREE = \"tree\",\r\n TABLE = \"table\",\r\n GRAPH = \"graph\",\r\n VALUES = \"values\",\r\n}\r\n\r\ninterface Props extends Omit<ModalDialogProps, \"mode\" | \"onOk\"> {\r\n api: EdaManagerApi\r\n vector: TreeItem\r\n onSaved: () => void\r\n}\r\n\r\nexport const EdaDescriptiveVectorEditorDialog: FC<Props> = ({api, vector, onCancel, onSaved, ...modalProps}) => {\r\n const {styles} = useStyles();\r\n\r\n const [originalData, setOriginalData] = useState<TableNode[]>([]);\r\n const [tableData, setTableData] = useState<TableNode[]>([]);\r\n const [dataModified, setDataModified] = useState<boolean>(false);\r\n const [selectedRow, setSelectedRow] = useState<DescriptiveVector>();\r\n const [height, setHeight] = useState<number>(0);\r\n const [activeTab, setActiveTab] = useState<TabType>(TabType.TREE);\r\n\r\n const gridRef = useRef<ExtendedDataGrid<TableNode>>(null);\r\n\r\n const {\r\n displayData,\r\n isLoading,\r\n params,\r\n setParams\r\n } = useSharedEdaData(api, originalData, tableData, activeTab === TabType.GRAPH || activeTab === TabType.VALUES);\r\n\r\n const fullMask = useMemo(() => LocaleHolder.getDateTimeFormat(true, false, false), []);\r\n const dateMask = useMemo(() => LocaleHolder.getDateFormat(false), []);\r\n\r\n const handleSave = useCallback(() => {\r\n //TODO handle save\r\n }, [api, vector]);\r\n\r\n const divRef = useCallback((node: HTMLDivElement | null) => {\r\n if (!node) {\r\n return;\r\n }\r\n\r\n new ResizeObserver((entries) => {\r\n if (entries[0]) {\r\n setHeight(entries[0].contentRect.height);\r\n }\r\n }).observe(node);\r\n }, []);\r\n\r\n const loadData = useCallback(() => {\r\n api.loadDescriptiveVectorData(vector.ID).then((result) => {\r\n const descriptiveVector = result.map((r): DescriptiveVector => ({...r, timeFrom: dayjs(r.timeFrom), timeTo: dayjs(r.timeTo)}));\r\n const data: TableNode[] = buildTable(descriptiveVector);\r\n\r\n gridRef.current?.showDetailPanel(false);\r\n setOriginalData(data);\r\n setTableData(data);\r\n setDataModified(false);\r\n setSelectedRow(undefined);\r\n });\r\n }, [api, vector]);\r\n\r\n const handleRevert = useCallback(() => {\r\n loadData();\r\n }, [loadData]);\r\n\r\n const handleDataChanged = useCallback((newData: DescriptiveVector) => {\r\n setTableData((prev) => {\r\n return buildTable(prev.map((row) => row.idx === newData.idx ? {...row, ...newData} : row));\r\n });\r\n\r\n setDataModified(true);\r\n }, [fullMask, dateMask]);\r\n\r\n const handleRowSelected = useCallback((row: RowSelectedEvent<TableNode>) => {\r\n if (row.node.isSelected()) {\r\n setSelectedRow(row.data);\r\n }\r\n }, []);\r\n\r\n const handleRowDoubleClicked = useCallback(() => {\r\n gridRef.current?.showDetailPanel(true);\r\n }, []);\r\n\r\n const handleMove = useCallback((direction: \"up\" | \"down\") => {\r\n if (!selectedRow) {\r\n return;\r\n }\r\n\r\n setTableData((prev) => {\r\n const {data, selected} = reorder(prev, selectedRow, direction);\r\n\r\n setSelectedRow(selected);\r\n return buildTable(data);\r\n });\r\n setDataModified(true);\r\n }, [selectedRow, fullMask, dateMask]);\r\n\r\n const handleAddEntry = useCallback(() => {\r\n setTableData((prev) => {\r\n const {data, selected} = addEntry(prev, selectedRow);\r\n\r\n setSelectedRow(selected);\r\n return buildTable(data);\r\n });\r\n setDataModified(true);\r\n }, [selectedRow]);\r\n\r\n const handleAddSubEntry = useCallback(() => {\r\n if (selectedRow) {\r\n setTableData((prev) => {\r\n const {data, selected} = addSubEntry(prev, selectedRow);\r\n\r\n setSelectedRow(selected);\r\n return buildTable(data);\r\n });\r\n setDataModified(true);\r\n }\r\n }, [selectedRow]);\r\n\r\n const handleRemoveEntry = useCallback(() => {\r\n if (selectedRow) {\r\n setTableData((prev) => {\r\n const {data, selected} = removeEntry(prev, selectedRow);\r\n setSelectedRow(selected);\r\n return buildTable(data);\r\n });\r\n setDataModified(true);\r\n }\r\n }, [selectedRow]);\r\n\r\n const handleRemoveSubEntries = useCallback(() => {\r\n if (selectedRow) {\r\n setTableData((prev) => {\r\n const {data, selected} = removeSubEntries(prev, selectedRow);\r\n setSelectedRow(selected);\r\n return buildTable(data);\r\n })\r\n setDataModified(true);\r\n }\r\n }, [selectedRow]);\r\n\r\n const valueFormatter = useCallback((props: ValueFormatterParams<TableNode, dayjs.Dayjs>): string => {\r\n if (props.data && props.value) {\r\n const data: TableNode = props.data;\r\n const formatted = getFormattedPeriodTime(data.periodType, props.value, fullMask, dateMask);\r\n\r\n if (props.data.periodType === EdaPeriodType.Year) {\r\n const fullPeriodType = toFullPeriodType(data);\r\n\r\n switch (fullPeriodType) {\r\n case FullPeriodType.YearQuarter:\r\n return `${formatted}. ${i18n(\"Quarter\")}`;\r\n case FullPeriodType.YearWeek:\r\n return `${formatted}. ${i18n(\"Week\")}`;\r\n }\r\n }\r\n\r\n return formatted\r\n }\r\n\r\n return \"\";\r\n }, []);\r\n\r\n const selectGridRow = useCallback(() => {\r\n if (selectedRow && gridRef.current) {\r\n gridRef.current.dataGrid?.gridApi?.forEachNode((node) => {\r\n if (node.data?.idx === selectedRow.idx && !node.isSelected()) {\r\n node.setSelected(true);\r\n }\r\n });\r\n } else if (!selectedRow) {\r\n gridRef.current?.dataGrid?.gridApi?.deselectAll();\r\n }\r\n }, [selectedRow, tableData]);\r\n\r\n const columnDefs = useMemo((): DataGridColDef[] => [\r\n {\r\n field: \"idx\",\r\n colId: \"idx\",\r\n width: 100,\r\n headerName: i18n(\"Index\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"periodType\",\r\n colId: \"periodType\",\r\n valueFormatter: (props) => getPeriodName(props.value),\r\n headerName: i18n(\"Period Type\"),\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n field: \"timeFrom\",\r\n colId: \"timeFrom\",\r\n valueFormatter: valueFormatter,\r\n headerName: i18n(\"Period From\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"timeTo\",\r\n colId: \"timeTo\",\r\n valueFormatter: valueFormatter,\r\n headerName: i18n(\"Period To\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"value\",\r\n colId: \"value\",\r\n headerName: i18n(\"Value\"),\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n field: \"valueType\",\r\n colId: \"valueType\",\r\n valueFormatter: (props) => i18n(\"EdaPeriodValueType_\" + EdaPeriodValueType[props.value]),\r\n headerName: i18n(\"Value Type\"),\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n {\r\n field: \"parent\",\r\n colId: \"parent\",\r\n valueFormatter: (props) => props.value > 0 ? props.value : \"\",\r\n headerName: i18n(\"Parent\"),\r\n group: i18n(\"Basic Columns\"),\r\n },\r\n ], []);\r\n\r\n const treeData = useMemo(() => {\r\n return buildTree(tableData, fullMask, dateMask);\r\n }, [tableData, fullMask, dateMask]);\r\n\r\n const items = useMemo((): TabsProps[\"items\"] => [\r\n {\r\n key: TabType.TREE,\r\n label: i18n(\"Tree\"),\r\n children: (\r\n <Splitter className={styles.treeLayout}>\r\n <Splitter.Panel className={\"tree-splitter\"}>\r\n <div ref={divRef} className={\"tree-view\"}>\r\n <Tree\r\n showIcon\r\n showLine\r\n treeData={treeData}\r\n virtual\r\n blockNode\r\n switcherIcon={<DownOutlined/>}\r\n height={height}\r\n selectedKeys={selectedRow?.idx ? [selectedRow.idx] : []}\r\n onSelect={(_, info) => {\r\n setSelectedRow(info.selected ? info.node.data : undefined);\r\n }}\r\n />\r\n </div>\r\n <ControlButtons\r\n tableData={tableData}\r\n onMove={handleMove}\r\n selectedRow={selectedRow}\r\n addEntry={handleAddEntry}\r\n addSubEntry={handleAddSubEntry}\r\n removeEntry={handleRemoveEntry}\r\n removeSubEntries={handleRemoveSubEntries}\r\n />\r\n </Splitter.Panel>\r\n <Splitter.Panel defaultSize={350}>\r\n {selectedRow && (\r\n <DescriptiveVectorDetailPanel\r\n data={selectedRow}\r\n onChange={handleDataChanged}\r\n />\r\n )}\r\n </Splitter.Panel>\r\n </Splitter>\r\n )\r\n },\r\n {\r\n key: TabType.TABLE,\r\n label: i18n(\"Table\"),\r\n children: (\r\n <div className={styles.tableLayout}>\r\n <ExtendedDataGrid<TableNode>\r\n ref={gridRef}\r\n defaultGridConfiguration={{pageSize: -1}}\r\n columnDefs={columnDefs}\r\n onLoadData={(callback) => callback(1)}\r\n detailPanel={{\r\n defaultWidth: 350,\r\n renderer: () => selectedRow ? (\r\n <DescriptiveVectorDetailPanel\r\n data={selectedRow}\r\n onChange={handleDataChanged}\r\n />\r\n ) : <></>,\r\n }}\r\n onGridReady={selectGridRow}\r\n onRowDoubleClicked={handleRowDoubleClicked}\r\n onRowSelected={handleRowSelected}\r\n rowSelection={\"single\"}\r\n rowData={tableData}\r\n />\r\n <ControlButtons\r\n tableData={tableData}\r\n onMove={handleMove}\r\n selectedRow={selectedRow}\r\n addEntry={handleAddEntry}\r\n addSubEntry={handleAddSubEntry}\r\n removeEntry={handleRemoveEntry}\r\n removeSubEntries={handleRemoveSubEntries}\r\n />\r\n </div>\r\n )\r\n },\r\n {\r\n key: TabType.GRAPH,\r\n label: i18n(\"Graph\"),\r\n children: (\r\n <GraphPanel\r\n displayData={displayData}\r\n isLoading={isLoading}\r\n params={params}\r\n onParamsChange={setParams}\r\n />\r\n )\r\n },\r\n {\r\n key: TabType.VALUES,\r\n label: i18n(\"Values\"),\r\n children: (\r\n <TablePanel\r\n displayData={displayData}\r\n isLoading={isLoading}\r\n params={params}\r\n onParamsChange={setParams}\r\n />\r\n )\r\n }\r\n ], [treeData, columnDefs, originalData, tableData, selectedRow, height, handleRowSelected, handleDataChanged, displayData, isLoading, params, setParams, styles, activeTab]);\r\n\r\n useEffect(() => {\r\n loadData();\r\n }, [loadData]);\r\n\r\n useEffect(() => {\r\n selectGridRow();\r\n }, [selectGridRow]);\r\n\r\n return (\r\n <ModalDialog\r\n {...modalProps}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n footer={(\r\n <div className={styles.buttonsLayout}>\r\n <Space.Compact>\r\n <Button\r\n type={\"primary\"}\r\n disabled={!dataModified}\r\n icon={<SaveOutlined/>}\r\n onClick={handleSave}\r\n >\r\n {i18n(\"Save\")}\r\n </Button>\r\n <Button\r\n danger\r\n disabled={!dataModified}\r\n icon={<UndoIcon/>}\r\n onClick={handleRevert}\r\n >\r\n {i18n(\"Revert\")}\r\n </Button>\r\n </Space.Compact>\r\n </div>\r\n )}\r\n onCancel={(event) => {\r\n if (!dataModified) {\r\n onCancel?.(event);\r\n } else {\r\n ModalDialog.confirm({\r\n mode: ModalDialogMode.YES_NO,\r\n title: i18n(\"Discard unsaved changes?\"),\r\n onOk: () => {\r\n onCancel?.(event);\r\n }\r\n });\r\n }\r\n }}\r\n >\r\n <div className={styles.tabsLayout}>\r\n <Tabs\r\n type={\"card\"}\r\n items={items}\r\n style={{height: \"100%\"}}\r\n destroyOnHidden={false}\r\n activeKey={activeTab}\r\n onChange={(key) => setActiveTab(key as TabType)}\r\n />\r\n </div>\r\n </ModalDialog>\r\n )\r\n}"]}
@@ -0,0 +1,12 @@
1
+ import { FC } from "react";
2
+ import EdaManagerApi, { TreeItem } from "../../../../api/eda/edaManagerApi";
3
+ import { ModalDialogProps } from "d2coreui/components/modal/modalDialog";
4
+ import { VectorDataState } from "../context/edaVectorDataContext";
5
+ interface Props extends Omit<ModalDialogProps, "mode" | "onOk"> {
6
+ api: EdaManagerApi;
7
+ data: VectorDataState;
8
+ vector: TreeItem;
9
+ onSaved: () => void;
10
+ }
11
+ export declare const EdaTableEditorDialog: FC<Props>;
12
+ export {};