d2aura 26.0.14 → 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 (112) hide show
  1. package/api/eda/edaManagerApi.d.ts +7 -3
  2. package/api/eda/edaManagerApi.js +28 -2
  3. package/api/eda/edaManagerApi.js.map +1 -1
  4. package/api/eda/generated/events.d.ts +93 -62
  5. package/api/eda/generated/events.js +146 -88
  6. package/api/eda/generated/events.js.map +1 -1
  7. package/api/eda/generated/structures.d.ts +99 -86
  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 +62 -0
  11. package/coreui/components/edaManagerComponent/components/edaChartViewer.js +23 -19
  12. package/coreui/components/edaManagerComponent/components/edaChartViewer.js.map +1 -1
  13. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js +1 -1
  14. package/coreui/components/edaManagerComponent/components/edaDataBasePanel.js.map +1 -1
  15. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js +15 -18
  16. package/coreui/components/edaManagerComponent/components/edaGraphPanel.js.map +1 -1
  17. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.d.ts +11 -3
  18. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js +31 -24
  19. package/coreui/components/edaManagerComponent/components/edaSampleRangePickerPanel.js.map +1 -1
  20. package/coreui/components/edaManagerComponent/components/edaTablePanel.js +116 -95
  21. package/coreui/components/edaManagerComponent/components/edaTablePanel.js.map +1 -1
  22. package/coreui/components/edaManagerComponent/components/edaTreeView.d.ts +5 -0
  23. package/coreui/components/edaManagerComponent/components/edaTreeView.js +189 -60
  24. package/coreui/components/edaManagerComponent/components/edaTreeView.js.map +1 -1
  25. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js +1 -1
  26. package/coreui/components/edaManagerComponent/components/edaVectorDetailPanel.js.map +1 -1
  27. package/coreui/components/edaManagerComponent/constants/actionTypes.d.ts +5 -0
  28. package/coreui/components/edaManagerComponent/constants/actionTypes.js +7 -0
  29. package/coreui/components/edaManagerComponent/constants/actionTypes.js.map +1 -0
  30. package/coreui/components/edaManagerComponent/constants/edaTypes.d.ts +13 -0
  31. package/coreui/components/edaManagerComponent/constants/edaTypes.js +15 -0
  32. package/coreui/components/edaManagerComponent/constants/edaTypes.js.map +1 -1
  33. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.d.ts +1 -0
  34. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js +8 -1
  35. package/coreui/components/edaManagerComponent/context/edaVectorDataContext.js.map +1 -1
  36. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js +31 -38
  37. package/coreui/components/edaManagerComponent/context/edaVectorDataProvider.js.map +1 -1
  38. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.d.ts +6 -1
  39. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js +8 -1
  40. package/coreui/components/edaManagerComponent/context/sharedSampleRangeContext.js.map +1 -1
  41. package/coreui/components/edaManagerComponent/context/useEdaActions.d.ts +5 -3
  42. package/coreui/components/edaManagerComponent/context/useEdaActions.js +21 -7
  43. package/coreui/components/edaManagerComponent/context/useEdaActions.js.map +1 -1
  44. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.d.ts +13 -0
  45. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js +19 -0
  46. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/controlButtons.js.map +1 -0
  47. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.d.ts +8 -0
  48. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js +171 -0
  49. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/descriptiveVectorDetailPanel.js.map +1 -0
  50. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.d.ts +22 -0
  51. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js +75 -0
  52. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/graphPanel.js.map +1 -0
  53. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.d.ts +12 -0
  54. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js +52 -0
  55. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/intervalInput.js.map +1 -0
  56. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.d.ts +22 -0
  57. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js +130 -0
  58. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/tablePanel.js.map +1 -0
  59. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.d.ts +58 -0
  60. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js +51 -0
  61. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/types.js.map +1 -0
  62. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.d.ts +18 -0
  63. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js +74 -0
  64. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/useSharedData.js.map +1 -0
  65. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.d.ts +38 -0
  66. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js +299 -0
  67. package/coreui/components/edaManagerComponent/dialogs/descriptiveVectorDialog/utils.js.map +1 -0
  68. package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.d.ts +10 -0
  69. package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js +343 -0
  70. package/coreui/components/edaManagerComponent/dialogs/edaDescriptiveVectorEditorDialog.js.map +1 -0
  71. package/coreui/components/edaManagerComponent/{components → dialogs}/edaTableEditorDialog.js +1 -1
  72. package/coreui/components/edaManagerComponent/dialogs/edaTableEditorDialog.js.map +1 -0
  73. package/coreui/components/edaManagerComponent/{components → dialogs}/exportDialog.d.ts +2 -2
  74. package/coreui/components/edaManagerComponent/{components → dialogs}/exportDialog.js +7 -8
  75. package/coreui/components/edaManagerComponent/dialogs/exportDialog.js.map +1 -0
  76. package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.d.ts +12 -0
  77. package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js +74 -0
  78. package/coreui/components/edaManagerComponent/dialogs/groupVectorSelection.js.map +1 -0
  79. package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.d.ts +16 -0
  80. package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js +32 -0
  81. package/coreui/components/edaManagerComponent/dialogs/insertVectorDialog.js.map +1 -0
  82. package/coreui/components/edaManagerComponent/edaDetail.js +21 -7
  83. package/coreui/components/edaManagerComponent/edaDetail.js.map +1 -1
  84. package/coreui/components/edaManagerComponent/edaNavigator.d.ts +2 -0
  85. package/coreui/components/edaManagerComponent/edaNavigator.js +4 -4
  86. package/coreui/components/edaManagerComponent/edaNavigator.js.map +1 -1
  87. package/coreui/components/edaManagerComponent/edaSelect.d.ts +2 -0
  88. package/coreui/components/edaManagerComponent/edaSelect.js +13 -13
  89. package/coreui/components/edaManagerComponent/edaSelect.js.map +1 -1
  90. package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.d.ts +6 -0
  91. package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js +7 -0
  92. package/coreui/components/edaManagerComponent/icons/folderRemoveOutlined.js.map +1 -0
  93. package/coreui/components/edaManagerComponent/utils/export.d.ts +1 -1
  94. package/coreui/components/edaManagerComponent/utils/export.js +20 -23
  95. package/coreui/components/edaManagerComponent/utils/export.js.map +1 -1
  96. package/d2configuration/edaManager/{DB.EM_EDA_DescriptiveVector.xml → DB.EM_EDA_VectorScenario.xml} +10 -10
  97. package/d2configuration/edaManager/E.EM_DETAIL_IMPL.xml +4 -4
  98. package/d2configuration/edaManager/E.EM_DETAIL_UNIT.xml +35 -15
  99. package/d2configuration/edaManager/E.EM_NAVIGATOR_IMPL.xml +13 -5
  100. package/d2configuration/edaManager/E.EM_NAVIGATOR_SQL.xml +12 -1
  101. package/d2configuration/edaManager/E.EM_NAVIGATOR_UNIT.xml +113 -5
  102. package/d2configuration/edaManager/E.EM_VECTOR_IMPL.xml +11 -1
  103. package/d2configuration/edaManager/E.EM_VECTOR_UNIT.xml +25 -1
  104. package/d2configuration/edaManager/{SD.EM_EDA_StatVectorRec_V1.xml → SD.EM_EDA_VectorScenario.xml} +13 -36
  105. package/package.json +2 -2
  106. package/coreui/components/edaManagerComponent/components/edaTableEditorDialog.js.map +0 -1
  107. package/coreui/components/edaManagerComponent/components/exportDialog.js.map +0 -1
  108. package/d2configuration/edaManager/SD.EM_EDA_DescriptiveVector.xml +0 -179
  109. package/d2configuration/edaManager/SD.EM_EDA_InsertValuesToVector_V1.xml +0 -227
  110. package/d2configuration/edaManager/SD.EM_EDA_ReadValuesFromVector_V1.xml +0 -178
  111. package/d2configuration/edaManager/SD.EM_EDA_VectorValues.xml +0 -58
  112. /package/coreui/components/edaManagerComponent/{components → dialogs}/edaTableEditorDialog.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"structures.js","sourceRoot":"","sources":["../../../../../api/eda/generated/structures.ts"],"names":[],"mappings":"","sourcesContent":["/******************************************************\r\n * THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT! *\r\n ******************************************************/\r\n\r\n// @ts-ignore\r\nimport {UnixTime} from \"d2core/types/unixTime\";\r\n\r\nexport interface SD_EM_EDA_Scenario {\r\n ID_SCENAR: number;\r\n EDA_ID_SCENAR: number;\r\n MENO: string;\r\n POPIS: string;\r\n IDX: number;\r\n CAS_DLZKA: number;\r\n CAS_POSUN: number;\r\n CAS_JEMNOST: number;\r\n AUTOR: string;\r\n PRIVATE: number;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n CESTA: string;\r\n FILTER: string;\r\n FILTER_USER: string;\r\n FILTER_TYP: number;\r\n ZOBRAZ_MENO: string;\r\n ANO_PLATNY: number;\r\n DIAGRAM: number;\r\n ANO_DIAGRAM: number;\r\n ANO_EDITACIA: number;\r\n ANO_ZMENA: number;\r\n ANO_GRAFXY: number;\r\n ANO_MATICA: number;\r\n ANO_PAIR: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_FunctionPrescription {\r\n ID_VEKTOR: number;\r\n POPIS: string;\r\n PLATNOST_OD: UnixTime;\r\n PLATNOST_DO: UnixTime;\r\n}\r\n\r\nexport interface SD_EDA_PairData {\r\n idx: number;\r\n valX: number;\r\n valY: number;\r\n}\r\n\r\nexport interface SD_EDA_VectorData {\r\n val: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_DescriptiveVector {\r\n ID: number;\r\n EDA_ID: number;\r\n IDX: number;\r\n TYP_PERIODY: number;\r\n TIME_FROM: UnixTime;\r\n TIME_TO: UnixTime;\r\n HODNOTA: number;\r\n HODNOTA2: number;\r\n TYP_HODNOTY: number;\r\n STAV: number;\r\n DODATOK_ID: number;\r\n VALID: number;\r\n}\r\n\r\nexport interface SD_EM_Tree_Item {\r\n ID: number;\r\n ParentID: number;\r\n Name: string;\r\n Path: string;\r\n DisplayName: string;\r\n Type: number;\r\n Units: string;\r\n RoundingType: number;\r\n RoundingPlaces: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_VectorEx {\r\n ID_VEKTOR: number;\r\n DATE_IN: UnixTime;\r\n DATE_CH: UnixTime;\r\n}\r\n\r\nexport interface SD_EM_Filter_Condition {\r\n id_condition: number;\r\n id_filter: number;\r\n not_flag: number;\r\n left_par: number;\r\n column_name: string;\r\n operator: string;\r\n value: string;\r\n value_type: number;\r\n right_par: number;\r\n logical_operator: string;\r\n}\r\n\r\nexport interface SD_EM_EDA_Vector {\r\n ID_VEKTOR: number;\r\n ID_SKVEKTOR: number;\r\n ID_FUNKCIA: number;\r\n MENO: string;\r\n POPIS: string;\r\n TECH_JEDNOTKY: string;\r\n TYP_HODNOTY: number;\r\n TYP: number;\r\n DATA_OD: UnixTime;\r\n DATA_DO: UnixTime;\r\n AUTOR: string;\r\n PRIVATE: number;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n INTEGRAL: number;\r\n ZOBRAZ_MENO: string;\r\n ANO_PLATNY: number;\r\n VIEW_ROUND: number;\r\n EXEC_ROUND: number;\r\n VIEW_DEC_PL: number;\r\n EXEC_DEC_PL: number;\r\n USER_CH: string;\r\n MENOEX: string;\r\n ID_TABLESPACE: number;\r\n DATA_OFFSET: number;\r\n TIME_ZONE: string;\r\n VERSIONED_SINCE: UnixTime;\r\n ARCHIVE_NAME: string;\r\n ARCHIVE_ROW: number;\r\n ARCHIVE_COL: number;\r\n LOG_ACCESS: number;\r\n STATUS_TEXT: string;\r\n ID_MASTER_ENTITY: number;\r\n INTERVAL_STABLE: number;\r\n PERIOD_BEGIN_TIME: UnixTime;\r\n PERIOD_STEP_BASE: number;\r\n PERIOD_STEP_COUNT: number;\r\n ID_VALIDATOR: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_VectorStats {\r\n Min: number;\r\n Max: number;\r\n Sum: number;\r\n Avg: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_Function {\r\n ID_VEKTOR: number;\r\n TYP: number;\r\n PERIODA: number;\r\n POSUN: number;\r\n PREPOCIT: number;\r\n PREDV_OD: UnixTime;\r\n PREDV_DO: UnixTime;\r\n PRECALC_RQ: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_PairVector {\r\n ID_VEKTOR: number;\r\n ID_SKVEKTOR: number;\r\n ID_FUNKCIA: number;\r\n MENO: string;\r\n POPIS: string;\r\n TECH_JEDNOTKY: string;\r\n TYP_HODNOTY: number;\r\n TYP: number;\r\n DATA_OD: UnixTime;\r\n DATA_DO: UnixTime;\r\n AUTOR: string;\r\n PRIVATE: number;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n INTEGRAL: number;\r\n ZOBRAZ_MENO: string;\r\n ANO_PLATNY: number;\r\n VIEW_ROUND: number;\r\n EXEC_ROUND: number;\r\n VIEW_DEC_PL: number;\r\n EXEC_DEC_PL: number;\r\n USER_CH: string;\r\n MENOEX: string;\r\n DATA_OFFSET: number;\r\n ID_TABLESPACE: number;\r\n TECH_JEDNOTKY_Y: string;\r\n HODNOTA_X: string;\r\n HODNOTA_Y: string;\r\n TIME_ZONE: string;\r\n VERSIONED_SINCE: UnixTime;\r\n ARCHIVE_NAME: string;\r\n ARCHIVE_ROW: number;\r\n ARCHIVE_COL: number;\r\n STATUS_TEXT: string;\r\n PERIOD_BEGIN_TIME: UnixTime;\r\n PERIOD_STEP_BASE: number;\r\n PERIOD_STEP_COUNT: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_GroupVector {\r\n ID_SKVEKTOR: number;\r\n EDA_ID_SKVEKTOR: number;\r\n MENO: string;\r\n POPIS: string;\r\n AUTOR: string;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n CESTA: string;\r\n ANO_PLATNY: number;\r\n ZOBRAZ_MENO: string;\r\n PRIVATE: number;\r\n USERINPUTFLAG: number;\r\n ANO_PAIR: number;\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"structures.js","sourceRoot":"","sources":["../../../../../api/eda/generated/structures.ts"],"names":[],"mappings":"","sourcesContent":["/******************************************************\r\n * THIS FILE IS AUTOMATICALLY GENERATED! DO NOT EDIT! *\r\n ******************************************************/\r\n\r\n// @ts-ignore\r\nimport {UnixTime} from \"d2core/types/unixTime\";\r\n\r\nexport interface SD_EM_EDA_Scenario {\r\n ID_SCENAR: number;\r\n EDA_ID_SCENAR: number;\r\n MENO: string;\r\n POPIS: string;\r\n IDX: number;\r\n CAS_DLZKA: number;\r\n CAS_POSUN: number;\r\n CAS_JEMNOST: number;\r\n AUTOR: string;\r\n PRIVATE: number;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n CESTA: string;\r\n FILTER: string;\r\n FILTER_USER: string;\r\n FILTER_TYP: number;\r\n ZOBRAZ_MENO: string;\r\n ANO_PLATNY: number;\r\n DIAGRAM: number;\r\n ANO_DIAGRAM: number;\r\n ANO_EDITACIA: number;\r\n ANO_ZMENA: number;\r\n ANO_GRAFXY: number;\r\n ANO_MATICA: number;\r\n ANO_PAIR: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_VectorEx {\r\n ID_VEKTOR: number;\r\n DATE_IN: UnixTime;\r\n DATE_CH: UnixTime;\r\n}\r\n\r\nexport interface SD_EDA_DescriptiveData {\r\n parent: number;\r\n idx: number;\r\n periodType: number;\r\n timeFrom: UnixTime;\r\n timeTo: UnixTime;\r\n value: number;\r\n value2: number;\r\n valueType: number;\r\n status: number;\r\n supplement: number;\r\n valid: boolean;\r\n}\r\n\r\nexport interface SD_EM_EDA_Function {\r\n ID_VEKTOR: number;\r\n TYP: number;\r\n PERIODA: number;\r\n POSUN: number;\r\n PREPOCIT: number;\r\n PREDV_OD: UnixTime;\r\n PREDV_DO: UnixTime;\r\n PRECALC_RQ: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_PairVector {\r\n ID_VEKTOR: number;\r\n ID_SKVEKTOR: number;\r\n ID_FUNKCIA: number;\r\n MENO: string;\r\n POPIS: string;\r\n TECH_JEDNOTKY: string;\r\n TYP_HODNOTY: number;\r\n TYP: number;\r\n DATA_OD: UnixTime;\r\n DATA_DO: UnixTime;\r\n AUTOR: string;\r\n PRIVATE: number;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n INTEGRAL: number;\r\n ZOBRAZ_MENO: string;\r\n ANO_PLATNY: number;\r\n VIEW_ROUND: number;\r\n EXEC_ROUND: number;\r\n VIEW_DEC_PL: number;\r\n EXEC_DEC_PL: number;\r\n USER_CH: string;\r\n MENOEX: string;\r\n DATA_OFFSET: number;\r\n ID_TABLESPACE: number;\r\n TECH_JEDNOTKY_Y: string;\r\n HODNOTA_X: string;\r\n HODNOTA_Y: string;\r\n TIME_ZONE: string;\r\n VERSIONED_SINCE: UnixTime;\r\n ARCHIVE_NAME: string;\r\n ARCHIVE_ROW: number;\r\n ARCHIVE_COL: number;\r\n STATUS_TEXT: string;\r\n PERIOD_BEGIN_TIME: UnixTime;\r\n PERIOD_STEP_BASE: number;\r\n PERIOD_STEP_COUNT: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_GroupVector {\r\n ID_SKVEKTOR: number;\r\n EDA_ID_SKVEKTOR: number;\r\n MENO: string;\r\n POPIS: string;\r\n AUTOR: string;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n CESTA: string;\r\n ANO_PLATNY: number;\r\n ZOBRAZ_MENO: string;\r\n PRIVATE: number;\r\n USERINPUTFLAG: number;\r\n ANO_PAIR: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_FunctionPrescription {\r\n ID_VEKTOR: number;\r\n POPIS: string;\r\n PLATNOST_OD: UnixTime;\r\n PLATNOST_DO: UnixTime;\r\n}\r\n\r\nexport interface SD_EDA_PairData {\r\n idx: number;\r\n valX: number;\r\n valY: number;\r\n}\r\n\r\nexport interface SD_EDA_DescriptiveData2 {\r\n id: number;\r\n parent: number;\r\n idx: number;\r\n periodType: number;\r\n timeFrom: UnixTime;\r\n timeTo: UnixTime;\r\n value: number;\r\n value2: number;\r\n valueType: number;\r\n status: number;\r\n supplement: number;\r\n valid: boolean;\r\n}\r\n\r\nexport interface SD_EDA_VectorData {\r\n val: number;\r\n}\r\n\r\nexport interface SD_EM_Tree_Item {\r\n ID: number;\r\n ParentID: number;\r\n Name: string;\r\n Path: string;\r\n DisplayName: string;\r\n Type: number;\r\n Units: string;\r\n RoundingType: number;\r\n RoundingPlaces: number;\r\n}\r\n\r\nexport interface SD_EM_Filter_Condition {\r\n id_condition: number;\r\n id_filter: number;\r\n not_flag: number;\r\n left_par: number;\r\n column_name: string;\r\n operator: string;\r\n value: string;\r\n value_type: number;\r\n right_par: number;\r\n logical_operator: string;\r\n}\r\n\r\nexport interface SD_EM_EDA_VectorStats {\r\n Min: number;\r\n Max: number;\r\n Sum: number;\r\n Avg: number;\r\n}\r\n\r\nexport interface SD_EM_EDA_Vector {\r\n ID_VEKTOR: number;\r\n ID_SKVEKTOR: number;\r\n ID_FUNKCIA: number;\r\n MENO: string;\r\n POPIS: string;\r\n TECH_JEDNOTKY: string;\r\n TYP_HODNOTY: number;\r\n TYP: number;\r\n DATA_OD: UnixTime;\r\n DATA_DO: UnixTime;\r\n AUTOR: string;\r\n PRIVATE: number;\r\n PRIST_PRAVA_R: number;\r\n PRIST_PRAVA_W: number;\r\n INTEGRAL: number;\r\n ZOBRAZ_MENO: string;\r\n ANO_PLATNY: number;\r\n VIEW_ROUND: number;\r\n EXEC_ROUND: number;\r\n VIEW_DEC_PL: number;\r\n EXEC_DEC_PL: number;\r\n USER_CH: string;\r\n MENOEX: string;\r\n ID_TABLESPACE: number;\r\n DATA_OFFSET: number;\r\n TIME_ZONE: string;\r\n VERSIONED_SINCE: UnixTime;\r\n ARCHIVE_NAME: string;\r\n ARCHIVE_ROW: number;\r\n ARCHIVE_COL: number;\r\n LOG_ACCESS: number;\r\n STATUS_TEXT: string;\r\n ID_MASTER_ENTITY: number;\r\n INTERVAL_STABLE: number;\r\n PERIOD_BEGIN_TIME: UnixTime;\r\n PERIOD_STEP_BASE: number;\r\n PERIOD_STEP_COUNT: number;\r\n ID_VALIDATOR: number;\r\n}\r\n\r\n"]}
@@ -2,6 +2,20 @@
2
2
  "Title[degree]": "Title",
3
3
  "Name[Title]": "Name",
4
4
  "WholeInterval": "Whole Interval",
5
+ "To[Till]": "To",
6
+ "QuarterType_First": "1. Quarter",
7
+ "QuarterType_Second": "2. Quarter",
8
+ "QuarterType_Third": "3. Quarter",
9
+ "QuarterType_Fourth": "4. Quarter",
10
+ "EdaPeriodValueType_Value": "Value",
11
+ "EdaPeriodValueType_CoefficientPlus": "Coefficient Plus",
12
+ "EdaPeriodValueType_CoefficientMul": "Coefficient Mul.",
13
+ "EdaPeriodValueType_Interpolation": "Interpolation",
14
+ "EdaPeriodType_Base": "Basic",
15
+ "EdaPeriodType_Year": "Year",
16
+ "EdaPeriodType_Week": "Week",
17
+ "EdaPeriodType_Day": "Day",
18
+ "EdaPeriodType_Interval": "Interval",
5
19
  "EdaVectorType_FifteenMinutes": "15-minute",
6
20
  "EdaVectorType_Hour": "Hourly",
7
21
  "EdaVectorType_Day": "Daily",
@@ -408,6 +408,68 @@
408
408
  "Loading vectors": "Načítanie vektorov",
409
409
  "Loading subscenarios": "Načítanie podscenárov",
410
410
  "No vector data found": "Nenašli sa žiane hodnoty vektora",
411
+ "Vector Groups": "Skupiny vektorov",
412
+ "Omitted Vector Groups": "Nezaradené skupiny vektorov",
413
+ "Omitted Vectors": "Nezaradené vektory",
414
+ "Omitted Scenarios": "Nezaradené scenáre",
415
+ "Absolute": "Absolútna hodnota",
416
+ "Multiply": "Vynásobiť",
417
+ "Replace": "Nahradiť",
418
+ "In Time": "V čase",
419
+ "Weekdays Only": "Iba pracovné dni",
420
+ "Weekends Only": "Iba víkendy",
421
+ "All Days": "Všetky dni",
422
+ "Replace Value": "Nahradzovaná hodnota",
423
+ "Include vector to scenario": "Zaradiť vektor do scenára",
424
+ "Include vector to group": "Zaradiť vektor do skupiny",
425
+ "Tree": "Strom",
426
+ "Values": "Hodnoty",
427
+ "From %{from} To %{to}": "Od %{from} Do %{to}",
428
+ "%{from} To %{to}": "%{from} až %{to}",
429
+ "Daily From %{from} To %{to}": "Denne Od %{from} Do %{to}",
430
+ "Period Type": "Typ periódy",
431
+ "Period From": "Perióda Od",
432
+ "Period To": "Perióda Do",
433
+ "Value Type": "Typ hodnoty",
434
+ "Parent": "Rodič",
435
+ "Basic (value in every moment)": "Základ (hodnota v každom okamihu)",
436
+ "Quarter of the year (I., II., III, IV.)": "Kvartál v roku (I., II., III., IV.)",
437
+ "Month of the year (January - December)": "Mesiac v roku (Jánuár - December)",
438
+ "Week of the year (1. - 52.)": "Číslo týždňa v roku (1. - 52.)",
439
+ "Date in year (1.1. - 31.12.)": "Dátum v roku (1.1. - 31.12.)",
440
+ "Day in week (Monday - Sunday)": "Deň v týždni (Pondelok - Nedeľa)",
441
+ "Time during the day (00:00 - 23:59)": "Čas počas dňa (00:00 - 23:59)",
442
+ "Valid entry": "Platný záznam",
443
+ "From": "Od",
444
+ "To": "Do",
445
+ "Supplement number": "Číslo dodatku",
446
+ "Change": "Zmeniť",
447
+ "Annual period": "Ročná perióda",
448
+ "On the days": "V dňoch",
449
+ "To[Till]": "Až",
450
+ "June": "Jún",
451
+ "Add after current entry": "Pridať za aktuálny záznam",
452
+ "Add under current entry": "Pridať pod aktuálny záznam",
453
+ "Remove current entry (with subentries)": "Vymazať aktuálny záznam (s podzáznamami)",
454
+ "Remove subentries from current entry": "Vymazať podzáznamy z aktuálneho záznamu",
455
+ "User Selection": "Užívateľský výber",
456
+ "Paging": "Stránkovanie",
457
+ "Hidden vectors": "Skryté vektory",
458
+ "Displayed vectors": "Zobrazené vektory",
459
+ "Maximum number of displayed vectors: %{n}": "Maximálny počet zobrazovaných vektorov: %{n}",
460
+ "QuarterType_First": "1. Kvartál",
461
+ "QuarterType_Second": "2. Kvartál",
462
+ "QuarterType_Third": "3. Kvartál",
463
+ "QuarterType_Fourth": "4. Kvartál",
464
+ "EdaPeriodValueType_Value": "Hodnota",
465
+ "EdaPeriodValueType_CoefficientPlus": "Koeficient Plus",
466
+ "EdaPeriodValueType_CoefficientMul": "Koeficient Krát",
467
+ "EdaPeriodValueType_Interpolation": "Interpolácia",
468
+ "EdaPeriodType_Base": "Základ",
469
+ "EdaPeriodType_Year": "Rok",
470
+ "EdaPeriodType_Week": "Týždeň",
471
+ "EdaPeriodType_Day": "Deň",
472
+ "EdaPeriodType_Interval": "Interval",
411
473
  "EdaVectorType_FifteenMinutes": "15 minútový",
412
474
  "EdaVectorType_Hour": "Hodinový",
413
475
  "EdaVectorType_Day": "Denný",
@@ -56,7 +56,6 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
56
56
  const { styles } = useStyles();
57
57
  const { graph } = useEdaConfig();
58
58
  const chartInstance = useRef(null);
59
- const chartContainerRef = useRef(null);
60
59
  const gridApi = useRef(null);
61
60
  const latestProps = useRef({ vectors, onToggleVisibility });
62
61
  latestProps.current = { vectors, onToggleVisibility };
@@ -133,7 +132,8 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
133
132
  textStyle: {
134
133
  color: token.colorText,
135
134
  },
136
- inactiveColor: token.colorTextDisabled
135
+ inactiveColor: token.colorTextDisabled,
136
+ formatter: (name) => getNameFromUniqueName(name),
137
137
  },
