d2aura 23.0.0

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 (274) hide show
  1. package/api/abstractApi.d.ts +21 -0
  2. package/api/abstractApi.js +56 -0
  3. package/api/abstractApi.js.map +1 -0
  4. package/api/abstractEntityApi.d.ts +37 -0
  5. package/api/abstractEntityApi.js +145 -0
  6. package/api/abstractEntityApi.js.map +1 -0
  7. package/api/advancedFilterApi.d.ts +56 -0
  8. package/api/advancedFilterApi.js +108 -0
  9. package/api/advancedFilterApi.js.map +1 -0
  10. package/api/archiveApi.d.ts +14 -0
  11. package/api/archiveApi.js +25 -0
  12. package/api/archiveApi.js.map +1 -0
  13. package/api/comparison/entityComparisonUtils.d.ts +4 -0
  14. package/api/comparison/entityComparisonUtils.js +15 -0
  15. package/api/comparison/entityComparisonUtils.js.map +1 -0
  16. package/api/constants/constants.d.ts +5 -0
  17. package/api/constants/constants.js +6 -0
  18. package/api/constants/constants.js.map +1 -0
  19. package/api/constants/d2ChartConstants.d.ts +5 -0
  20. package/api/constants/d2ChartConstants.js +6 -0
  21. package/api/constants/d2ChartConstants.js.map +1 -0
  22. package/api/edaApi.d.ts +36 -0
  23. package/api/edaApi.js +109 -0
  24. package/api/edaApi.js.map +1 -0
  25. package/api/impl/errorHandling.d.ts +1 -0
  26. package/api/impl/errorHandling.js +72 -0
  27. package/api/impl/errorHandling.js.map +1 -0
  28. package/api/impl/utils/reportError.d.ts +2 -0
  29. package/api/impl/utils/reportError.js +157 -0
  30. package/api/impl/utils/reportError.js.map +1 -0
  31. package/api/impl/utils/reportServiceMessage.d.ts +1 -0
  32. package/api/impl/utils/reportServiceMessage.js +29 -0
  33. package/api/impl/utils/reportServiceMessage.js.map +1 -0
  34. package/api/types/accessRight.d.ts +5 -0
  35. package/api/types/accessRight.js +7 -0
  36. package/api/types/accessRight.js.map +1 -0
  37. package/api/types/advancedFilter.d.ts +22 -0
  38. package/api/types/advancedFilter.js +16 -0
  39. package/api/types/advancedFilter.js.map +1 -0
  40. package/api/types/apiResult.d.ts +5 -0
  41. package/api/types/apiResult.js +2 -0
  42. package/api/types/apiResult.js.map +1 -0
  43. package/api/types/auditableEntity.d.ts +10 -0
  44. package/api/types/auditableEntity.js +2 -0
  45. package/api/types/auditableEntity.js.map +1 -0
  46. package/api/types/d2ArTypes.d.ts +5 -0
  47. package/api/types/d2ArTypes.js +2 -0
  48. package/api/types/d2ArTypes.js.map +1 -0
  49. package/api/types/d2ChartTypes.d.ts +26 -0
  50. package/api/types/d2ChartTypes.js +7 -0
  51. package/api/types/d2ChartTypes.js.map +1 -0
  52. package/api/types/dbBoolean.d.ts +5 -0
  53. package/api/types/dbBoolean.js +15 -0
  54. package/api/types/dbBoolean.js.map +1 -0
  55. package/api/types/entity.d.ts +7 -0
  56. package/api/types/entity.js +2 -0
  57. package/api/types/entity.js.map +1 -0
  58. package/api/types/entityListResult.d.ts +4 -0
  59. package/api/types/entityListResult.js +2 -0
  60. package/api/types/entityListResult.js.map +1 -0
  61. package/api/types/entityResult.d.ts +4 -0
  62. package/api/types/entityResult.js +2 -0
  63. package/api/types/entityResult.js.map +1 -0
  64. package/api/types/nounGender.d.ts +5 -0
  65. package/api/types/nounGender.js +7 -0
  66. package/api/types/nounGender.js.map +1 -0
  67. package/api/util/d2Boolean.d.ts +8 -0
  68. package/api/util/d2Boolean.js +14 -0
  69. package/api/util/d2Boolean.js.map +1 -0
  70. package/api/util/d2ChartUtils.d.ts +7 -0
  71. package/api/util/d2ChartUtils.js +62 -0
  72. package/api/util/d2ChartUtils.js.map +1 -0
  73. package/api/util/edaUtils.d.ts +5 -0
  74. package/api/util/edaUtils.js +33 -0
  75. package/api/util/edaUtils.js.map +1 -0
  76. package/api/util/fileUtils.d.ts +3 -0
  77. package/api/util/fileUtils.js +22 -0
  78. package/api/util/fileUtils.js.map +1 -0
  79. package/api/validation/abstractEntityValidationUtils.d.ts +8 -0
  80. package/api/validation/abstractEntityValidationUtils.js +24 -0
  81. package/api/validation/abstractEntityValidationUtils.js.map +1 -0
  82. package/core/types/panelConfiguration.d.ts +3 -0
  83. package/core/types/panelConfiguration.js +2 -0
  84. package/core/types/panelConfiguration.js.map +1 -0
  85. package/core/util/humanizeDuration.d.ts +1 -0
  86. package/core/util/humanizeDuration.js +24 -0
  87. package/core/util/humanizeDuration.js.map +1 -0
  88. package/core/util/isStringEmpty.d.ts +1 -0
  89. package/core/util/isStringEmpty.js +4 -0
  90. package/core/util/isStringEmpty.js.map +1 -0
  91. package/core/util/locationUtils.d.ts +10 -0
  92. package/core/util/locationUtils.js +34 -0
  93. package/core/util/locationUtils.js.map +1 -0
  94. package/coreui/abstractApp.d.ts +22 -0
  95. package/coreui/abstractApp.js +49 -0
  96. package/coreui/abstractApp.js.map +1 -0
  97. package/coreui/abstractListPanel.d.ts +88 -0
  98. package/coreui/abstractListPanel.js +426 -0
  99. package/coreui/abstractListPanel.js.map +1 -0
  100. package/coreui/abstractPage.d.ts +18 -0
  101. package/coreui/abstractPage.js +104 -0
  102. package/coreui/abstractPage.js.map +1 -0
  103. package/coreui/auth/loginForm.d.ts +27 -0
  104. package/coreui/auth/loginForm.js +47 -0
  105. package/coreui/auth/loginForm.js.map +1 -0
  106. package/coreui/auth/logoutButton.d.ts +9 -0
  107. package/coreui/auth/logoutButton.js +23 -0
  108. package/coreui/auth/logoutButton.js.map +1 -0
  109. package/coreui/components/about/aboutModalDialog.d.ts +30 -0
  110. package/coreui/components/about/aboutModalDialog.js +96 -0
  111. package/coreui/components/about/aboutModalDialog.js.map +1 -0
  112. package/coreui/components/advancedFilter/advancedFilterButton.d.ts +26 -0
  113. package/coreui/components/advancedFilter/advancedFilterButton.js +115 -0
  114. package/coreui/components/advancedFilter/advancedFilterButton.js.map +1 -0
  115. package/coreui/components/advancedFilter/advancedFilterColumnDefinitions.d.ts +18 -0
  116. package/coreui/components/advancedFilter/advancedFilterColumnDefinitions.js +39 -0
  117. package/coreui/components/advancedFilter/advancedFilterColumnDefinitions.js.map +1 -0
  118. package/coreui/components/advancedFilter/advancedFilterUtils.d.ts +12 -0
  119. package/coreui/components/advancedFilter/advancedFilterUtils.js +101 -0
  120. package/coreui/components/advancedFilter/advancedFilterUtils.js.map +1 -0
  121. package/coreui/components/advancedFilter/advancedFilterValidationUtils.d.ts +11 -0
  122. package/coreui/components/advancedFilter/advancedFilterValidationUtils.js +59 -0
  123. package/coreui/components/advancedFilter/advancedFilterValidationUtils.js.map +1 -0
  124. package/coreui/components/advancedFilter/advancedFilteredGrid.d.ts +55 -0
  125. package/coreui/components/advancedFilter/advancedFilteredGrid.js +165 -0
  126. package/coreui/components/advancedFilter/advancedFilteredGrid.js.map +1 -0
  127. package/coreui/components/advancedFilter/components/advancedFilterOperatorSelect.d.ts +14 -0
  128. package/coreui/components/advancedFilter/components/advancedFilterOperatorSelect.js +35 -0
  129. package/coreui/components/advancedFilter/components/advancedFilterOperatorSelect.js.map +1 -0
  130. package/coreui/components/advancedFilter/components/advancedFilterValueInput.d.ts +23 -0
  131. package/coreui/components/advancedFilter/components/advancedFilterValueInput.js +148 -0
  132. package/coreui/components/advancedFilter/components/advancedFilterValueInput.js.map +1 -0
  133. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.d.ts +18 -0
  134. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js +82 -0
  135. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionDetailPanel.js.map +1 -0
  136. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.d.ts +23 -0
  137. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.js +58 -0
  138. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListModalDialog.js.map +1 -0
  139. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.d.ts +31 -0
  140. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js +211 -0
  141. package/coreui/components/advancedFilter/conditionList/advancedFilterConditionListPanel.js.map +1 -0
  142. package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.d.ts +15 -0
  143. package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.js +48 -0
  144. package/coreui/components/advancedFilter/filterList/advancedFilterListModalDialog.js.map +1 -0
  145. package/coreui/components/advancedFilter/filterSave/filterSaveModalDialog.d.ts +18 -0
  146. package/coreui/components/advancedFilter/filterSave/filterSaveModalDialog.js +37 -0
  147. package/coreui/components/advancedFilter/filterSave/filterSaveModalDialog.js.map +1 -0
  148. package/coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.d.ts +26 -0
  149. package/coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.js +81 -0
  150. package/coreui/components/advancedFilter/floatingColumnFilter/advancedFilterFloatingColumnComponent.js.map +1 -0
  151. package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.d.ts +32 -0
  152. package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.js +102 -0
  153. package/coreui/components/assignEntitiesToEntity/abstractEntitiesOnEntityList.js.map +1 -0
  154. package/coreui/components/changePasswordModalDialog/changePasswordModalDialog.d.ts +23 -0
  155. package/coreui/components/changePasswordModalDialog/changePasswordModalDialog.js +83 -0
  156. package/coreui/components/changePasswordModalDialog/changePasswordModalDialog.js.map +1 -0
  157. package/coreui/components/colorTag/colorTag.d.ts +9 -0
  158. package/coreui/components/colorTag/colorTag.js +17 -0
  159. package/coreui/components/colorTag/colorTag.js.map +1 -0
  160. package/coreui/components/d2Chart/d2ChartOptions.d.ts +3 -0
  161. package/coreui/components/d2Chart/d2ChartOptions.js +73 -0
  162. package/coreui/components/d2Chart/d2ChartOptions.js.map +1 -0
  163. package/coreui/components/d2Chart/d2ChartPanel.d.ts +48 -0
  164. package/coreui/components/d2Chart/d2ChartPanel.js +325 -0
  165. package/coreui/components/d2Chart/d2ChartPanel.js.map +1 -0
  166. package/coreui/components/d2Chart/d2ChartTablePanel.d.ts +31 -0
  167. package/coreui/components/d2Chart/d2ChartTablePanel.js +121 -0
  168. package/coreui/components/d2Chart/d2ChartTablePanel.js.map +1 -0
  169. package/coreui/components/d2Chart/d2ChartToolboxPanel.d.ts +27 -0
  170. package/coreui/components/d2Chart/d2ChartToolboxPanel.js +116 -0
  171. package/coreui/components/d2Chart/d2ChartToolboxPanel.js.map +1 -0
  172. package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.d.ts +51 -0
  173. package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js +169 -0
  174. package/coreui/components/edaManager/abstract/edaManagerAbstractPanel.js.map +1 -0
  175. package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.d.ts +32 -0
  176. package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.js +87 -0
  177. package/coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.js.map +1 -0
  178. package/coreui/components/edaManager/abstract/edaManagerAbstractVectorList.d.ts +24 -0
  179. package/coreui/components/edaManager/abstract/edaManagerAbstractVectorList.js +98 -0
  180. package/coreui/components/edaManager/abstract/edaManagerAbstractVectorList.js.map +1 -0
  181. package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.d.ts +19 -0
  182. package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js +52 -0
  183. package/coreui/components/edaManager/compactPanel/edaManagerCompactPanel.js.map +1 -0
  184. package/coreui/components/edaManager/compactPanel/initialLayout.d.ts +2 -0
  185. package/coreui/components/edaManager/compactPanel/initialLayout.js +26 -0
  186. package/coreui/components/edaManager/compactPanel/initialLayout.js.map +1 -0
  187. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.d.ts +38 -0
  188. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js +182 -0
  189. package/coreui/components/edaManager/components/detail/components/edaVectorMassChangeButton.js.map +1 -0
  190. package/coreui/components/edaManager/components/detail/edaVectorDetailModalDialog.d.ts +23 -0
  191. package/coreui/components/edaManager/components/detail/edaVectorDetailModalDialog.js +122 -0
  192. package/coreui/components/edaManager/components/detail/edaVectorDetailModalDialog.js.map +1 -0
  193. package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.d.ts +16 -0
  194. package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.js +63 -0
  195. package/coreui/components/edaManager/components/detail/edaVectorDetailTablePanel.js.map +1 -0
  196. package/coreui/components/edaManager/components/detail/initialLayout.d.ts +2 -0
  197. package/coreui/components/edaManager/components/detail/initialLayout.js +29 -0
  198. package/coreui/components/edaManager/components/detail/initialLayout.js.map +1 -0
  199. package/coreui/components/edaManager/components/edaManagerTablePanel.d.ts +22 -0
  200. package/coreui/components/edaManager/components/edaManagerTablePanel.js +80 -0
  201. package/coreui/components/edaManager/components/edaManagerTablePanel.js.map +1 -0
  202. package/coreui/components/edaManager/components/edaManagerTimePanel.d.ts +22 -0
  203. package/coreui/components/edaManager/components/edaManagerTimePanel.js +38 -0
  204. package/coreui/components/edaManager/components/edaManagerTimePanel.js.map +1 -0
  205. package/coreui/components/edaManager/components/edaManagerVectorList.d.ts +11 -0
  206. package/coreui/components/edaManager/components/edaManagerVectorList.js +35 -0
  207. package/coreui/components/edaManager/components/edaManagerVectorList.js.map +1 -0
  208. package/coreui/components/edaManager/components/edaStepSelect/edaStepConstants.d.ts +0 -0
  209. package/coreui/components/edaManager/components/edaStepSelect/edaStepConstants.js +2 -0
  210. package/coreui/components/edaManager/components/edaStepSelect/edaStepConstants.js.map +1 -0
  211. package/coreui/components/edaManager/components/edaStepSelect/edaStepSelect.d.ts +13 -0
  212. package/coreui/components/edaManager/components/edaStepSelect/edaStepSelect.js +14 -0
  213. package/coreui/components/edaManager/components/edaStepSelect/edaStepSelect.js.map +1 -0
  214. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.d.ts +10 -0
  215. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.js +20 -0
  216. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelect.js.map +1 -0
  217. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.d.ts +13 -0
  218. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js +22 -0
  219. package/coreui/components/edaManager/components/edaVectorSelect/edaVectorSelectModalDialog.js.map +1 -0
  220. package/coreui/components/edaManager/constants.d.ts +2 -0
  221. package/coreui/components/edaManager/constants.js +11 -0
  222. package/coreui/components/edaManager/constants.js.map +1 -0
  223. package/coreui/components/edaManager/panel/edaManagerPanel.d.ts +13 -0
  224. package/coreui/components/edaManager/panel/edaManagerPanel.js +32 -0
  225. package/coreui/components/edaManager/panel/edaManagerPanel.js.map +1 -0
  226. package/coreui/components/edaManager/panel/initialLayout.d.ts +2 -0
  227. package/coreui/components/edaManager/panel/initialLayout.js +39 -0
  228. package/coreui/components/edaManager/panel/initialLayout.js.map +1 -0
  229. package/coreui/components/editor/abstractEntityConfigPanel.d.ts +82 -0
  230. package/coreui/components/editor/abstractEntityConfigPanel.js +307 -0
  231. package/coreui/components/editor/abstractEntityConfigPanel.js.map +1 -0
  232. package/coreui/components/filePicker/filePicker.d.ts +20 -0
  233. package/coreui/components/filePicker/filePicker.js +57 -0
  234. package/coreui/components/filePicker/filePicker.js.map +1 -0
  235. package/coreui/components/grid/auditEntityRowStyleRules.d.ts +3 -0
  236. package/coreui/components/grid/auditEntityRowStyleRules.js +34 -0
  237. package/coreui/components/grid/auditEntityRowStyleRules.js.map +1 -0
  238. package/coreui/components/grid/detailHeaderPanel.d.ts +13 -0
  239. package/coreui/components/grid/detailHeaderPanel.js +29 -0
  240. package/coreui/components/grid/detailHeaderPanel.js.map +1 -0
  241. package/coreui/components/grid/standardColumns.d.ts +14 -0
  242. package/coreui/components/grid/standardColumns.js +150 -0
  243. package/coreui/components/grid/standardColumns.js.map +1 -0
  244. package/coreui/components/history/entityHistoryListPanel.d.ts +38 -0
  245. package/coreui/components/history/entityHistoryListPanel.js +154 -0
  246. package/coreui/components/history/entityHistoryListPanel.js.map +1 -0
  247. package/coreui/components/languageSelect/languageSelect.d.ts +17 -0
  248. package/coreui/components/languageSelect/languageSelect.js +28 -0
  249. package/coreui/components/languageSelect/languageSelect.js.map +1 -0
  250. package/coreui/components/modalWithIcon/openModalWithIcon.d.ts +8 -0
  251. package/coreui/components/modalWithIcon/openModalWithIcon.js +30 -0
  252. package/coreui/components/modalWithIcon/openModalWithIcon.js.map +1 -0
  253. package/coreui/components/select/abstractSelect.d.ts +57 -0
  254. package/coreui/components/select/abstractSelect.js +233 -0
  255. package/coreui/components/select/abstractSelect.js.map +1 -0
  256. package/coreui/components/select/abstractSelectModalDialog.d.ts +33 -0
  257. package/coreui/components/select/abstractSelectModalDialog.js +110 -0
  258. package/coreui/components/select/abstractSelectModalDialog.js.map +1 -0
  259. package/coreui/components/select/selectUtils.d.ts +4 -0
  260. package/coreui/components/select/selectUtils.js +14 -0
  261. package/coreui/components/select/selectUtils.js.map +1 -0
  262. package/coreui/components/titleWithCodePanel/titleWithCodePanel.d.ts +10 -0
  263. package/coreui/components/titleWithCodePanel/titleWithCodePanel.js +20 -0
  264. package/coreui/components/titleWithCodePanel/titleWithCodePanel.js.map +1 -0
  265. package/coreui/icons/icons.d.ts +3 -0
  266. package/coreui/icons/icons.js +18 -0
  267. package/coreui/icons/icons.js.map +1 -0
  268. package/coreui/layout/contextToolbar.d.ts +15 -0
  269. package/coreui/layout/contextToolbar.js +41 -0
  270. package/coreui/layout/contextToolbar.js.map +1 -0
  271. package/coreui/style/index.less +165 -0
  272. package/coreui/style/login.css +214 -0
  273. package/package.json +65 -0
  274. package/tsconfig.json +38 -0