138
138
  toolbox: {
139
139
  show: true,
@@ -151,13 +151,21 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
151
151
  const eventHandler = useMemo(() => ({
152
152
  "legendselectchanged": (params) => {
153
153
  const { vectors, onToggleVisibility } = latestProps.current;
154
- const name = params.name;
154
+ const name = getNameFromUniqueName(params.name);
155
155
  const row = vectors.find((r) => r.DisplayName === name);
156
156
  if (row) {
157
- onToggleVisibility?.(row.ID, params.selected[name]);
157
+ onToggleVisibility?.(row.ID, params.selected[params.name]);
158
158
  }
159
159
  }
160
160
  }), []);
161
+ const chartContainerRef = useCallback((node) => {
162
+ if (!node) {
163
+ return;
164
+ }
165
+ new ResizeObserver(() => {
166
+ window.requestAnimationFrame(() => chartInstance.current?.resize());
167
+ }).observe(node);
168
+ }, []);
161
169
  const handleSelectionChanged = useCallback((e) => {
162
170
  if ((e.selectedNodes?.length ?? 0) > 0) {
163
171
  chartInstance.current.setOption({
@@ -239,20 +247,10 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
239
247
  ];
240
248
  return graph?.graphTable?.modifyColumns ? graph.graphTable.modifyColumns(columns) : columns;
241
249
  }, [data, visibleVectors, graph?.graphTable?.modifyColumns]);
242
- useEffect(() => {
243
- if (!chartContainerRef.current || !chartInstance.current) {
244
- return;
245
- }
246
- const resizeObserver = new ResizeObserver(() => {
247
- window.requestAnimationFrame(() => chartInstance.current?.resize());
248
- });
249
- resizeObserver.observe(chartContainerRef.current);
250
- return () => resizeObserver.disconnect();
251
- }, []);
252
250
  useEffect(() => {
253
251
  const selectedMap = {};
254
252
  vectors.forEach((vector) => {
255
- selectedMap[vector.DisplayName] = visibleVectors.has(vector.ID);
253
+ selectedMap[getUniqueName(vector)] = visibleVectors.has(vector.ID);
256
254
  });
257
255
  chartInstance.current?.setOption({ legend: { selected: selectedMap } });
258
256
  }, [visibleVectors, vectors]);
@@ -263,7 +261,7 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
263
261
  const chartSeries = vectors.map((v) => {
264
262
  const values = data[v.ID] || [];
265
263
  return {
266
- name: v.DisplayName ?? String(v.ID),
264
+ name: getUniqueName(v),
267
265
  id: v.ID,
268
266
  type: 'line',
269
267
  symbol: 'none',
@@ -291,7 +289,7 @@ export const EdaChartViewer = ({ vectors, data, visibleVectors, isDataInitialize
291
289
  };
292
290
  });
293
291
  labels?.forEach((item) => {
294
- selectedMap[item.DisplayName] = visibleVectors.has(item.ID);
292
+ selectedMap[getUniqueName(item)] = visibleVectors.has(item.ID);
295
293
  });
296
294
  chartInstance.current?.setOption({ series: chartSeries, legend: { selected: selectedMap } }, { replaceMerge: ['series'] });
297
295
  setLabelData(labels);
@@ -357,14 +355,20 @@ const tooltipFormatter = (p, mask, vectors) => {
357
355
  let list = `<div style="margin-bottom: 4px;">${date}</div>`;
358
356
  params.forEach((item) => {
359
357
  const values = item.value;
360
- const vectorInfo = vectors.find((v) => v.DisplayName === item.seriesName);
358
+ const vectorInfo = vectors.find((v) => v.DisplayName === getNameFromUniqueName(item.seriesName ?? ""));
361
359
  if (vectorInfo) {
362
360
  const value = values[1] !== null ? (formatValue(values[1], vectorInfo.RoundingType, vectorInfo.RoundingPlaces) + " " + (vectorInfo.Units ?? "")) : "Invalid";
363
361
  list += `<div style="display: flex; justify-content: space-between; align-items: center; min-width: 150px; gap: 20px;">`;
364
- list += `<span style="display: flex; align-items: center;">${item.marker}<span style="margin-left: 5px;">${item.seriesName}</span></span>`;
362
+ list += `<span style="display: flex; align-items: center;">${item.marker}<span style="margin-left: 5px;">${vectorInfo.DisplayName}</span></span>`;
365
363
  list += `<span style="font-weight: bold;">${value}</span></div>`;
366
364
  }
367
365
  });
368
366
  return list;
369
367
  };
368
+ const getUniqueName = (vector) => {
369
+ return `${vector.DisplayName}_!@#$%_${vector.ID}`;
370
+ };
371
+ const getNameFromUniqueName = (name) => {
372
+ return name.split('_!@#$%_')[0];
373
+ };
370
374
  //# sourceMappingURL=edaChartViewer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edaChartViewer.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaChartViewer.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {Button, Checkbox, CheckboxProps, ConfigProvider, Space, theme, ThemeConfig} from \"antd\";\r\nimport * as echarts from \"echarts/core\";\r\nimport {\r\n DataZoomComponentOption,\r\n ECharts,\r\n GridComponentOption,\r\n LegendComponentOption,\r\n LineSeriesOption,\r\n TitleComponentOption,\r\n ToolboxComponentOption,\r\n TooltipComponentOption,\r\n XAXisComponentOption,\r\n YAXisComponentOption\r\n} from \"echarts\";\r\nimport {CallbackDataParams, ECBasicOption, TopLevelFormatterParams} from \"echarts/types/dist/shared\";\r\nimport {RowSelectionOptions} from \"ag-grid-community/dist/types/src/entities/gridOptions\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {DownloadOutlined, RetweetOutlined, StockOutlined, ZoomInOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport ReactEcharts from \"echarts-for-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {OptionDataValue} from \"echarts/types/src/util/types\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridApi, GridReadyEvent, ICellRendererParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {formatValue} from \"../utils/utils\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {TreeItem, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${token.paddingXXS}px;\r\n height: 100%;\r\n \r\n .ant-space-item:last-child {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n > .chart {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 1 auto;\r\n border: 1px solid ${token.colorBorder};\r\n border-radius: ${token.borderRadius}px;\r\n padding: ${token.paddingXXS}px;\r\n\r\n > div:first-child {\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n \r\n > .echarts-for-react {\r\n flex: 1 1 auto;\r\n }\r\n }\r\n \r\n > .legend {\r\n position: relative;\r\n }\r\n `\r\n }\r\n});\r\n\r\ntype ChartOption = echarts.ComposeOption<\r\n LineSeriesOption |\r\n TitleComponentOption |\r\n TooltipComponentOption |\r\n LegendComponentOption |\r\n GridComponentOption |\r\n XAXisComponentOption |\r\n YAXisComponentOption |\r\n DataZoomComponentOption |\r\n ToolboxComponentOption\r\n> & ECBasicOption;\r\n\r\nconst rowSelection: RowSelectionOptions = {\r\n mode: \"singleRow\",\r\n checkboxes: false,\r\n}\r\n\r\nconst colors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'];\r\n\r\ninterface RowData extends TreeItem {\r\n id: number\r\n Min?: number\r\n Max?: number\r\n Sum?: number\r\n Avg?: number\r\n}\r\n\r\ninterface Props {\r\n vectors: TreeItem[];\r\n data: Record<number, {data: VectorValuesData}>;\r\n visibleVectors: Set<number>;\r\n isDataInitialized: boolean;\r\n onToggleVisibility: (id: number, visible: boolean) => void;\r\n onToggleAllVisibility: (visible: boolean) => void;\r\n}\r\n\r\nexport const EdaChartViewer: FC<Props> = (\r\n {vectors, data, visibleVectors, isDataInitialized, onToggleVisibility, onToggleAllVisibility}\r\n) => {\r\n const {token} = theme.useToken();\r\n const {styles} = useStyles();\r\n const {graph} = useEdaConfig();\r\n\r\n const chartInstance = useRef<ECharts | null>(null);\r\n const chartContainerRef = useRef<HTMLDivElement>(null);\r\n const gridApi = useRef<GridApi | null>(null);\r\n\r\n // handle special case to avoid echarts to re-create every render\r\n const latestProps = useRef({vectors, onToggleVisibility});\r\n latestProps.current = {vectors, onToggleVisibility};\r\n\r\n const [labelData, setLabelData] = useState<RowData[]>();\r\n const [showLegend, setShowLegend] = useState<boolean>(!!graph?.showChartLegend);\r\n const [dataZoom, setDataZoom] = useState(false);\r\n\r\n const mask = useMemo(() => LocaleHolder.getDateTimeFormat(true, false, false, true), []);\r\n\r\n const allVectorsVisible = vectors.length > 0 && vectors.every(v => visibleVectors.has(v.ID));\r\n const noVectorsVisible = visibleVectors.size === 0;\r\n\r\n const chartOptions = useMemo((): ChartOption => ({\r\n grid: {\r\n bottom: 60 + 2 * token.paddingXXS + (!showLegend ? 30 : 0),\r\n top: token.padding\r\n },\r\n tooltip: {\r\n backgroundColor: token.colorBgElevated,\r\n borderColor: token.colorBorder,\r\n textStyle: {color: token.colorText},\r\n extraCssText: `box-shadow: ${token.boxShadowSecondary}; border-radius: ${token.borderRadius}px;`,\r\n\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n },\r\n appendTo: 'body',\r\n formatter: (p) => tooltipFormatter(p, mask, vectors),\r\n },\r\n textStyle: {\r\n fontFamily: token.fontFamily,\r\n fontSize: token.fontSize,\r\n color: token.colorText\r\n },\r\n xAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {\r\n color: token.colorTextSecondary,\r\n hideOverlap: true,\r\n // formatter: (value) => dayjs(value).format(mask),\r\n },\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'time',\r\n boundaryGap: [0, 0],\r\n axisPointer: {\r\n label: {\r\n formatter: (value) => dayjs(value.value).format(mask),\r\n }\r\n }\r\n },\r\n yAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {color: token.colorTextSecondary},\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'value'\r\n },\r\n dataZoom: [\r\n {\r\n bottom: showLegend ? token.paddingXXS + 8 : 40,\r\n left: 130,\r\n right: 130,\r\n type: 'slider',\r\n show: true,\r\n realtime: true,\r\n labelFormatter: (value) => dayjs(value).format(mask),\r\n },\r\n {\r\n type: 'inside',\r\n realtime: true,\r\n }\r\n ],\r\n legend: {\r\n show: !showLegend,\r\n type: \"scroll\",\r\n bottom: 0,\r\n textStyle: {\r\n color: token.colorText,\r\n },\r\n inactiveColor: token.colorTextDisabled\r\n },\r\n toolbox: {\r\n show: true,\r\n itemSize: 0,\r\n right: 9999,\r\n feature: {\r\n dataZoom: {\r\n yAxisIndex: 'none',\r\n },\r\n restore: {}\r\n }\r\n },\r\n color: colors,\r\n }), [token, showLegend, mask, vectors]);\r\n\r\n const eventHandler = useMemo(() => ({\r\n \"legendselectchanged\": (params: any) => {\r\n const {vectors, onToggleVisibility} = latestProps.current;\r\n const name: string = params.name;\r\n const row = vectors.find((r) => r.DisplayName === name);\r\n\r\n if (row) {\r\n onToggleVisibility?.(row.ID, params.selected[name]);\r\n }\r\n }\r\n }), []);\r\n\r\n const handleSelectionChanged = useCallback((e: SelectionChangedEvent<RowData>) => {\r\n if ((e.selectedNodes?.length ?? 0) > 0) {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => {\r\n const selected = e.selectedNodes?.some((f) => f.data?.ID === v.ID) ?? false;\r\n return ({\r\n id: v.ID,\r\n lineStyle: {\r\n width: selected ? 2 : 1,\r\n opacity: selected ? 1 : 0.3,\r\n }\r\n });\r\n })\r\n })\r\n } else {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => ({id: v.ID, lineStyle: {width: 1, opacity: 1}}))\r\n });\r\n }\r\n }, [vectors]);\r\n\r\n const columnDefs = useMemo(() => {\r\n const columns: DataGridColDef[] = [\r\n {\r\n field: \"checkbox\",\r\n headerComponent: () => (\r\n <div className=\"custom-header-wrapper\">\r\n <Checkbox\r\n checked={allVectorsVisible && !noVectorsVisible}\r\n indeterminate={!allVectorsVisible && !noVectorsVisible}\r\n onChange={(e) => onToggleAllVisibility(e.target.checked)}\r\n />\r\n </div>\r\n ),\r\n maxWidth: 32,\r\n width: 32,\r\n minWidth: 32,\r\n cellRenderer: (params: ICellRendererParams) => (\r\n <ColoredCheckbox\r\n index={params.data.id}\r\n checked={visibleVectors.has(params.data.ID)}\r\n onChange={async (event) => {\r\n onToggleVisibility(params.data.ID, event.target.checked);\r\n }}\r\n />\r\n ),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"DisplayName\",\r\n headerName: i18n(\"Name\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Min\",\r\n headerName: i18n(\"Min\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Min : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Max\",\r\n headerName: i18n(\"Max\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Max : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Sum\",\r\n headerName: i18n(\"Sum\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Sum : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Avg\",\r\n headerName: i18n(\"Average\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Avg : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Units\",\r\n headerName: i18n(\"Units\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Units : undefined,\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ];\r\n\r\n return graph?.graphTable?.modifyColumns ? graph.graphTable.modifyColumns(columns) : columns;\r\n }, [data, visibleVectors, graph?.graphTable?.modifyColumns]);\r\n\r\n useEffect(() => {\r\n if (!chartContainerRef.current || !chartInstance.current) {\r\n return;\r\n }\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n window.requestAnimationFrame(() => chartInstance.current?.resize())\r\n });\r\n\r\n resizeObserver.observe(chartContainerRef.current);\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const selectedMap: Record<string, boolean> = {};\r\n\r\n vectors.forEach((vector) => {\r\n selectedMap[vector.DisplayName] = visibleVectors.has(vector.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({legend: {selected: selectedMap}});\r\n }, [visibleVectors, vectors]);\r\n\r\n useEffect(() => {\r\n if (!isDataInitialized) {\r\n return;\r\n }\r\n\r\n const chartSeries: LineSeriesOption[] = vectors.map((v): LineSeriesOption => {\r\n const values = data[v.ID] || [];\r\n\r\n return {\r\n name: v.DisplayName ?? String(v.ID),\r\n id: v.ID,\r\n type: 'line',\r\n symbol: 'none',\r\n sampling: \"minmax\",\r\n step: \"end\",\r\n lineStyle: {\r\n width: 1,\r\n opacity: 1,\r\n },\r\n data: values.data?.data?.map((v) => [v.val.valueTime, v.val.value]) ?? [],\r\n animationDuration: 300,\r\n animationEasing: 'exponentialOut',\r\n }\r\n });\r\n const selectedMap: Record<string, boolean> = {};\r\n const labels = vectors.map((v, index): RowData => {\r\n const stats = data[v.ID]?.data?.stats;\r\n return {\r\n ...v,\r\n id: index,\r\n Min: stats?.Min.value as number,\r\n Max: stats?.Max.value as number,\r\n Sum: stats?.Sum.value as number,\r\n Avg: stats?.Avg.value as number,\r\n }\r\n });\r\n\r\n labels?.forEach((item) => {\r\n selectedMap[item.DisplayName] = visibleVectors.has(item.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({series: chartSeries, legend: {selected: selectedMap}}, {replaceMerge: ['series']});\r\n setLabelData(labels);\r\n }, [data, vectors, visibleVectors, isDataInitialized]);\r\n\r\n useEffect(() => {\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: dataZoom});\r\n }, [dataZoom]);\r\n\r\n return (\r\n <div className={styles.baseLayout}>\r\n <Space direction={\"vertical\"} className={\"chart\"}>\r\n <Space>\r\n <Button\r\n icon={<StockOutlined/>}\r\n title={i18n(\"Show Legend\")}\r\n type={showLegend ? \"primary\" : \"default\"}\r\n onClick={() => setShowLegend(!showLegend)}\r\n />\r\n <Space.Compact>\r\n <Button\r\n icon={<ZoomInOutlined/>}\r\n title={i18n(\"Zoom\")}\r\n type={dataZoom ? \"primary\" : \"default\"}\r\n onClick={() => setDataZoom(!dataZoom)}\r\n />\r\n <Button\r\n icon={<RetweetOutlined/>}\r\n title={i18n(\"Restore\")}\r\n onClick={() => {\r\n setDataZoom(false);\r\n chartInstance.current?.dispatchAction({type: 'dataZoom', start: 0, end: 100});\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: false});\r\n }}\r\n />\r\n </Space.Compact>\r\n <Button\r\n icon={<DownloadOutlined/>}\r\n title={i18n(\"Export as PNG\")}\r\n onClick={() => {\r\n if (chartInstance.current) {\r\n const img = chartInstance.current.getDataURL({type: 'png', pixelRatio: 2, backgroundColor: '#fff', excludeComponents: ['dataZoom', 'toolbox']});\r\n const link = document.createElement(\"a\");\r\n\r\n link.href = img;\r\n link.download = \"chart.png\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }}\r\n />\r\n </Space>\r\n <div style={{width: \"100%\", height: \"100%\"}} ref={chartContainerRef}>\r\n <ReactEcharts\r\n style={{width: \"100%\", height: \"100%\"}}\r\n option={chartOptions}\r\n opts={{renderer: 'canvas', devicePixelRatio: window.devicePixelRatio}}\r\n lazyUpdate\r\n onChartReady={(instance: ECharts) => {\r\n chartInstance.current = instance;\r\n }}\r\n onEvents={eventHandler}\r\n />\r\n </div>\r\n </Space>\r\n {showLegend && (\r\n <div className={\"legend\"} style={{flex: `0 0 ${35 + 28 * (labelData ?? []).length + 15}px`}}>\r\n <ExtendedDataGrid<RowData>\r\n columnDefs={columnDefs}\r\n onLoadData={callback => {\r\n callback(1)\r\n }}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n gridApi.current = params.api;\r\n }}\r\n rowData={labelData}\r\n tablePanelStyle={{marginTop: `0 ${token.paddingXXS}`}}\r\n panelStyle={{padding: `0 ${token.paddingXXS}px`}}\r\n toolbar={{\r\n hideRecordCount: true,\r\n renderToolbar: () => <></>\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={() => <></>}\r\n onSelectionChanged={handleSelectionChanged}\r\n rowSelection={rowSelection}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\ninterface ColoredCheckboxProps extends CheckboxProps {\r\n index: number\r\n children?: React.ReactNode\r\n}\r\n\r\nconst ColoredCheckbox: React.FC<ColoredCheckboxProps> = ({index, children, ...props}) => {\r\n const theme: ThemeConfig = React.useMemo(() => ({\r\n token: {\r\n colorPrimary: colors[index % colors.length],\r\n },\r\n hashed: true,\r\n }), [index]);\r\n\r\n return (\r\n <ConfigProvider theme={theme}>\r\n <Checkbox {...props}>{children}</Checkbox>\r\n </ConfigProvider>\r\n )\r\n}\r\n\r\nconst tooltipFormatter = (p: TopLevelFormatterParams, mask: string, vectors: TreeItem[]) => {\r\n const params = p as CallbackDataParams[];\r\n const values = params[0].value as OptionDataValue[];\r\n const date = dayjs(values[0]).format(mask);\r\n let list = `<div style=\"margin-bottom: 4px;\">${date}</div>`;\r\n\r\n (params as CallbackDataParams[]).forEach((item) => {\r\n const values = item.value as OptionDataValue[];\r\n const vectorInfo = vectors.find((v) => v.DisplayName === item.seriesName);\r\n\r\n if (vectorInfo) {\r\n const value = values[1] !== null ? (formatValue(values[1] as number, vectorInfo.RoundingType, vectorInfo.RoundingPlaces) + \" \" + (vectorInfo.Units ?? \"\")) : \"Invalid\";\r\n\r\n list += `<div style=\"display: flex; justify-content: space-between; align-items: center; min-width: 150px; gap: 20px;\">`;\r\n list += `<span style=\"display: flex; align-items: center;\">${item.marker}<span style=\"margin-left: 5px;\">${item.seriesName}</span></span>`;\r\n list += `<span style=\"font-weight: bold;\">${value}</span></div>`;\r\n }\r\n });\r\n\r\n return list;\r\n}"]}
1
+ {"version":3,"file":"edaChartViewer.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaChartViewer.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useCallback, useEffect, useMemo, useRef, useState} from \"react\";\r\nimport {Button, Checkbox, CheckboxProps, ConfigProvider, Space, theme, ThemeConfig} from \"antd\";\r\nimport * as echarts from \"echarts/core\";\r\nimport {\r\n DataZoomComponentOption,\r\n ECharts,\r\n GridComponentOption,\r\n LegendComponentOption,\r\n LineSeriesOption,\r\n TitleComponentOption,\r\n ToolboxComponentOption,\r\n TooltipComponentOption,\r\n XAXisComponentOption,\r\n YAXisComponentOption\r\n} from \"echarts\";\r\nimport {CallbackDataParams, ECBasicOption, TopLevelFormatterParams} from \"echarts/types/dist/shared\";\r\nimport {RowSelectionOptions} from \"ag-grid-community/dist/types/src/entities/gridOptions\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {DownloadOutlined, RetweetOutlined, StockOutlined, ZoomInOutlined} from \"@ant-design/icons\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport ReactEcharts from \"echarts-for-react\";\r\nimport dayjs from \"d2core/dayjs\";\r\nimport {OptionDataValue} from \"echarts/types/src/util/types\";\r\nimport ExtendedDataGrid from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef} from \"d2coreui/components/grid/dataGrid\";\r\nimport {GridApi, GridReadyEvent, ICellRendererParams, SelectionChangedEvent} from \"ag-grid-community\";\r\nimport {formatValue} from \"../utils/utils\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {TreeItem, VectorValuesData} from \"../../../../api/eda/edaManagerApi\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${token.paddingXXS}px;\r\n height: 100%;\r\n \r\n .ant-space-item:last-child {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n\r\n > .chart {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1 1 auto;\r\n border: 1px solid ${token.colorBorder};\r\n border-radius: ${token.borderRadius}px;\r\n padding: ${token.paddingXXS}px;\r\n\r\n > div:first-child {\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n \r\n > .echarts-for-react {\r\n flex: 1 1 auto;\r\n }\r\n }\r\n \r\n > .legend {\r\n position: relative;\r\n }\r\n `\r\n }\r\n});\r\n\r\ntype ChartOption = echarts.ComposeOption<\r\n LineSeriesOption |\r\n TitleComponentOption |\r\n TooltipComponentOption |\r\n LegendComponentOption |\r\n GridComponentOption |\r\n XAXisComponentOption |\r\n YAXisComponentOption |\r\n DataZoomComponentOption |\r\n ToolboxComponentOption\r\n> & ECBasicOption;\r\n\r\nconst rowSelection: RowSelectionOptions = {\r\n mode: \"singleRow\",\r\n checkboxes: false,\r\n}\r\n\r\nconst colors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'];\r\n\r\ninterface RowData extends TreeItem {\r\n id: number\r\n Min?: number\r\n Max?: number\r\n Sum?: number\r\n Avg?: number\r\n}\r\n\r\ninterface Props {\r\n vectors: TreeItem[];\r\n data: Record<number, {data: VectorValuesData}>;\r\n visibleVectors: Set<number>;\r\n isDataInitialized: boolean;\r\n onToggleVisibility: (id: number, visible: boolean) => void;\r\n onToggleAllVisibility: (visible: boolean) => void;\r\n}\r\n\r\nexport const EdaChartViewer: FC<Props> = (\r\n {vectors, data, visibleVectors, isDataInitialized, onToggleVisibility, onToggleAllVisibility}\r\n) => {\r\n const {token} = theme.useToken();\r\n const {styles} = useStyles();\r\n const {graph} = useEdaConfig();\r\n\r\n const chartInstance = useRef<ECharts | null>(null);\r\n const gridApi = useRef<GridApi | null>(null);\r\n\r\n // handle special case to avoid echarts to re-create every render\r\n const latestProps = useRef({vectors, onToggleVisibility});\r\n latestProps.current = {vectors, onToggleVisibility};\r\n\r\n const [labelData, setLabelData] = useState<RowData[]>();\r\n const [showLegend, setShowLegend] = useState<boolean>(!!graph?.showChartLegend);\r\n const [dataZoom, setDataZoom] = useState(false);\r\n\r\n const mask = useMemo(() => LocaleHolder.getDateTimeFormat(true, false, false, true), []);\r\n\r\n const allVectorsVisible = vectors.length > 0 && vectors.every(v => visibleVectors.has(v.ID));\r\n const noVectorsVisible = visibleVectors.size === 0;\r\n\r\n const chartOptions = useMemo((): ChartOption => ({\r\n grid: {\r\n bottom: 60 + 2 * token.paddingXXS + (!showLegend ? 30 : 0),\r\n top: token.padding\r\n },\r\n tooltip: {\r\n backgroundColor: token.colorBgElevated,\r\n borderColor: token.colorBorder,\r\n textStyle: {color: token.colorText},\r\n extraCssText: `box-shadow: ${token.boxShadowSecondary}; border-radius: ${token.borderRadius}px;`,\r\n\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n },\r\n appendTo: 'body',\r\n formatter: (p) => tooltipFormatter(p, mask, vectors),\r\n },\r\n textStyle: {\r\n fontFamily: token.fontFamily,\r\n fontSize: token.fontSize,\r\n color: token.colorText\r\n },\r\n xAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {\r\n color: token.colorTextSecondary,\r\n hideOverlap: true,\r\n // formatter: (value) => dayjs(value).format(mask),\r\n },\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'time',\r\n boundaryGap: [0, 0],\r\n axisPointer: {\r\n label: {\r\n formatter: (value) => dayjs(value.value).format(mask),\r\n }\r\n }\r\n },\r\n yAxis: {\r\n axisLine: {lineStyle: {color: token.colorTextSecondary}},\r\n axisTick: {lineStyle: {color: token.colorTextTertiary}},\r\n axisLabel: {color: token.colorTextSecondary},\r\n splitLine: {lineStyle: {color: token.colorBorder}},\r\n\r\n type: 'value'\r\n },\r\n dataZoom: [\r\n {\r\n bottom: showLegend ? token.paddingXXS + 8 : 40,\r\n left: 130,\r\n right: 130,\r\n type: 'slider',\r\n show: true,\r\n realtime: true,\r\n labelFormatter: (value) => dayjs(value).format(mask),\r\n },\r\n {\r\n type: 'inside',\r\n realtime: true,\r\n }\r\n ],\r\n legend: {\r\n show: !showLegend,\r\n type: \"scroll\",\r\n bottom: 0,\r\n textStyle: {\r\n color: token.colorText,\r\n },\r\n inactiveColor: token.colorTextDisabled,\r\n formatter: (name: string) => getNameFromUniqueName(name),\r\n },\r\n toolbox: {\r\n show: true,\r\n itemSize: 0,\r\n right: 9999,\r\n feature: {\r\n dataZoom: {\r\n yAxisIndex: 'none',\r\n },\r\n restore: {}\r\n }\r\n },\r\n color: colors,\r\n }), [token, showLegend, mask, vectors]);\r\n\r\n const eventHandler = useMemo(() => ({\r\n \"legendselectchanged\": (params: any) => {\r\n const {vectors, onToggleVisibility} = latestProps.current;\r\n const name: string = getNameFromUniqueName(params.name);\r\n const row = vectors.find((r) => r.DisplayName === name);\r\n\r\n if (row) {\r\n onToggleVisibility?.(row.ID, params.selected[params.name]);\r\n }\r\n }\r\n }), []);\r\n\r\n const chartContainerRef = useCallback((node: HTMLDivElement | null) => {\r\n if (!node) {\r\n return;\r\n }\r\n\r\n new ResizeObserver(() => {\r\n window.requestAnimationFrame(() => chartInstance.current?.resize())\r\n }).observe(node);\r\n }, []);\r\n\r\n const handleSelectionChanged = useCallback((e: SelectionChangedEvent<RowData>) => {\r\n if ((e.selectedNodes?.length ?? 0) > 0) {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => {\r\n const selected = e.selectedNodes?.some((f) => f.data?.ID === v.ID) ?? false;\r\n return ({\r\n id: v.ID,\r\n lineStyle: {\r\n width: selected ? 2 : 1,\r\n opacity: selected ? 1 : 0.3,\r\n }\r\n });\r\n })\r\n })\r\n } else {\r\n chartInstance.current!.setOption({\r\n series: vectors.map((v) => ({id: v.ID, lineStyle: {width: 1, opacity: 1}}))\r\n });\r\n }\r\n }, [vectors]);\r\n\r\n const columnDefs = useMemo(() => {\r\n const columns: DataGridColDef[] = [\r\n {\r\n field: \"checkbox\",\r\n headerComponent: () => (\r\n <div className=\"custom-header-wrapper\">\r\n <Checkbox\r\n checked={allVectorsVisible && !noVectorsVisible}\r\n indeterminate={!allVectorsVisible && !noVectorsVisible}\r\n onChange={(e) => onToggleAllVisibility(e.target.checked)}\r\n />\r\n </div>\r\n ),\r\n maxWidth: 32,\r\n width: 32,\r\n minWidth: 32,\r\n cellRenderer: (params: ICellRendererParams) => (\r\n <ColoredCheckbox\r\n index={params.data.id}\r\n checked={visibleVectors.has(params.data.ID)}\r\n onChange={async (event) => {\r\n onToggleVisibility(params.data.ID, event.target.checked);\r\n }}\r\n />\r\n ),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"DisplayName\",\r\n headerName: i18n(\"Name\"),\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Min\",\r\n headerName: i18n(\"Min\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Min : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Max\",\r\n headerName: i18n(\"Max\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Max : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Sum\",\r\n headerName: i18n(\"Sum\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Sum : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Avg\",\r\n headerName: i18n(\"Average\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Avg : undefined,\r\n valueFormatter: (props) => formatValue(props.value, props.data.RoundingType, props.data.RoundingPlaces),\r\n type: [\"alignRight\"],\r\n group: i18n(\"Basic Columns\")\r\n },\r\n {\r\n field: \"Units\",\r\n headerName: i18n(\"Units\"),\r\n valueGetter: (props) => visibleVectors.has(props.data.ID) ? props.data.Units : undefined,\r\n group: i18n(\"Basic Columns\")\r\n },\r\n ];\r\n\r\n return graph?.graphTable?.modifyColumns ? graph.graphTable.modifyColumns(columns) : columns;\r\n }, [data, visibleVectors, graph?.graphTable?.modifyColumns]);\r\n\r\n useEffect(() => {\r\n const selectedMap: Record<string, boolean> = {};\r\n\r\n vectors.forEach((vector) => {\r\n selectedMap[getUniqueName(vector)] = visibleVectors.has(vector.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({legend: {selected: selectedMap}});\r\n }, [visibleVectors, vectors]);\r\n\r\n useEffect(() => {\r\n if (!isDataInitialized) {\r\n return;\r\n }\r\n\r\n const chartSeries: LineSeriesOption[] = vectors.map((v): LineSeriesOption => {\r\n const values = data[v.ID] || [];\r\n\r\n return {\r\n name: getUniqueName(v),\r\n id: v.ID,\r\n type: 'line',\r\n symbol: 'none',\r\n sampling: \"minmax\",\r\n step: \"end\",\r\n lineStyle: {\r\n width: 1,\r\n opacity: 1,\r\n },\r\n data: values.data?.data?.map((v) => [v.val.valueTime, v.val.value]) ?? [],\r\n animationDuration: 300,\r\n animationEasing: 'exponentialOut',\r\n }\r\n });\r\n const selectedMap: Record<string, boolean> = {};\r\n const labels = vectors.map((v, index): RowData => {\r\n const stats = data[v.ID]?.data?.stats;\r\n return {\r\n ...v,\r\n id: index,\r\n Min: stats?.Min.value as number,\r\n Max: stats?.Max.value as number,\r\n Sum: stats?.Sum.value as number,\r\n Avg: stats?.Avg.value as number,\r\n }\r\n });\r\n\r\n labels?.forEach((item) => {\r\n selectedMap[getUniqueName(item)] = visibleVectors.has(item.ID);\r\n });\r\n\r\n chartInstance.current?.setOption<ChartOption>({series: chartSeries, legend: {selected: selectedMap}}, {replaceMerge: ['series']});\r\n setLabelData(labels);\r\n }, [data, vectors, visibleVectors, isDataInitialized]);\r\n\r\n useEffect(() => {\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: dataZoom});\r\n }, [dataZoom]);\r\n\r\n return (\r\n <div className={styles.baseLayout}>\r\n <Space direction={\"vertical\"} className={\"chart\"}>\r\n <Space>\r\n <Button\r\n icon={<StockOutlined/>}\r\n title={i18n(\"Show Legend\")}\r\n type={showLegend ? \"primary\" : \"default\"}\r\n onClick={() => setShowLegend(!showLegend)}\r\n />\r\n <Space.Compact>\r\n <Button\r\n icon={<ZoomInOutlined/>}\r\n title={i18n(\"Zoom\")}\r\n type={dataZoom ? \"primary\" : \"default\"}\r\n onClick={() => setDataZoom(!dataZoom)}\r\n />\r\n <Button\r\n icon={<RetweetOutlined/>}\r\n title={i18n(\"Restore\")}\r\n onClick={() => {\r\n setDataZoom(false);\r\n chartInstance.current?.dispatchAction({type: 'dataZoom', start: 0, end: 100});\r\n chartInstance.current?.dispatchAction({type: 'takeGlobalCursor', key: 'dataZoomSelect', dataZoomSelectActive: false});\r\n }}\r\n />\r\n </Space.Compact>\r\n <Button\r\n icon={<DownloadOutlined/>}\r\n title={i18n(\"Export as PNG\")}\r\n onClick={() => {\r\n if (chartInstance.current) {\r\n const img = chartInstance.current.getDataURL({type: 'png', pixelRatio: 2, backgroundColor: '#fff', excludeComponents: ['dataZoom', 'toolbox']});\r\n const link = document.createElement(\"a\");\r\n\r\n link.href = img;\r\n link.download = \"chart.png\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n }}\r\n />\r\n </Space>\r\n <div style={{width: \"100%\", height: \"100%\"}} ref={chartContainerRef}>\r\n <ReactEcharts\r\n style={{width: \"100%\", height: \"100%\"}}\r\n option={chartOptions}\r\n opts={{renderer: 'canvas', devicePixelRatio: window.devicePixelRatio}}\r\n lazyUpdate\r\n onChartReady={(instance: ECharts) => {\r\n chartInstance.current = instance;\r\n }}\r\n onEvents={eventHandler}\r\n />\r\n </div>\r\n </Space>\r\n {showLegend && (\r\n <div className={\"legend\"} style={{flex: `0 0 ${35 + 28 * (labelData ?? []).length + 15}px`}}>\r\n <ExtendedDataGrid<RowData>\r\n columnDefs={columnDefs}\r\n onLoadData={callback => {\r\n callback(1)\r\n }}\r\n defaultGridConfiguration={{\r\n pageSize: -1,\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n gridApi.current = params.api;\r\n }}\r\n rowData={labelData}\r\n tablePanelStyle={{marginTop: `0 ${token.paddingXXS}`}}\r\n panelStyle={{padding: `0 ${token.paddingXXS}px`}}\r\n toolbar={{\r\n hideRecordCount: true,\r\n renderToolbar: () => <></>\r\n }}\r\n search={{\r\n hidden: true,\r\n searchButtonHidden: true,\r\n }}\r\n noRecordsOverlayRenderer={() => <></>}\r\n onSelectionChanged={handleSelectionChanged}\r\n rowSelection={rowSelection}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\ninterface ColoredCheckboxProps extends CheckboxProps {\r\n index: number\r\n children?: React.ReactNode\r\n}\r\n\r\nconst ColoredCheckbox: React.FC<ColoredCheckboxProps> = ({index, children, ...props}) => {\r\n const theme: ThemeConfig = React.useMemo(() => ({\r\n token: {\r\n colorPrimary: colors[index % colors.length],\r\n },\r\n hashed: true,\r\n }), [index]);\r\n\r\n return (\r\n <ConfigProvider theme={theme}>\r\n <Checkbox {...props}>{children}</Checkbox>\r\n </ConfigProvider>\r\n )\r\n}\r\n\r\nconst tooltipFormatter = (p: TopLevelFormatterParams, mask: string, vectors: TreeItem[]) => {\r\n const params = p as CallbackDataParams[];\r\n const values = params[0].value as OptionDataValue[];\r\n const date = dayjs(values[0]).format(mask);\r\n let list = `<div style=\"margin-bottom: 4px;\">${date}</div>`;\r\n\r\n (params as CallbackDataParams[]).forEach((item) => {\r\n const values = item.value as OptionDataValue[];\r\n const vectorInfo = vectors.find((v) => v.DisplayName === getNameFromUniqueName(item.seriesName ?? \"\"));\r\n\r\n if (vectorInfo) {\r\n const value = values[1] !== null ? (formatValue(values[1] as number, vectorInfo.RoundingType, vectorInfo.RoundingPlaces) + \" \" + (vectorInfo.Units ?? \"\")) : \"Invalid\";\r\n\r\n list += `<div style=\"display: flex; justify-content: space-between; align-items: center; min-width: 150px; gap: 20px;\">`;\r\n list += `<span style=\"display: flex; align-items: center;\">${item.marker}<span style=\"margin-left: 5px;\">${vectorInfo.DisplayName}</span></span>`;\r\n list += `<span style=\"font-weight: bold;\">${value}</span></div>`;\r\n }\r\n });\r\n\r\n return list;\r\n}\r\n\r\nconst getUniqueName = (vector: TreeItem) => {\r\n return `${vector.DisplayName}_!@#$%_${vector.ID}`;\r\n}\r\n\r\nconst getNameFromUniqueName = (name: string) => {\r\n return name.split('_!@#$%_')[0];\r\n}"]}
@@ -55,7 +55,7 @@ export const EdaDataBasePanel = ({ api, data, pageSize, range, dataContext, chil
55
55
  React.createElement(Empty, { description: i18n("No data provided") })),
56
56
  hasData &&
57
57
  React.createElement(Space, { direction: "vertical", style: { width: '100%', height: '100%' } },
58
- React.createElement(EdaSampleRangePickerPanel, { bt: range.btTotal, et: range.etTotal, sampling: range.sampling, totalCount: range.totalCount, pageSize: pageSize ?? 10, loading: !!loadingContext?.loading, page: range.vectorPage, onChange: range.updateValues }),
58
+ React.createElement(EdaSampleRangePickerPanel, { api: api, data: data, bt: range.btTotal, et: range.etTotal, sampling: range.sampling, totalCount: range.totalCount, pageSize: pageSize ?? 10, loading: !!loadingContext?.loading, page: range.vectorPage, vectors: range.vectors, displayedVectors: dataContext.vectors, onChangeRange: range.updateValues, onChangePage: range.updatePage, onChangeVectors: range.updateVectors }),
59
59
  detail?.showTimeWindow &&
60
60
  React.createElement(EdaTimeWindowPickerPanel, { start: range.btTotal, end: range.etTotal, bt: range.btWindow, et: range.etWindow, step: range.step, disabled: range.sampling === EdaSamplingType.Changes, onTimeWindowChanged: range.updateTimeWindow }),
61
61
  children)));
@@ -1 +1 @@
1
- {"version":3,"file":"edaDataBasePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaDataBasePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,UAAU,EAAC,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,MAAM,CAAC;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,eAAe,EAAY,MAAM,uBAAuB,CAAC;AACjE,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAIpE,OAAO,EAAC,cAAc,EAAC,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAEtD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,EAAE,EAAE;IAC5C,OAAO;QACH,UAAU,EAAE,GAAG,CAAA;;;;;;;;;;2BAUI,KAAK,CAAC,SAAS;;;;;;;;;;2BAUf,KAAK,CAAC,OAAO;;;;;;;;;;;SAW/B;KACJ,CAAA;AACL,CAAC,CAAC,CAAC;AAWH,MAAM,CAAC,MAAM,gBAAgB,GAAc,CAAC,EAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAC,EAAE,EAAE;IAC/F,MAAM,EAAC,MAAM,EAAC,GAAG,SAAS,EAAE,CAAC;IAC7B,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC;IAEnC,OAAO,CACH,oBAAC,IAAI,IAAC,SAAS,EAAE,MAAM,CAAC,UAAU;QAC9B,oBAAC,iBAAiB,IACd,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,EACnC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,GAChD;QACD,CAAC,OAAO,IAAI,6BAAK,SAAS,EAAE,oBAAoB;YAAE,oBAAC,KAAK,IAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAM;QACvG,OAAO;YACJ,oBAAC,KAAK,IAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC;gBAC9D,oBAAC,yBAAyB,IACtB,EAAE,EAAE,KAAK,CAAC,OAAO,EACjB,EAAE,EAAE,KAAK,CAAC,OAAO,EACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,UAAU,EAAE,KAAK,CAAC,UAAU,EAC5B,QAAQ,EAAE,QAAQ,IAAI,EAAE,EACxB,OAAO,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAClC,IAAI,EAAE,KAAK,CAAC,UAAU,EACtB,QAAQ,EAAE,KAAK,CAAC,YAAY,GAC9B;gBACD,MAAM,EAAE,cAAc;oBACnB,oBAAC,wBAAwB,IACrB,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,GAAG,EAAE,KAAK,CAAC,OAAO,EAClB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAClB,EAAE,EAAE,KAAK,CAAC,QAAQ,EAClB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,eAAe,CAAC,OAAO,EACpD,mBAAmB,EAAE,KAAK,CAAC,gBAAgB,GAC7C;gBAEL,QAAQ,CACL,CAET,CACV,CAAA;AACL,CAAC,CAAA","sourcesContent":["import React, {FC, useContext} from \"react\";\r\nimport {Card, Empty, Space} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {EdaSamplingType, TypedData} from \"../constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaSampleRangePickerPanel} from \"./edaSampleRangePickerPanel\";\r\nimport {EdaTimeWindowPickerPanel} from \"./edaTimeWindowPickerPanel\";\r\nimport {SharedSampleRangeContext} from \"../context/sharedSampleRangeContext\";\r\nimport {EdaVectorDataContextValue} from \"../context/edaVectorDataContext\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport {LoadingContext} from \"../context/loadingContext\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {EdaLoadingOverlay} from \"./edaLoadingOverlay\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n \r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n data?: TypedData\r\n pageSize?: number\r\n children?: React.ReactNode\r\n range: SharedSampleRangeContext\r\n dataContext: EdaVectorDataContextValue\r\n}\r\n\r\nexport const EdaDataBasePanel: FC<Props> = ({api, data, pageSize, range, dataContext, children}) => {\r\n const {styles} = useStyles();\r\n const {detail} = useEdaConfig();\r\n const loadingContext = useContext(LoadingContext);\r\n\r\n const hasData = data !== undefined;\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <EdaLoadingOverlay\r\n onCancel={() => api.cancelSession()}\r\n onCancelAll={() => dataContext.cancelLoading()}\r\n />\r\n {!hasData && <div className={\"eda-detail-no-data\"}><Empty description={i18n(\"No data provided\")}/></div>}\r\n {hasData &&\r\n <Space direction=\"vertical\" style={{width: '100%', height: '100%'}}>\r\n <EdaSampleRangePickerPanel\r\n bt={range.btTotal}\r\n et={range.etTotal}\r\n sampling={range.sampling}\r\n totalCount={range.totalCount}\r\n pageSize={pageSize ?? 10}\r\n loading={!!loadingContext?.loading}\r\n page={range.vectorPage}\r\n onChange={range.updateValues}\r\n />\r\n {detail?.showTimeWindow &&\r\n <EdaTimeWindowPickerPanel\r\n start={range.btTotal}\r\n end={range.etTotal}\r\n bt={range.btWindow}\r\n et={range.etWindow}\r\n step={range.step}\r\n disabled={range.sampling === EdaSamplingType.Changes} // FIXME default -> ??\r\n onTimeWindowChanged={range.updateTimeWindow}\r\n />\r\n }\r\n {children}\r\n </Space>\r\n }\r\n </Card>\r\n )\r\n}"]}
1
+ {"version":3,"file":"edaDataBasePanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaDataBasePanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {FC, useContext} from \"react\";\r\nimport {Card, Empty, Space} from \"antd\";\r\nimport {createStyles} from \"antd-style\";\r\nimport {EdaSamplingType, TypedData} from \"../constants/edaTypes\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {EdaSampleRangePickerPanel} from \"./edaSampleRangePickerPanel\";\r\nimport {EdaTimeWindowPickerPanel} from \"./edaTimeWindowPickerPanel\";\r\nimport {SharedSampleRangeContext} from \"../context/sharedSampleRangeContext\";\r\nimport {EdaVectorDataContextValue} from \"../context/edaVectorDataContext\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport {LoadingContext} from \"../context/loadingContext\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\nimport {EdaLoadingOverlay} from \"./edaLoadingOverlay\";\r\n\r\nconst useStyles = createStyles(({css, token}) => {\r\n return {\r\n baseLayout: css`\r\n display: flex;\r\n height: 100%;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n\r\n > .ant-card-body {\r\n height: 100%;\r\n padding: ${token.paddingXS}px;\r\n\r\n > div {\r\n height: 100%;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n }\r\n }\r\n\r\n .eda-detail-no-data {\r\n padding: ${token.padding}px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center !important;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n \r\n .ant-space-item:last-child {\r\n height: 100%;\r\n }\r\n `,\r\n }\r\n});\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n data?: TypedData\r\n pageSize?: number\r\n children?: React.ReactNode\r\n range: SharedSampleRangeContext\r\n dataContext: EdaVectorDataContextValue\r\n}\r\n\r\nexport const EdaDataBasePanel: FC<Props> = ({api, data, pageSize, range, dataContext, children}) => {\r\n const {styles} = useStyles();\r\n const {detail} = useEdaConfig();\r\n const loadingContext = useContext(LoadingContext);\r\n\r\n const hasData = data !== undefined;\r\n\r\n return (\r\n <Card className={styles.baseLayout}>\r\n <EdaLoadingOverlay\r\n onCancel={() => api.cancelSession()}\r\n onCancelAll={() => dataContext.cancelLoading()}\r\n />\r\n {!hasData && <div className={\"eda-detail-no-data\"}><Empty description={i18n(\"No data provided\")}/></div>}\r\n {hasData &&\r\n <Space direction=\"vertical\" style={{width: '100%', height: '100%'}}>\r\n <EdaSampleRangePickerPanel\r\n api={api}\r\n data={data}\r\n bt={range.btTotal}\r\n et={range.etTotal}\r\n sampling={range.sampling}\r\n totalCount={range.totalCount}\r\n pageSize={pageSize ?? 10}\r\n loading={!!loadingContext?.loading}\r\n page={range.vectorPage}\r\n vectors={range.vectors}\r\n displayedVectors={dataContext.vectors}\r\n onChangeRange={range.updateValues}\r\n onChangePage={range.updatePage}\r\n onChangeVectors={range.updateVectors}\r\n />\r\n {detail?.showTimeWindow &&\r\n <EdaTimeWindowPickerPanel\r\n start={range.btTotal}\r\n end={range.etTotal}\r\n bt={range.btWindow}\r\n et={range.etWindow}\r\n step={range.step}\r\n disabled={range.sampling === EdaSamplingType.Changes} // FIXME default -> ??\r\n onTimeWindowChanged={range.updateTimeWindow}\r\n />\r\n }\r\n {children}\r\n </Space>\r\n }\r\n </Card>\r\n )\r\n}"]}
@@ -1,40 +1,37 @@
1
- import React, { useContext, useEffect } from "react";
2
- import { SharedSampleRangeContext } from "../context/sharedSampleRangeContext";
3
- import { EdaVectorDataContext } from "../context/edaVectorDataContext";
1
+ import React, { useEffect } from "react";
2
+ import { useSampleRange } from "../context/sharedSampleRangeContext";
3
+ import { useEdaVectorData } from "../context/edaVectorDataContext";
4
4
  import { EdaDataBasePanel } from "./edaDataBasePanel";
5
5
  import { EdaChartViewer } from "./edaChartViewer";
6
6
  import { useEdaConfig } from "../context/edaConfigContext";
7
7
  export const EdaGraphPanel = ({ api, pageSize, data, isActive }) => {
8
8
  const { detail } = useEdaConfig();
9
- const range = useContext(SharedSampleRangeContext);
10
- const dataContext = useContext(EdaVectorDataContext);
9
+ const range = useSampleRange();
10
+ const dataContext = useEdaVectorData();
11
11
  useEffect(() => {
12
- if (data === undefined || !range || !dataContext) {
12
+ if (data === undefined) {
13
13
  return;
14
14
  }
15
15
  const dataSourceChanged = dataContext.loadedData !== data;
16
16
  if (isActive) {
17
17
  if (dataSourceChanged) {
18
- if (range.vectorPage !== 1) {
19
- range.updateValues(range.btTotal, range.etTotal, range.sampling, 1);
18
+ if (range.vectorPage !== 1 || range.vectors !== undefined) {
19
+ range.updatePage(1);
20
+ }
21
+ else {
22
+ dataContext.loadAllData(data);
20
23
  }
21
- dataContext.loadAllData(data);
22
24
  return;
23
25
  }
24
- if (dataContext.loadedRange?.vectorPage !== range.vectorPage) {
26
+ if (dataContext.loadedRange?.vectorPage !== range.vectorPage || dataContext.loadedRange?.vectors !== range.vectors) {
25
27
  dataContext.loadAllData(data);
26
28
  }
27
29
  else {
28
30
  dataContext.loadSpecificVectors(dataContext.vectors.filter((v) => dataContext.visible.has(v.ID)));
29
31
  }
30
32
  }
31
- }, [isActive, data, detail?.showTimeWindow, range]);
32
- if (range && dataContext) {
33
- return (React.createElement(EdaDataBasePanel, { api: api, data: data, range: range, dataContext: dataContext, pageSize: pageSize },
34
- React.createElement(EdaChartViewer, { vectors: dataContext.vectors, data: dataContext.data, visibleVectors: dataContext.visible, isDataInitialized: dataContext.initialized, onToggleVisibility: dataContext.toggleVectorVisibility, onToggleAllVisibility: dataContext.setAllVectorVisibility })));
35
- }
36
- else {
37
- return React.createElement("h1", null, "no data");
38
- }
33
+ }, [isActive, data, dataContext, detail?.showTimeWindow, range]);
34
+ return (React.createElement(EdaDataBasePanel, { api: api, data: data, range: range, dataContext: dataContext, pageSize: pageSize },
35
+ React.createElement(EdaChartViewer, { vectors: dataContext.vectors, data: dataContext.data, visibleVectors: dataContext.visible, isDataInitialized: dataContext.initialized, onToggleVisibility: dataContext.toggleVectorVisibility, onToggleAllVisibility: dataContext.setAllVectorVisibility })));
39
36
  };
40
37
  //# sourceMappingURL=edaGraphPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edaGraphPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaGraphPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,UAAU,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAGvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAC,oBAAoB,EAAC,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AASzD,MAAM,CAAC,MAAM,aAAa,GAAc,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAC,EAAE,EAAE;IACxE,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,OAAO;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC;QAE1D,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,iBAAiB,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO;YACX,CAAC;YAED,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC3D,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpD,IAAI,KAAK,IAAI,WAAW,EAAE,CAAC;QACvB,OAAO,CACH,oBAAC,gBAAgB,IACb,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ;YAElB,oBAAC,cAAc,IACX,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,cAAc,EAAE,WAAW,CAAC,OAAO,EACnC,iBAAiB,EAAE,WAAW,CAAC,WAAW,EAC1C,kBAAkB,EAAE,WAAW,CAAC,sBAAsB,EACtD,qBAAqB,EAAE,WAAW,CAAC,sBAAsB,GAC3D,CACa,CACtB,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO,0CAAgB,CAAA;IAC3B,CAAC;AACL,CAAC,CAAA","sourcesContent":["import React, {FC, useContext, useEffect} from \"react\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport {TypedData} from \"../constants/edaTypes\";\r\nimport {SharedSampleRangeContext} from \"../context/sharedSampleRangeContext\";\r\nimport {EdaVectorDataContext} from \"../context/edaVectorDataContext\";\r\nimport {EdaDataBasePanel} from \"./edaDataBasePanel\";\r\nimport {EdaChartViewer} from \"./edaChartViewer\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n pageSize?: number\r\n data?: TypedData\r\n isActive: boolean\r\n}\r\n\r\nexport const EdaGraphPanel: FC<Props> = ({api, pageSize, data, isActive}) => {\r\n const {detail} = useEdaConfig();\r\n\r\n const range = useContext(SharedSampleRangeContext);\r\n const dataContext = useContext(EdaVectorDataContext);\r\n\r\n useEffect(() => {\r\n if (data === undefined || !range || !dataContext) {\r\n return;\r\n }\r\n\r\n const dataSourceChanged = dataContext.loadedData !== data;\r\n\r\n if (isActive) {\r\n if (dataSourceChanged) {\r\n if (range.vectorPage !== 1) {\r\n range.updateValues(range.btTotal, range.etTotal, range.sampling, 1);\r\n }\r\n dataContext.loadAllData(data);\r\n return;\r\n }\r\n\r\n if (dataContext.loadedRange?.vectorPage !== range.vectorPage) {\r\n dataContext.loadAllData(data);\r\n } else {\r\n dataContext.loadSpecificVectors(dataContext.vectors.filter((v) => dataContext.visible.has(v.ID)));\r\n }\r\n }\r\n }, [isActive, data, detail?.showTimeWindow, range]);\r\n\r\n if (range && dataContext) {\r\n return (\r\n <EdaDataBasePanel\r\n api={api}\r\n data={data}\r\n range={range}\r\n dataContext={dataContext}\r\n pageSize={pageSize}\r\n >\r\n <EdaChartViewer\r\n vectors={dataContext.vectors}\r\n data={dataContext.data}\r\n visibleVectors={dataContext.visible}\r\n isDataInitialized={dataContext.initialized}\r\n onToggleVisibility={dataContext.toggleVectorVisibility}\r\n onToggleAllVisibility={dataContext.setAllVectorVisibility}\r\n />\r\n </EdaDataBasePanel>\r\n );\r\n } else {\r\n return <h1>no data</h1>\r\n }\r\n}"]}
1
+ {"version":3,"file":"edaGraphPanel.js","sourceRoot":"","sources":["../../../../../../coreui/components/edaManagerComponent/components/edaGraphPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AASzD,MAAM,CAAC,MAAM,aAAa,GAAc,CAAC,EAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAC,EAAE,EAAE;IACxE,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAC;IAEvC,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC;QAE1D,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,iBAAiB,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACxD,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO;YACX,CAAC;YAED,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,WAAW,CAAC,WAAW,EAAE,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;gBACjH,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjE,OAAO,CACH,oBAAC,gBAAgB,IACb,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ;QAElB,oBAAC,cAAc,IACX,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,cAAc,EAAE,WAAW,CAAC,OAAO,EACnC,iBAAiB,EAAE,WAAW,CAAC,WAAW,EAC1C,kBAAkB,EAAE,WAAW,CAAC,sBAAsB,EACtD,qBAAqB,EAAE,WAAW,CAAC,sBAAsB,GAC3D,CACa,CACtB,CAAC;AACN,CAAC,CAAA","sourcesContent":["import React, {FC, useEffect} from \"react\";\r\nimport EdaManagerApi from \"../../../../api/eda/edaManagerApi\";\r\nimport {TypedData} from \"../constants/edaTypes\";\r\nimport {useSampleRange} from \"../context/sharedSampleRangeContext\";\r\nimport {useEdaVectorData} from \"../context/edaVectorDataContext\";\r\nimport {EdaDataBasePanel} from \"./edaDataBasePanel\";\r\nimport {EdaChartViewer} from \"./edaChartViewer\";\r\nimport {useEdaConfig} from \"../context/edaConfigContext\";\r\n\r\ninterface Props {\r\n api: EdaManagerApi\r\n pageSize?: number\r\n data?: TypedData\r\n isActive: boolean\r\n}\r\n\r\nexport const EdaGraphPanel: FC<Props> = ({api, pageSize, data, isActive}) => {\r\n const {detail} = useEdaConfig();\r\n\r\n const range = useSampleRange();\r\n const dataContext = useEdaVectorData();\r\n\r\n useEffect(() => {\r\n if (data === undefined) {\r\n return;\r\n }\r\n\r\n const dataSourceChanged = dataContext.loadedData !== data;\r\n\r\n if (isActive) {\r\n if (dataSourceChanged) {\r\n if (range.vectorPage !== 1 || range.vectors !== undefined) {\r\n range.updatePage(1);\r\n } else {\r\n dataContext.loadAllData(data);\r\n }\r\n return;\r\n }\r\n\r\n if (dataContext.loadedRange?.vectorPage !== range.vectorPage || dataContext.loadedRange?.vectors !== range.vectors) {\r\n dataContext.loadAllData(data);\r\n } else {\r\n dataContext.loadSpecificVectors(dataContext.vectors.filter((v) => dataContext.visible.has(v.ID)));\r\n }\r\n }\r\n }, [isActive, data, dataContext, detail?.showTimeWindow, range]);\r\n\r\n return (\r\n <EdaDataBasePanel\r\n api={api}\r\n data={data}\r\n range={range}\r\n dataContext={dataContext}\r\n pageSize={pageSize}\r\n >\r\n <EdaChartViewer\r\n vectors={dataContext.vectors}\r\n data={dataContext.data}\r\n visibleVectors={dataContext.visible}\r\n isDataInitialized={dataContext.initialized}\r\n onToggleVisibility={dataContext.toggleVectorVisibility}\r\n onToggleAllVisibility={dataContext.setAllVectorVisibility}\r\n />\r\n </EdaDataBasePanel>\r\n );\r\n}"]}
@@ -1,7 +1,10 @@
1
- import { FC } from "react";
1
+ import React, { FC } from "react";
2
2
  import dayjs from "d2core/dayjs";
3
- import { EdaSamplingType } from "../constants/edaTypes";
3
+ import { EdaSamplingType, TypedData } from "../constants/edaTypes";
4
+ import EdaManagerApi, { TreeItem } from "../../../../api/eda/edaManagerApi";
4
5
  interface Props {
6
+ api?: EdaManagerApi;
7
+ data?: TypedData;
5
8
  bt: dayjs.Dayjs;
6
9
  et: dayjs.Dayjs;
7
10
  sampling: EdaSamplingType;
@@ -9,7 +12,12 @@ interface Props {
9
12
  pageSize: number;
10
13
  loading: boolean;
11
14
  page: number;
12
- onChange: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: EdaSamplingType, page: number) => void;
15
+ vectors?: TreeItem[];
16
+ displayedVectors?: TreeItem[];
17
+ onChangeRange: (bt: dayjs.Dayjs, et: dayjs.Dayjs, step: EdaSamplingType) => void;
18
+ onChangePage: (page: number) => void;
19
+ onChangeVectors: (vectors: TreeItem[]) => void;
20
+ children?: React.ReactNode;
13
21
  }
14
22
  export declare const EdaSampleRangePickerPanel: FC<Props>;
15
23
  export {};