@@ -0,0 +1,116 @@
1
+ import React from "react";
2
+ import { CalendarOutlined, FullscreenOutlined, IssuesCloseOutlined, ZoomInOutlined, ZoomOutOutlined } from "@ant-design/icons";
3
+ import i18n from "d2core/i18n/i18n";
4
+ import { Popover } from "antd";
5
+ import { CHART_CALENDAR_HOLIDAY_COLOR, CHART_CALENDAR_SATURDAY_COLOR, CHART_CALENDAR_SUNDAY_COLOR } from "../../../api/constants/d2ChartConstants";
6
+ import { PRIMARY_COLOR, WARNING_COLOR } from "../../../api/constants/constants";
7
+ import dayjs from "d2core/dayjs";
8
+ import { LocaleHolder } from "d2core/i18n/localeHolder";
9
+ export default class D2ChartToolboxPanel extends React.Component {
10
+ constructor(props) {
11
+ super(props);
12
+ this.state = {
13
+ zoomEnabled: false,
14
+ };
15
+ }
16
+ renderZoomInIcon(iconMargin) {
17
+ return (React.createElement(ZoomInOutlined, { style: {
18
+ cursor: "pointer",
19
+ margin: `0px ${iconMargin}px`,
20
+ color: this.state.zoomEnabled ? "#2998ff" : "rgba(0, 0, 0, 0.5)",
21
+ }, title: i18n(`${this.state.zoomEnabled ? "Deactivate" : "Activate"} Zoom`), onClick: () => {
22
+ const zoomEnabled = !this.state.zoomEnabled;
23
+ this.setState({ zoomEnabled: zoomEnabled });
24
+ this.props.onZoomControlSwitch?.(zoomEnabled);
25
+ } }));
26
+ }
27
+ renderZoomOutIcon(iconMargin) {
28
+ return (React.createElement(ZoomOutOutlined, { style: {
29
+ cursor: "pointer",
30
+ margin: `0px ${iconMargin}px`,
31
+ }, title: i18n("Zoom Reset"), onClick: () => {
32
+ this.props.onZoomReset?.();
33
+ } }));
34
+ }
35
+ renderMissingDataIcon(iconMargin) {
36
+ const missingData = this.props.missingData;
37
+ const icon = React.createElement(IssuesCloseOutlined, { style: {
38
+ cursor: "pointer",
39
+ margin: `0px ${iconMargin}px`,
40
+ color: this.props.missingDataVisible ? (missingData.length > 0 ? WARNING_COLOR : PRIMARY_COLOR) : "rgba(0, 0, 0, 0.5)",
41
+ }, title: i18n(`${this.props.missingDataVisible ? "Hide" : "Show"} Missing Data`), onClick: () => {
42
+ this.props.onSwitchMissingData?.();
43
+ } });
44
+ if (this.props.missingDataVisible) {
45
+ return (React.createElement(Popover, { mouseEnterDelay: 0.8, placement: "topRight", title: React.createElement("span", null,
46
+ React.createElement(CalendarOutlined, null),
47
+ " ",
48
+ i18n("Missing Data Periods")), content: React.createElement("div", { style: { width: 220, maxHeight: 400, overflow: "auto", fontSize: 13 } },
49
+ missingData.length === 0 && React.createElement("span", null, i18n("No missing data")),
50
+ missingData.map((value, index) => {
51
+ const from = dayjs(value[0].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));
52
+ const to = dayjs(value[1].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));
53
+ return React.createElement("div", { key: index },
54
+ from,
55
+ " - ",
56
+ to);
57
+ })) }, icon));
58
+ }
59
+ else {
60
+ return icon;
61
+ }
62
+ }
63
+ renderFullScreenIcon(iconMargin) {
64
+ return (React.createElement(FullscreenOutlined, { style: {
65
+ cursor: "pointer",
66
+ margin: `0px ${iconMargin}px`,
67
+ }, title: i18n("Fullscreen"), onClick: () => {
68
+ this.props.onFullScreen?.();
69
+ } }));
70
+ }
71
+ renderCalendarIcon(iconMargin) {
72
+ return (React.createElement(Popover, { mouseEnterDelay: 0.8, content: React.createElement("div", { style: { width: 92, padding: "3px 4px 2px" } },
73
+ React.createElement("div", { style: {
74
+ backgroundColor: CHART_CALENDAR_SATURDAY_COLOR,
75
+ textAlign: "center",
76
+ marginBottom: 2
77
+ } },
78
+ React.createElement("span", { style: { color: "#000" } }, i18n("Saturday"))),
79
+ React.createElement("div", { style: {
80
+ backgroundColor: CHART_CALENDAR_SUNDAY_COLOR,
81
+ textAlign: "center",
82
+ marginBottom: 2
83
+ } },
84
+ React.createElement("span", { style: { color: "#000" } }, i18n("Sunday"))),
85
+ React.createElement("div", { style: { backgroundColor: CHART_CALENDAR_HOLIDAY_COLOR, textAlign: "center" } },
86
+ React.createElement("span", { style: { color: "#000" } }, i18n("Holiday")))) },
87
+ React.createElement(CalendarOutlined, { style: {
88
+ cursor: "pointer",
89
+ margin: `0px ${iconMargin}px`,
90
+ color: this.props.calendarDataVisible ? "#2998ff" : "rgba(0, 0, 0, 0.5)",
91
+ }, title: i18n(`${this.props.calendarDataVisible ? "Hide" : "Show"} Calendar Data`), onClick: () => {
92
+ this.props.onSwitchCalendarData?.();
93
+ } })));
94
+ }
95
+ render() {
96
+ const iconMargin = 2;
97
+ return (React.createElement("div", { style: {
98
+ position: "absolute",
99
+ top: 1,
100
+ right: 0,
101
+ fontSize: this.props.compact ? 18 : 28,
102
+ color: "rgba(0, 0, 0, 0.5)",
103
+ display: "flex",
104
+ justifyContent: "end",
105
+ margin: this.props.compact ? "4px 4px 0px" : "0px 32px",
106
+ backgroundColor: "white",
107
+ zIndex: 1,
108
+ } },
109
+ this.renderZoomInIcon(iconMargin),
110
+ this.renderZoomOutIcon(iconMargin),
111
+ this.props.showCalendarIcon && this.renderCalendarIcon(iconMargin),
112
+ this.renderMissingDataIcon(iconMargin),
113
+ this.props.compact && this.renderFullScreenIcon(iconMargin)));
114
+ }
115
+ }
116
+ //# sourceMappingURL=d2ChartToolboxPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d2ChartToolboxPanel.js","sourceRoot":"","sources":["../../../../../coreui/components/d2Chart/d2ChartToolboxPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {\r\n CalendarOutlined,\r\n FullscreenOutlined,\r\n IssuesCloseOutlined,\r\n ZoomInOutlined,\r\n ZoomOutOutlined\r\n} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {Popover} from \"antd\";\r\nimport {\r\n CHART_CALENDAR_HOLIDAY_COLOR,\r\n CHART_CALENDAR_SATURDAY_COLOR,\r\n CHART_CALENDAR_SUNDAY_COLOR\r\n} from \"../../../api/constants/d2ChartConstants\";\r\nimport {PRIMARY_COLOR, WARNING_COLOR} from \"../../../api/constants/constants\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {MarkAreaData} from \"../../../api/types/d2ChartTypes\";\r\n\r\ninterface ChartToolboxPanelProps {\r\n missingData: MarkAreaData[][]\r\n calendarDataVisible?: boolean\r\n missingDataVisible?: boolean\r\n showCalendarIcon?: boolean\r\n compact?: boolean\r\n\r\n onZoomControlSwitch(zoomEnabled: boolean): void\r\n\r\n onZoomReset(): void\r\n\r\n onFullScreen?(): void\r\n\r\n onSwitchCalendarData?(): void\r\n\r\n onSwitchMissingData?(): void\r\n}\r\n\r\ninterface ChartToolboxPanelState {\r\n zoomEnabled: boolean\r\n}\r\n\r\nexport default class D2ChartToolboxPanel extends React.Component<ChartToolboxPanelProps, ChartToolboxPanelState> {\r\n constructor(props: Readonly<ChartToolboxPanelProps>) {\r\n super(props);\r\n\r\n this.state = {\r\n zoomEnabled: false,\r\n }\r\n }\r\n\r\n private renderZoomInIcon(iconMargin: number) {\r\n return (\r\n <ZoomInOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.state.zoomEnabled ? \"#2998ff\" : \"rgba(0, 0, 0, 0.5)\",\r\n }}\r\n title={i18n(`${this.state.zoomEnabled ? \"Deactivate\" : \"Activate\"} Zoom`)}\r\n onClick={() => {\r\n const zoomEnabled = !this.state.zoomEnabled\r\n this.setState({zoomEnabled: zoomEnabled});\r\n this.props.onZoomControlSwitch?.(zoomEnabled);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderZoomOutIcon(iconMargin: number) {\r\n return (\r\n <ZoomOutOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n }}\r\n title={i18n(\"Zoom Reset\")}\r\n onClick={() => {\r\n this.props.onZoomReset?.();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderMissingDataIcon(iconMargin: number) {\r\n const missingData = this.props.missingData;\r\n\r\n const icon =\r\n <IssuesCloseOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.props.missingDataVisible ? (missingData.length > 0 ? WARNING_COLOR : PRIMARY_COLOR) : \"rgba(0, 0, 0, 0.5)\",\r\n }}\r\n title={i18n(`${this.props.missingDataVisible ? \"Hide\" : \"Show\"} Missing Data`)}\r\n onClick={() => {\r\n this.props.onSwitchMissingData?.();\r\n }}\r\n />\r\n\r\n if (this.props.missingDataVisible) {\r\n return (\r\n <Popover\r\n mouseEnterDelay={0.8}\r\n placement=\"topRight\"\r\n title={<span><CalendarOutlined/> {i18n(\"Missing Data Periods\")}</span>}\r\n content={\r\n <div style={{width: 220, maxHeight: 400, overflow: \"auto\", fontSize: 13}}>\r\n {missingData.length === 0 && <span>{i18n(\"No missing data\")}</span>}\r\n {\r\n missingData.map((value, index) => {\r\n const from = dayjs(value[0].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));\r\n const to = dayjs(value[1].xAxis).format(LocaleHolder.getDateTimeFormat(true, false, false));\r\n\r\n return <div key={index}>{from} - {to}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n >\r\n {icon}\r\n </Popover>\r\n );\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n private renderFullScreenIcon(iconMargin: number) {\r\n return (\r\n <FullscreenOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n }}\r\n title={i18n(\"Fullscreen\")}\r\n onClick={() => {\r\n this.props.onFullScreen?.();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderCalendarIcon(iconMargin: number) {\r\n return (\r\n <Popover\r\n mouseEnterDelay={0.8}\r\n content={\r\n <div style={{width: 92, padding: \"3px 4px 2px\"}}>\r\n <div style={{\r\n backgroundColor: CHART_CALENDAR_SATURDAY_COLOR,\r\n textAlign: \"center\",\r\n marginBottom: 2\r\n }}>\r\n <span style={{color: \"#000\"}}>{i18n(\"Saturday\")}</span>\r\n </div>\r\n <div style={{\r\n backgroundColor: CHART_CALENDAR_SUNDAY_COLOR,\r\n textAlign: \"center\",\r\n marginBottom: 2\r\n }}>\r\n <span style={{color: \"#000\"}}>{i18n(\"Sunday\")}</span>\r\n </div>\r\n <div style={{backgroundColor: CHART_CALENDAR_HOLIDAY_COLOR, textAlign: \"center\"}}>\r\n <span style={{color: \"#000\"}}>{i18n(\"Holiday\")}</span>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <CalendarOutlined\r\n style={{\r\n cursor: \"pointer\",\r\n margin: `0px ${iconMargin}px`,\r\n color: this.props.calendarDataVisible ? \"#2998ff\" : \"rgba(0, 0, 0, 0.5)\",\r\n }}\r\n title={i18n(`${this.props.calendarDataVisible ? \"Hide\" : \"Show\"} Calendar Data`)}\r\n onClick={() => {\r\n this.props.onSwitchCalendarData?.();\r\n }}\r\n />\r\n </Popover>\r\n );\r\n }\r\n\r\n render() {\r\n const iconMargin = 2;\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n top: 1,\r\n right: 0,\r\n fontSize: this.props.compact ? 18 : 28,\r\n color: \"rgba(0, 0, 0, 0.5)\",\r\n display: \"flex\",\r\n justifyContent: \"end\",\r\n margin: this.props.compact ? \"4px 4px 0px\" : \"0px 32px\",\r\n backgroundColor: \"white\",\r\n zIndex: 1,\r\n }}\r\n >\r\n {this.renderZoomInIcon(iconMargin)}\r\n {this.renderZoomOutIcon(iconMargin)}\r\n {this.props.showCalendarIcon && this.renderCalendarIcon(iconMargin)}\r\n {this.renderMissingDataIcon(iconMargin)}\r\n {this.props.compact && this.renderFullScreenIcon(iconMargin)}\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
@@ -0,0 +1,51 @@
1
+ import React from "react";
2
+ import { EdaApi, EdaManagerRecord, EdaVector, EdaStepEnum } from "../../../../api/edaApi";
3
+ import { EdaManagerTimePanelConfiguration } from "../components/edaManagerTimePanel";
4
+ import * as FlexLayout from "flexlayout-react";
5
+ import { Props } from "../../d2Chart/d2ChartPanel";
6
+ import { AdvancedFilterApi } from "../../../../api/advancedFilterApi";
7
+ export interface EdaManagerFilterToSave {
8
+ version: number;
9
+ currentVectors: EdaVector[];
10
+ timeFrom: string;
11
+ timeTo: string;
12
+ selectedStep: EdaStepEnum;
13
+ autoRefresh: boolean;
14
+ }
15
+ export interface EdaManagerFilter {
16
+ currentVectors: EdaVector[];
17
+ timePanelConfiguration: EdaManagerTimePanelConfiguration;
18
+ }
19
+ export interface EdaManagerAbstractPanelProps extends Omit<Props, "d2ChartSeries" | "d2ChartRecords" | "d2ChartCalendarRecords" | "loading"> {
20
+ style?: React.CSSProperties;
21
+ edaApi: EdaApi;
22
+ advancedFilterApi: AdvancedFilterApi;
23
+ onVectorsLoaded?(loadedVectors: EdaManagerRecord[]): void;
24
+ }
25
+ export interface EdaManagerAbstractPanelState {
26
+ layoutModel: FlexLayout.Model;
27
+ loadedVectors: EdaManagerRecord[];
28
+ loadedCalendarVector?: EdaManagerRecord[];
29
+ loading: boolean;
30
+ currentFilter: EdaManagerFilter;
31
+ loadedDataFilter: EdaManagerFilter;
32
+ }
33
+ export default abstract class EdaManagerAbstractPanel<P extends EdaManagerAbstractPanelProps, S extends EdaManagerAbstractPanelState> extends React.Component<P, S> {
34
+ private edaManagerTablePanel;
35
+ private edaManagerChartPanel;
36
+ protected get initialFilter(): EdaManagerFilter;
37
+ protected initialState: Omit<EdaManagerAbstractPanelState, "layoutModel">;
38
+ protected constructor(props: Readonly<P>);
39
+ componentDidMount(): void;
40
+ protected saveFilter(): void;
41
+ getFilterNameToSave(): string | undefined;
42
+ protected getActiveVectors(): EdaVector[];
43
+ protected onReload(): void;
44
+ onLoadVectors(): Promise<void>;
45
+ private onLoadVector;
46
+ private renderTimePanel;
47
+ protected get edaManagerChartPanelCompact(): boolean;
48
+ protected get tabWrapperStyle(): React.CSSProperties;
49
+ protected flexLayoutFactory(node: FlexLayout.TabNode): React.ReactNode;
50
+ render(): React.JSX.Element;
51
+ }
@@ -0,0 +1,169 @@
1
+ import React from "react";
2
+ import { EdaStepEnum } from "../../../../api/edaApi";
3
+ import EdaManagerTimePanel from "../components/edaManagerTimePanel";
4
+ import * as FlexLayout from "flexlayout-react";
5
+ import dayjs from "d2core/dayjs";
6
+ import cloneDeep from "lodash/cloneDeep";
7
+ import debounce from "lodash/debounce";
8
+ import EdaManagerTablePanel from "../components/edaManagerTablePanel";
9
+ import D2ChartPanel from "../../d2Chart/d2ChartPanel";
10
+ import { isEqual, omit } from "lodash";
11
+ const CONFIGURATION_VERSION = 2;
12
+ export default class EdaManagerAbstractPanel extends React.Component {
13
+ get initialFilter() {
14
+ return {
15
+ currentVectors: [],
16
+ timePanelConfiguration: {
17
+ selectedTimeFrom: dayjs().subtract(1, "week").startOf("day"),
18
+ selectedTimeTo: dayjs().subtract(1, "week").startOf("day"),
19
+ selectedStep: EdaStepEnum.DEFAULT_VALUE,
20
+ autoRefresh: false,
21
+ }
22
+ };
23
+ }
24
+ constructor(props) {
25
+ super(props);
26
+ this.edaManagerTablePanel = null;
27
+ this.edaManagerChartPanel = null;
28
+ this.initialState = {
29
+ loadedVectors: [],
30
+ loading: false,
31
+ currentFilter: this.initialFilter,
32
+ loadedDataFilter: cloneDeep(this.initialFilter),
33
+ };
34
+ this.onLoadVectors = debounce(this.onLoadVectors.bind(this), 500);
35
+ this.flexLayoutFactory = this.flexLayoutFactory.bind(this);
36
+ }
37
+ componentDidMount() {
38
+ const filterNameToSave = this.getFilterNameToSave();
39
+ if (filterNameToSave) {
40
+ const item = localStorage.getItem(filterNameToSave);
41
+ if (item) {
42
+ try {
43
+ const savedFilter = JSON.parse(item);
44
+ if (savedFilter.version === CONFIGURATION_VERSION) {
45
+ const filter = {
46
+ currentVectors: savedFilter.currentVectors,
47
+ timePanelConfiguration: {
48
+ selectedTimeFrom: dayjs(savedFilter.timeFrom),
49
+ selectedTimeTo: dayjs(savedFilter.timeTo),
50
+ selectedStep: savedFilter.selectedStep,
51
+ autoRefresh: savedFilter.autoRefresh,
52
+ }
53
+ };
54
+ this.setState({ currentFilter: filter }, () => this.onLoadVectors());
55
+ }
56
+ }
57
+ catch {
58
+ }
59
+ }
60
+ }
61
+ }
62
+ saveFilter() {
63
+ const filterNameToSave = this.getFilterNameToSave();
64
+ if (filterNameToSave) {
65
+ const filterToSave = {
66
+ version: CONFIGURATION_VERSION,
67
+ currentVectors: this.state.currentFilter.currentVectors,
68
+ timeFrom: this.state.currentFilter.timePanelConfiguration.selectedTimeFrom?.toString() ?? "",
69
+ timeTo: this.state.currentFilter.timePanelConfiguration.selectedTimeTo?.toString() ?? "",
70
+ selectedStep: this.state.currentFilter.timePanelConfiguration.selectedStep,
71
+ autoRefresh: this.state.currentFilter.timePanelConfiguration.autoRefresh,
72
+ };
73
+ localStorage.setItem(filterNameToSave, JSON.stringify(filterToSave));
74
+ }
75
+ }
76
+ getFilterNameToSave() {
77
+ return undefined;
78
+ }
79
+ getActiveVectors() {
80
+ return this.state.currentFilter.currentVectors.filter(vector => vector.active);
81
+ }
82
+ onReload() {
83
+ this.edaManagerTablePanel?.onReload();
84
+ this.edaManagerChartPanel?.onReload();
85
+ }
86
+ async onLoadVectors() {
87
+ const activeVectors = this.getActiveVectors();
88
+ this.setState({ loading: true });
89
+ const loadedVectors = await this.props.edaApi.loadVectors(activeVectors, this.state.currentFilter.timePanelConfiguration.selectedTimeFrom, this.state.currentFilter.timePanelConfiguration.selectedTimeTo, this.state.currentFilter.timePanelConfiguration.selectedStep);
90
+ const loadedCalendarVector = await this.props.edaApi.loadCalendarVector(this.state.currentFilter.timePanelConfiguration.selectedTimeFrom, this.state.currentFilter.timePanelConfiguration.selectedTimeTo);
91
+ this.setState({
92
+ loading: false,
93
+ loadedVectors: loadedVectors,
94
+ loadedCalendarVector: loadedCalendarVector,
95
+ loadedDataFilter: cloneDeep(this.state.currentFilter),
96
+ }, () => this.onReload());
97
+ this.props.onVectorsLoaded?.(loadedVectors);
98
+ }
99
+ async onLoadVector(code) {
100
+ const activeVectors = this.getActiveVectors();
101
+ const currentVectorIndex = activeVectors.findIndex(value => value.code === code);
102
+ if (currentVectorIndex >= 0) {
103
+ const currentVector = activeVectors[currentVectorIndex];
104
+ const loadedVectors = this.state.loadedVectors;
105
+ const loadedVector = await this.props.edaApi.loadVectors([currentVector], this.state.currentFilter.timePanelConfiguration.selectedTimeFrom, this.state.currentFilter.timePanelConfiguration.selectedTimeTo, this.state.currentFilter.timePanelConfiguration.selectedStep);
106
+ loadedVectors.forEach((value, index) => {
107
+ value[`col${currentVectorIndex}`] = loadedVector[index].col0;
108
+ });
109
+ this.setState({ loadedVectors: loadedVectors });
110
+ this.edaManagerTablePanel?.refreshCells();
111
+ this.edaManagerChartPanel?.onReload();
112
+ }
113
+ }
114
+ renderTimePanel() {
115
+ const pathsToOmit = ["timePanelConfiguration.autoRefresh"];
116
+ this.state.currentFilter.currentVectors.forEach((_, index) => {
117
+ pathsToOmit.push(`currentVectors[${index}].target`);
118
+ });
119
+ const filterChanged = !isEqual(omit(cloneDeep(this.state.currentFilter), pathsToOmit), omit(cloneDeep(this.state.loadedDataFilter), pathsToOmit));
120
+ return (React.createElement(EdaManagerTimePanel, { loading: this.state.loading, configuration: this.state.currentFilter.timePanelConfiguration, filterChanged: filterChanged, onChangeConfiguration: configuration => {
121
+ const currentFilter = this.state.currentFilter;
122
+ const timePanelConfiguration = currentFilter.timePanelConfiguration;
123
+ Object.assign(timePanelConfiguration, configuration);
124
+ this.setState({ currentFilter: currentFilter }, () => {
125
+ this.saveFilter();
126
+ if (timePanelConfiguration.autoRefresh) {
127
+ this.onLoadVectors();
128
+ }
129
+ });
130
+ }, onReload: () => {
131
+ this.onLoadVectors();
132
+ } }));
133
+ }
134
+ get edaManagerChartPanelCompact() {
135
+ return false;
136
+ }
137
+ get tabWrapperStyle() {
138
+ return { padding: "8px 12px" };
139
+ }
140
+ flexLayoutFactory(node) {
141
+ const component = node.getComponent();
142
+ const activeVectors = this.getActiveVectors();
143
+ if (component === "table") {
144
+ return (React.createElement(EdaManagerTablePanel, { style: this.tabWrapperStyle, ref: component => this.edaManagerTablePanel = component, edaApi: this.props.edaApi, timePanel: this.renderTimePanel(), currentVectors: activeVectors, loadedVectors: this.state.loadedVectors, loading: this.state.loading, onReloadVectorData: code => {
145
+ this.onLoadVector(code);
146
+ } }));
147
+ }
148
+ else if (component === "chart") {
149
+ const d2ChartSeries = activeVectors.map(value => {
150
+ return {
151
+ id: value.id,
152
+ code: value.code,
153
+ name: value.name,
154
+ colorIndex: value.colorIndex,
155
+ lineStyle: value.lineStyle,
156
+ };
157
+ });
158
+ return (React.createElement("div", { style: Object.assign({ display: "flex", flexDirection: "column", height: "100%" }, this.tabWrapperStyle) },
159
+ this.renderTimePanel(),
160
+ React.createElement(D2ChartPanel, { ref: component => this.edaManagerChartPanel = component, d2ChartSeries: d2ChartSeries, d2ChartRecords: this.state.loadedVectors, d2ChartCalendarRecords: this.state.loadedCalendarVector, loading: this.state.loading, compact: this.edaManagerChartPanelCompact, markArea: this.props.markArea, tableHeight: this.props.tableHeight, tableWrapperStyle: this.props.tableWrapperStyle })));
161
+ }
162
+ return React.createElement("span", null, component);
163
+ }
164
+ render() {
165
+ return (React.createElement("div", { style: { minWidth: 100, minHeight: 500, ...this.props.style } },
166
+ React.createElement(FlexLayout.Layout, { model: this.state.layoutModel, onModelChange: model => this.setState({ layoutModel: model }), factory: this.flexLayoutFactory })));
167
+ }
168
+ }
169
+ //# sourceMappingURL=edaManagerAbstractPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edaManagerAbstractPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/abstract/edaManagerAbstractPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {EdaApi, EdaManagerRecord, EdaVector, EdaStepEnum} from \"../../../../api/edaApi\";\r\nimport EdaManagerTimePanel, {EdaManagerTimePanelConfiguration} from \"../components/edaManagerTimePanel\";\r\nimport * as FlexLayout from \"flexlayout-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport debounce from \"lodash/debounce\";\r\nimport EdaManagerTablePanel from \"../components/edaManagerTablePanel\";\r\nimport D2ChartPanel, {Props} from \"../../d2Chart/d2ChartPanel\";\r\nimport {isEqual, omit} from \"lodash\";\r\nimport {AdvancedFilterApi} from \"../../../../api/advancedFilterApi\";\r\nimport {D2ChartSeriesItem} from \"../../../../api/types/d2ChartTypes\";\r\n\r\nconst CONFIGURATION_VERSION = 2;\r\n\r\nexport interface EdaManagerFilterToSave {\r\n version: number\r\n currentVectors: EdaVector[]\r\n timeFrom: string\r\n timeTo: string;\r\n\r\n selectedStep: EdaStepEnum\r\n autoRefresh: boolean\r\n}\r\n\r\nexport interface EdaManagerFilter {\r\n currentVectors: EdaVector[]\r\n timePanelConfiguration: EdaManagerTimePanelConfiguration\r\n}\r\n\r\nexport interface EdaManagerAbstractPanelProps extends Omit<Props, \"d2ChartSeries\" | \"d2ChartRecords\" | \"d2ChartCalendarRecords\" | \"loading\"> {\r\n style?: React.CSSProperties\r\n\r\n edaApi: EdaApi\r\n advancedFilterApi: AdvancedFilterApi\r\n\r\n onVectorsLoaded?(loadedVectors: EdaManagerRecord[]): void\r\n}\r\n\r\nexport interface EdaManagerAbstractPanelState {\r\n layoutModel: FlexLayout.Model\r\n loadedVectors: EdaManagerRecord[]\r\n loadedCalendarVector?: EdaManagerRecord[]\r\n loading: boolean\r\n\r\n currentFilter: EdaManagerFilter\r\n loadedDataFilter: EdaManagerFilter\r\n}\r\n\r\nexport default abstract class EdaManagerAbstractPanel<P extends EdaManagerAbstractPanelProps, S extends EdaManagerAbstractPanelState> extends React.Component<P, S> {\r\n private edaManagerTablePanel: EdaManagerTablePanel | null = null;\r\n private edaManagerChartPanel: D2ChartPanel | null = null;\r\n\r\n protected get initialFilter(): EdaManagerFilter {\r\n return {\r\n currentVectors: [],\r\n timePanelConfiguration: {\r\n selectedTimeFrom: dayjs().subtract(1, \"week\").startOf(\"day\"),\r\n selectedTimeTo: dayjs().subtract(1, \"week\").startOf(\"day\"),\r\n selectedStep: EdaStepEnum.DEFAULT_VALUE,\r\n autoRefresh: false,\r\n }\r\n }\r\n }\r\n\r\n protected initialState: Omit<EdaManagerAbstractPanelState, \"layoutModel\"> = {\r\n loadedVectors: [],\r\n loading: false,\r\n\r\n currentFilter: this.initialFilter,\r\n loadedDataFilter: cloneDeep(this.initialFilter),\r\n }\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n // @ts-ignore\r\n this.onLoadVectors = debounce(this.onLoadVectors.bind(this), 500);\r\n this.flexLayoutFactory = this.flexLayoutFactory.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const filterNameToSave = this.getFilterNameToSave();\r\n\r\n if (filterNameToSave) {\r\n const item = localStorage.getItem(filterNameToSave);\r\n\r\n if (item) {\r\n try {\r\n const savedFilter: EdaManagerFilterToSave = JSON.parse(item);\r\n if (savedFilter.version === CONFIGURATION_VERSION) {\r\n const filter: EdaManagerFilter = {\r\n currentVectors: savedFilter.currentVectors,\r\n timePanelConfiguration: {\r\n selectedTimeFrom: dayjs(savedFilter.timeFrom),\r\n selectedTimeTo: dayjs(savedFilter.timeTo),\r\n selectedStep: savedFilter.selectedStep,\r\n autoRefresh: savedFilter.autoRefresh,\r\n }\r\n }\r\n\r\n this.setState({currentFilter: filter}, () => this.onLoadVectors());\r\n }\r\n } catch {\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected saveFilter() {\r\n const filterNameToSave = this.getFilterNameToSave();\r\n\r\n if (filterNameToSave) {\r\n const filterToSave: EdaManagerFilterToSave = {\r\n version: CONFIGURATION_VERSION,\r\n currentVectors: this.state.currentFilter.currentVectors,\r\n timeFrom: this.state.currentFilter.timePanelConfiguration.selectedTimeFrom?.toString() ?? \"\",\r\n timeTo: this.state.currentFilter.timePanelConfiguration.selectedTimeTo?.toString() ?? \"\",\r\n selectedStep: this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n autoRefresh: this.state.currentFilter.timePanelConfiguration.autoRefresh,\r\n }\r\n\r\n localStorage.setItem(filterNameToSave, JSON.stringify(filterToSave));\r\n }\r\n }\r\n\r\n getFilterNameToSave(): string | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getActiveVectors(): EdaVector[] {\r\n return this.state.currentFilter.currentVectors.filter(vector => vector.active);\r\n }\r\n\r\n protected onReload() {\r\n this.edaManagerTablePanel?.onReload();\r\n this.edaManagerChartPanel?.onReload();\r\n }\r\n\r\n async onLoadVectors() {\r\n const activeVectors = this.getActiveVectors();\r\n this.setState({loading: true});\r\n\r\n const loadedVectors = await this.props.edaApi.loadVectors(\r\n activeVectors,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n );\r\n\r\n const loadedCalendarVector = await this.props.edaApi.loadCalendarVector(\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n );\r\n\r\n this.setState({\r\n loading: false,\r\n loadedVectors: loadedVectors,\r\n loadedCalendarVector: loadedCalendarVector,\r\n loadedDataFilter: cloneDeep(this.state.currentFilter),\r\n }, () => this.onReload());\r\n\r\n this.props.onVectorsLoaded?.(loadedVectors);\r\n }\r\n\r\n private async onLoadVector(code: string) {\r\n const activeVectors = this.getActiveVectors();\r\n const currentVectorIndex = activeVectors.findIndex(value => value.code === code);\r\n\r\n if (currentVectorIndex >= 0) {\r\n const currentVector = activeVectors[currentVectorIndex];\r\n const loadedVectors = this.state.loadedVectors;\r\n\r\n const loadedVector = await this.props.edaApi.loadVectors(\r\n [currentVector],\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeFrom,\r\n this.state.currentFilter.timePanelConfiguration.selectedTimeTo,\r\n this.state.currentFilter.timePanelConfiguration.selectedStep,\r\n );\r\n\r\n loadedVectors.forEach((value, index) => {\r\n value[`col${currentVectorIndex}`] = loadedVector[index].col0;\r\n });\r\n\r\n this.setState({loadedVectors: loadedVectors});\r\n\r\n this.edaManagerTablePanel?.refreshCells();\r\n this.edaManagerChartPanel?.onReload();\r\n }\r\n }\r\n\r\n private renderTimePanel() {\r\n const pathsToOmit = [\"timePanelConfiguration.autoRefresh\"];\r\n this.state.currentFilter.currentVectors.forEach((_, index) => {\r\n pathsToOmit.push(`currentVectors[${index}].target`);\r\n });\r\n\r\n const filterChanged = !isEqual(\r\n omit(cloneDeep(this.state.currentFilter), pathsToOmit),\r\n omit(cloneDeep(this.state.loadedDataFilter), pathsToOmit)\r\n );\r\n\r\n return (\r\n <EdaManagerTimePanel\r\n loading={this.state.loading}\r\n configuration={this.state.currentFilter.timePanelConfiguration}\r\n filterChanged={filterChanged}\r\n onChangeConfiguration={configuration => {\r\n const currentFilter = this.state.currentFilter;\r\n const timePanelConfiguration = currentFilter.timePanelConfiguration;\r\n Object.assign(timePanelConfiguration, configuration);\r\n this.setState({currentFilter: currentFilter}, () => {\r\n this.saveFilter();\r\n if (timePanelConfiguration.autoRefresh) {\r\n this.onLoadVectors();\r\n }\r\n });\r\n }}\r\n onReload={() => {\r\n this.onLoadVectors();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected get edaManagerChartPanelCompact(): boolean {\r\n return false;\r\n }\r\n\r\n protected get tabWrapperStyle(): React.CSSProperties {\r\n return {padding: \"8px 12px\"}\r\n }\r\n\r\n protected flexLayoutFactory(node: FlexLayout.TabNode): React.ReactNode {\r\n const component = node.getComponent();\r\n const activeVectors = this.getActiveVectors();\r\n if (component === \"table\") {\r\n return (\r\n <EdaManagerTablePanel\r\n style={this.tabWrapperStyle}\r\n ref={component => this.edaManagerTablePanel = component}\r\n edaApi={this.props.edaApi}\r\n timePanel={this.renderTimePanel()}\r\n currentVectors={activeVectors}\r\n loadedVectors={this.state.loadedVectors}\r\n loading={this.state.loading}\r\n onReloadVectorData={code => {\r\n this.onLoadVector(code);\r\n }}\r\n />\r\n );\r\n } else if (component === \"chart\") {\r\n const d2ChartSeries: D2ChartSeriesItem[] = activeVectors.map(value => {\r\n return {\r\n id: value.id,\r\n code: value.code,\r\n name: value.name,\r\n colorIndex: value.colorIndex,\r\n lineStyle: value.lineStyle,\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n style={Object.assign(\r\n {display: \"flex\", flexDirection: \"column\", height: \"100%\"},\r\n this.tabWrapperStyle\r\n )}\r\n >\r\n {this.renderTimePanel()}\r\n <D2ChartPanel\r\n ref={component => this.edaManagerChartPanel = component}\r\n d2ChartSeries={d2ChartSeries}\r\n d2ChartRecords={this.state.loadedVectors}\r\n d2ChartCalendarRecords={this.state.loadedCalendarVector}\r\n loading={this.state.loading}\r\n compact={this.edaManagerChartPanelCompact}\r\n markArea={this.props.markArea}\r\n tableHeight={this.props.tableHeight}\r\n tableWrapperStyle={this.props.tableWrapperStyle}\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n return <span>{component}</span>\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{minWidth: 100, minHeight: 500, ...this.props.style}}>\r\n <FlexLayout.Layout\r\n model={this.state.layoutModel}\r\n onModelChange={model => this.setState({layoutModel: model})}\r\n factory={this.flexLayoutFactory}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n}"]}
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { DataGridColDef, MenuElement } from "d2coreui/components/grid/dataGrid";
3
+ import { EdaManagerRecord, EdaVector } from "../../../../api/edaApi";
4
+ import { GridRowStyle } from "d2coreui/components/grid/cell/tableDefaultRowStyleRules";
5
+ import { GridApi } from "ag-grid-community";
6
+ export interface EdaManagerAbstractTablePanelProps {
7
+ style?: React.CSSProperties;
8
+ currentVectors: EdaVector[];
9
+ loadedVectors: EdaManagerRecord[];
10
+ loading?: boolean;
11
+ }
12
+ export interface EdaManagerAbstractTablePanelState {
13
+ columnDefs: DataGridColDef[];
14
+ selectedData: EdaManagerRecord[];
15
+ }
16
+ export default abstract class EdaManagerAbstractTablePanel<P extends EdaManagerAbstractTablePanelProps, S extends EdaManagerAbstractTablePanelState> extends React.Component<P, S> {
17
+ protected gridApi?: GridApi;
18
+ protected constructor(props: Readonly<P>);
19
+ protected initialState: EdaManagerAbstractTablePanelState;
20
+ onReload(): void;
21
+ refreshCells(): void;
22
+ redrawRows(): void;
23
+ protected getDateTimeColumn(): DataGridColDef;
24
+ abstract getColumnDefs(): DataGridColDef[];
25
+ private onSelectionChanged;
26
+ protected renderToolbarButtons(): React.ReactElement | undefined;
27
+ protected renderAdditionalContent(): React.ReactNode | undefined;
28
+ protected getRowStyle(data: EdaManagerRecord): GridRowStyle | undefined;
29
+ protected renderContextMenu(originalMenuItems: MenuElement[]): MenuElement[];
30
+ protected onClickContextMenuItem(key: string): void;
31
+ render(): React.JSX.Element;
32
+ }
@@ -0,0 +1,87 @@
1
+ import React from "react";
2
+ import { LoadingOutlined } from "@ant-design/icons";
3
+ import ExtendedDataGrid from "d2coreui/components/grid/extendedDataGrid";
4
+ import { Empty } from "antd";
5
+ import i18n from "d2core/i18n/i18n";
6
+ export default class EdaManagerAbstractTablePanel extends React.Component {
7
+ constructor(props) {
8
+ super(props);
9
+ this.initialState = {
10
+ columnDefs: this.getColumnDefs(),
11
+ selectedData: [],
12
+ };
13
+ this.onSelectionChanged = this.onSelectionChanged.bind(this);
14
+ this.renderContextMenu = this.renderContextMenu.bind(this);
15
+ this.onClickContextMenuItem = this.onClickContextMenuItem.bind(this);
16
+ }
17
+ onReload() {
18
+ this.setState({ columnDefs: this.getColumnDefs() });
19
+ }
20
+ refreshCells() {
21
+ this.gridApi?.refreshCells();
22
+ }
23
+ redrawRows() {
24
+ this.gridApi?.redrawRows();
25
+ }
26
+ getDateTimeColumn() {
27
+ return {
28
+ headerName: i18n("Date"),
29
+ colId: "date",
30
+ field: "date",
31
+ type: "dateTimeColumn",
32
+ initialWidth: 140,
33
+ group: i18n("Basic Columns"),
34
+ };
35
+ }
36
+ onSelectionChanged(event) {
37
+ const selectedRows = event.api.getSelectedRows();
38
+ this.setState({ selectedData: selectedRows });
39
+ }
40
+ renderToolbarButtons() {
41
+ return undefined;
42
+ }
43
+ renderAdditionalContent() {
44
+ return undefined;
45
+ }
46
+ getRowStyle(data) {
47
+ data;
48
+ return undefined;
49
+ }
50
+ renderContextMenu(originalMenuItems) {
51
+ return originalMenuItems;
52
+ }
53
+ onClickContextMenuItem(key) {
54
+ key;
55
+ }
56
+ render() {
57
+ const toolbarButtons = this.renderToolbarButtons();
58
+ if (this.props.loading) {
59
+ return (React.createElement("div", { style: { display: "flex", flexDirection: "column", height: "100%", ...this.props.style } },
60
+ toolbarButtons,
61
+ React.createElement("div", { style: { height: "100%", display: "flex", justifyContent: "center", alignItems: "center" } },
62
+ React.createElement(LoadingOutlined, null))));
63
+ }
64
+ return (React.createElement("div", { style: { height: "100%" } },
65
+ this.renderAdditionalContent(),
66
+ React.createElement(ExtendedDataGrid, { columnDefs: this.state.columnDefs, onLoadData: callback => {
67
+ callback(this.props.loadedVectors.length);
68
+ }, defaultGridConfiguration: {
69
+ pageSize: -1,
70
+ }, onGridReady: (params) => {
71
+ this.gridApi = params.api;
72
+ }, rowData: this.props.loadedVectors, onSelectionChanged: this.onSelectionChanged, tablePanelStyle: { marginTop: 8 }, panelStyle: this.props.style, toolbar: {
73
+ hideRecordCount: true,
74
+ toolbarButtons: toolbarButtons,
75
+ }, search: {
76
+ hidden: true,
77
+ searchButtonHidden: true,
78
+ }, contextMenu: {
79
+ renderer: this.renderContextMenu,
80
+ onClick: this.onClickContextMenuItem
81
+ }, noRecordsOverlayRenderer: () => React.createElement(Empty, { description: i18n("No records found."), imageStyle: { height: "8vh" } }), getRowStyle: params => {
82
+ const data = params.node.data;
83
+ return this.getRowStyle(data);
84
+ }, rowSelection: "multiple", singleClickEdit: true, stopEditingWhenCellsLoseFocus: true, enterNavigatesVerticallyAfterEdit: true })));
85
+ }
86
+ }
87
+ //# sourceMappingURL=edaManagerAbstractTablePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edaManagerAbstractTablePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManager/abstract/edaManagerAbstractTablePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {DataGridColDef, MenuElement} from \"d2coreui/components/grid/dataGrid\";\r\nimport {LoadingOutlined} from \"@ant-design/icons\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {Empty} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaManagerRecord, EdaVector} from \"../../../../api/edaApi\";\r\nimport {GridRowStyle} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {SelectionChangedEvent, GridReadyEvent, GridApi} from \"ag-grid-community\";\r\n\r\nexport interface EdaManagerAbstractTablePanelProps {\r\n style?: React.CSSProperties\r\n currentVectors: EdaVector[],\r\n loadedVectors: EdaManagerRecord[],\r\n loading?: boolean\r\n}\r\n\r\nexport interface EdaManagerAbstractTablePanelState {\r\n columnDefs: DataGridColDef[]\r\n selectedData: EdaManagerRecord[]\r\n}\r\n\r\nexport default abstract class EdaManagerAbstractTablePanel<P extends EdaManagerAbstractTablePanelProps, S extends EdaManagerAbstractTablePanelState> extends React.Component<P, S> {\r\n protected gridApi?: GridApi;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.renderContextMenu = this.renderContextMenu.bind(this);\r\n this.onClickContextMenuItem = this.onClickContextMenuItem.bind(this);\r\n }\r\n\r\n protected initialState: EdaManagerAbstractTablePanelState = {\r\n columnDefs: this.getColumnDefs(),\r\n selectedData: [],\r\n }\r\n\r\n onReload() {\r\n this.setState({columnDefs: this.getColumnDefs()});\r\n }\r\n\r\n refreshCells() {\r\n this.gridApi?.refreshCells();\r\n }\r\n\r\n redrawRows() {\r\n this.gridApi?.redrawRows();\r\n }\r\n\r\n protected getDateTimeColumn(): DataGridColDef {\r\n return {\r\n headerName: i18n(\"Date\"),\r\n colId: \"date\",\r\n field: \"date\",\r\n type: \"dateTimeColumn\",\r\n initialWidth: 140,\r\n group: i18n(\"Basic Columns\"),\r\n }\r\n }\r\n\r\n abstract getColumnDefs(): DataGridColDef[];\r\n\r\n private onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n this.setState({selectedData: selectedRows});\r\n }\r\n\r\n protected renderToolbarButtons(): React.ReactElement | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalContent(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected getRowStyle(data: EdaManagerRecord): GridRowStyle | undefined {\r\n data;\r\n return undefined;\r\n }\r\n\r\n protected renderContextMenu(originalMenuItems: MenuElement[]): MenuElement[] {\r\n return originalMenuItems;\r\n }\r\n\r\n protected onClickContextMenuItem(key: string) {\r\n key;\r\n }\r\n\r\n render() {\r\n const toolbarButtons = this.renderToolbarButtons();\r\n\r\n if (this.props.loading) {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\", ...this.props.style}}>\r\n {toolbarButtons}\r\n <div style={{height: \"100%\", display: \"flex\", justifyContent: \"center\", alignItems: \"center\"}}>\r\n <LoadingOutlined/>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div style={{height: \"100%\"}}>\r\n {this.renderAdditionalContent()}\r\n <ExtendedDataGrid\r\n columnDefs={this.state.columnDefs}\r\n onLoadData={callback => {\r\n callback(this.props.loadedVectors.length)\r\n }}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowData={this.props.loadedVectors}\r\n onSelectionChanged={this.onSelectionChanged}\r\n tablePanelStyle={{marginTop: 8}}\r\n panelStyle={this.props.style}\r\n toolbar={{\r\n hideRecordCount: true,\r\n toolbarButtons: toolbarButtons,\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n contextMenu={{\r\n renderer: this.renderContextMenu,\r\n onClick: this.onClickContextMenuItem\r\n }}\r\n noRecordsOverlayRenderer={() =>\r\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}/>\r\n }\r\n getRowStyle={params => {\r\n const data = params.node.data as EdaManagerRecord;\r\n return this.getRowStyle(data);\r\n }}\r\n rowSelection=\"multiple\"\r\n singleClickEdit\r\n stopEditingWhenCellsLoseFocus\r\n enterNavigatesVerticallyAfterEdit\r\n />\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import { EdaVector, EdaApi } from "../../../../api/edaApi";
3
+ import { DataGridColDef } from "d2coreui/components/grid/dataGrid";
4
+ import { GridApi, SelectionChangedEvent } from "ag-grid-community";
5
+ import { AdvancedFilterApi } from "../../../../api/advancedFilterApi";
6
+ export interface EdaManagerAbstractVectorListProps {
7
+ edaApi: EdaApi;
8
+ advancedFilterApi: AdvancedFilterApi;
9
+ currentVectors: EdaVector[];
10
+ onChange(): void;
11
+ }
12
+ export interface EdaManagerAbstractVectorListState {
13
+ selectedVectors: EdaVector[];
14
+ edaVectorSelectDialogVisible: boolean;
15
+ columnDefs: DataGridColDef[];
16
+ }
17
+ export default abstract class EdaManagerAbstractVectorList<P extends EdaManagerAbstractVectorListProps, S extends EdaManagerAbstractVectorListState> extends React.Component<P, S> {
18
+ protected gridApi?: GridApi;
19
+ protected constructor(props: Readonly<P>);
20
+ onSelectionChanged(event: SelectionChangedEvent): void;
21
+ abstract getInitialColumnDefs(): DataGridColDef[];
22
+ renderToolbarButtons(): React.JSX.Element;
23
+ render(): React.JSX.Element;
24
+ }