@hisptz/dhis2-analytics 2.0.0-alpha.1 → 2.0.1

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 (380) hide show
  1. package/dist/components/ChartAnalytics/ChartAnalytics.stories.js +43 -20
  2. package/dist/components/ChartAnalytics/DHIS2Chart.js +43 -17
  3. package/dist/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +16 -14
  4. package/dist/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +14 -8
  5. package/dist/components/ChartAnalytics/components/DownloadMenu/index.js +21 -19
  6. package/dist/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +1 -0
  7. package/dist/components/ChartAnalytics/hooks/useChart.js +12 -10
  8. package/dist/components/ChartAnalytics/index.js +12 -1
  9. package/dist/components/ChartAnalytics/models/bar.js +6 -3
  10. package/dist/components/ChartAnalytics/models/column.js +9 -6
  11. package/dist/components/ChartAnalytics/models/index.js +3 -1
  12. package/dist/components/ChartAnalytics/models/line.js +8 -6
  13. package/dist/components/ChartAnalytics/models/multi-series.js +14 -12
  14. package/dist/components/ChartAnalytics/models/pie.js +7 -5
  15. package/dist/components/ChartAnalytics/services/export.js +20 -7
  16. package/dist/components/ChartAnalytics/types/props.js +1 -0
  17. package/dist/components/ChartAnalytics/utils/chart.js +31 -24
  18. package/dist/components/CircularProgressDashboard/CircularProgressIndicator.js +23 -14
  19. package/dist/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +10 -3
  20. package/dist/components/CircularProgressDashboard/index.js +19 -2
  21. package/dist/components/CircularProgressDashboard/types/props.js +1 -0
  22. package/dist/components/DHIS2PivotTable/DHIS2PivotTable.js +15 -13
  23. package/dist/components/DHIS2PivotTable/DHIS2PivotTable.stories.js +14 -5
  24. package/dist/components/DHIS2PivotTable/components/Table/index.js +6 -4
  25. package/dist/components/DHIS2PivotTable/components/TableBody/index.js +31 -25
  26. package/dist/components/DHIS2PivotTable/components/TableHeaders/index.js +30 -24
  27. package/dist/components/DHIS2PivotTable/index.js +19 -2
  28. package/dist/components/DHIS2PivotTable/interfaces/index.js +1 -0
  29. package/dist/components/DHIS2PivotTable/services/engine.js +12 -10
  30. package/dist/components/DHIS2PivotTable/state/engine.js +9 -6
  31. package/dist/components/Map/DHIS2Map.js +20 -13
  32. package/dist/components/Map/DHIS2Map.stories.js +17 -3
  33. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.js +21 -15
  34. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +15 -10
  35. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +18 -16
  36. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +12 -7
  37. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/AggregationSelector.js +30 -24
  38. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/ColorConfig.js +49 -42
  39. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/Name.js +22 -16
  40. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js +32 -26
  41. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/StylesConfig.js +16 -10
  42. package/dist/components/Map/components/EarthEngineLayerConfiguration/components/TypeField.js +27 -21
  43. package/dist/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js +18 -15
  44. package/dist/components/Map/components/EarthEngineLayerConfiguration/index.js +19 -2
  45. package/dist/components/Map/components/MapArea/index.js +41 -32
  46. package/dist/components/Map/components/MapArea/interfaces/index.js +1 -0
  47. package/dist/components/Map/components/MapControls/components/CustomControl/index.js +5 -3
  48. package/dist/components/Map/components/MapControls/components/DownloadControl/index.js +14 -8
  49. package/dist/components/Map/components/MapControls/components/FullscreenControl/index.js +9 -7
  50. package/dist/components/Map/components/MapControls/index.js +17 -10
  51. package/dist/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +5 -3
  52. package/dist/components/Map/components/MapLayer/components/BoundaryLayer/index.js +31 -21
  53. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +31 -21
  54. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +88 -80
  55. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +14 -9
  56. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +69 -62
  57. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +1 -0
  58. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +3 -1
  59. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +41 -19
  60. package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +9 -1
  61. package/dist/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +8 -6
  62. package/dist/components/Map/components/MapLayer/components/LegendArea/index.js +57 -46
  63. package/dist/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +31 -25
  64. package/dist/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +7 -5
  65. package/dist/components/Map/components/MapLayer/components/PointLayer/index.js +28 -21
  66. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +12 -10
  67. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js +32 -21
  68. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +20 -13
  69. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +23 -17
  70. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +27 -18
  71. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +19 -13
  72. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +21 -15
  73. package/dist/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +8 -6
  74. package/dist/components/Map/components/MapLayer/components/ThematicLayer/index.js +24 -16
  75. package/dist/components/Map/components/MapLayer/index.js +18 -10
  76. package/dist/components/Map/components/MapLayer/interfaces/index.js +3 -1
  77. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +63 -59
  78. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js +36 -30
  79. package/dist/components/Map/components/MapProvider/hooks/index.js +10 -6
  80. package/dist/components/Map/components/MapProvider/index.js +31 -25
  81. package/dist/components/Map/components/MapUpdater/index.js +7 -5
  82. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.js +21 -15
  83. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +10 -5
  84. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js +60 -53
  85. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +12 -7
  86. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +15 -9
  87. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js +4 -1
  88. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +30 -22
  89. package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +18 -7
  90. package/dist/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +30 -23
  91. package/dist/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +22 -16
  92. package/dist/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +22 -16
  93. package/dist/components/Map/components/ThematicLayerConfiguration/components/RadiusField.js +22 -16
  94. package/dist/components/Map/components/ThematicLayerConfiguration/components/TypeField.js +24 -18
  95. package/dist/components/Map/components/ThematicLayerConfiguration/index.js +26 -3
  96. package/dist/components/Map/components/ThematicLayerConfiguration/types/index.js +1 -0
  97. package/dist/components/Map/constants/colors.js +4 -1
  98. package/dist/components/Map/constants/legendSet.js +3 -1
  99. package/dist/components/Map/hooks/map.js +21 -17
  100. package/dist/components/Map/index.js +40 -5
  101. package/dist/components/Map/interfaces/index.js +1 -0
  102. package/dist/components/Map/state/index.js +9 -5
  103. package/dist/components/Map/utils/colors.js +19 -7
  104. package/dist/components/Map/utils/helpers.js +11 -3
  105. package/dist/components/Map/utils/map.js +23 -13
  106. package/dist/components/SingleValueContainer/SingleValueContainer.stories.js +11 -3
  107. package/dist/components/SingleValueContainer/SingleValueVisualizer.js +35 -17
  108. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +21 -14
  109. package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +13 -7
  110. package/dist/components/SingleValueContainer/index.js +26 -3
  111. package/dist/components/SingleValueContainer/types/props.js +1 -0
  112. package/dist/components/Visualization/components/AnalyticsDataProvider/index.js +23 -20
  113. package/dist/components/Visualization/components/DimensionsProvider/index.js +18 -13
  114. package/dist/components/Visualization/components/LayoutProvider/index.js +11 -7
  115. package/dist/components/Visualization/components/VisualizationDimensionSelector/index.js +36 -30
  116. package/dist/components/Visualization/components/VisualizationProvider/index.js +9 -7
  117. package/dist/components/Visualization/components/VisualizationSelector/index.js +57 -46
  118. package/dist/components/Visualization/components/VisualizationTypeProvider/index.js +18 -11
  119. package/dist/components/Visualization/components/VisualizationTypeSelector/index.js +27 -21
  120. package/dist/components/Visualization/index.js +33 -27
  121. package/dist/esm/components/ChartAnalytics/ChartAnalytics.stories.js +254 -0
  122. package/dist/esm/components/ChartAnalytics/ChartAnalytics.stories.js.map +1 -0
  123. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js +36 -0
  124. package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -0
  125. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +52 -0
  126. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/components/Menu.js.map +1 -0
  127. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +42 -0
  128. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/constants/menu.js.map +1 -0
  129. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js +65 -0
  130. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -0
  131. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +3 -0
  132. package/dist/esm/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js.map +1 -0
  133. package/dist/esm/components/ChartAnalytics/hooks/useChart.js +43 -0
  134. package/dist/esm/components/ChartAnalytics/hooks/useChart.js.map +1 -0
  135. package/dist/esm/components/ChartAnalytics/index.js +3 -0
  136. package/dist/esm/components/ChartAnalytics/index.js.map +1 -0
  137. package/dist/esm/components/ChartAnalytics/models/bar.js +21 -0
  138. package/dist/esm/components/ChartAnalytics/models/bar.js.map +1 -0
  139. package/dist/esm/components/ChartAnalytics/models/column.js +48 -0
  140. package/dist/esm/components/ChartAnalytics/models/column.js.map +1 -0
  141. package/dist/esm/components/ChartAnalytics/models/index.js +114 -0
  142. package/dist/esm/components/ChartAnalytics/models/index.js.map +1 -0
  143. package/dist/esm/components/ChartAnalytics/models/line.js +31 -0
  144. package/dist/esm/components/ChartAnalytics/models/line.js.map +1 -0
  145. package/dist/esm/components/ChartAnalytics/models/multi-series.js +112 -0
  146. package/dist/esm/components/ChartAnalytics/models/multi-series.js.map +1 -0
  147. package/dist/esm/components/ChartAnalytics/models/pie.js +53 -0
  148. package/dist/esm/components/ChartAnalytics/models/pie.js.map +1 -0
  149. package/dist/esm/components/ChartAnalytics/services/export.js +35 -0
  150. package/dist/esm/components/ChartAnalytics/services/export.js.map +1 -0
  151. package/dist/esm/components/ChartAnalytics/styles/custom-highchart.css +40 -0
  152. package/dist/esm/components/ChartAnalytics/styles/custom-highchart.css.map +1 -0
  153. package/dist/esm/components/ChartAnalytics/types/props.js +3 -0
  154. package/dist/esm/components/ChartAnalytics/types/props.js.map +1 -0
  155. package/dist/esm/components/ChartAnalytics/utils/chart.js +130 -0
  156. package/dist/esm/components/ChartAnalytics/utils/chart.js.map +1 -0
  157. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js +66 -0
  158. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -0
  159. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +42 -0
  160. package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.stories.js.map +1 -0
  161. package/dist/esm/components/CircularProgressDashboard/index.js +4 -0
  162. package/dist/esm/components/CircularProgressDashboard/index.js.map +1 -0
  163. package/dist/esm/components/CircularProgressDashboard/types/props.js +3 -0
  164. package/dist/esm/components/CircularProgressDashboard/types/props.js.map +1 -0
  165. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js +26 -0
  166. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -0
  167. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.stories.js +30 -0
  168. package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.stories.js.map +1 -0
  169. package/dist/esm/components/DHIS2PivotTable/components/Table/index.js +10 -0
  170. package/dist/esm/components/DHIS2PivotTable/components/Table/index.js.map +1 -0
  171. package/dist/esm/components/DHIS2PivotTable/components/TableBody/TableBody.module.css +11 -0
  172. package/dist/esm/components/DHIS2PivotTable/components/TableBody/TableBody.module.css.map +1 -0
  173. package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js +106 -0
  174. package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -0
  175. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/TableHeaders.module.css +10 -0
  176. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/TableHeaders.module.css.map +1 -0
  177. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js +94 -0
  178. package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -0
  179. package/dist/esm/components/DHIS2PivotTable/index.js +4 -0
  180. package/dist/esm/components/DHIS2PivotTable/index.js.map +1 -0
  181. package/dist/esm/components/DHIS2PivotTable/interfaces/index.js +3 -0
  182. package/dist/esm/components/DHIS2PivotTable/interfaces/index.js.map +1 -0
  183. package/dist/esm/components/DHIS2PivotTable/services/engine.js +87 -0
  184. package/dist/esm/components/DHIS2PivotTable/services/engine.js.map +1 -0
  185. package/dist/esm/components/DHIS2PivotTable/state/engine.js +17 -0
  186. package/dist/esm/components/DHIS2PivotTable/state/engine.js.map +1 -0
  187. package/dist/esm/components/Map/DHIS2Map.js +65 -0
  188. package/dist/esm/components/Map/DHIS2Map.js.map +1 -0
  189. package/dist/esm/components/Map/DHIS2Map.stories.js +366 -0
  190. package/dist/esm/components/Map/DHIS2Map.stories.js.map +1 -0
  191. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.js +41 -0
  192. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.js.map +1 -0
  193. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +34 -0
  194. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js.map +1 -0
  195. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +26 -0
  196. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js.map +1 -0
  197. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +21 -0
  198. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js.map +1 -0
  199. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/AggregationSelector.js +67 -0
  200. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/AggregationSelector.js.map +1 -0
  201. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/ColorConfig.js +134 -0
  202. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/ColorConfig.js.map +1 -0
  203. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js +44 -0
  204. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -0
  205. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js +67 -0
  206. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -0
  207. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/StylesConfig.js +24 -0
  208. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/StylesConfig.js.map +1 -0
  209. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/TypeField.js +67 -0
  210. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/TypeField.js.map +1 -0
  211. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js +45 -0
  212. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/hooks/data.js.map +1 -0
  213. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/index.js +4 -0
  214. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/index.js.map +1 -0
  215. package/dist/esm/components/Map/components/MapArea/index.js +100 -0
  216. package/dist/esm/components/Map/components/MapArea/index.js.map +1 -0
  217. package/dist/esm/components/Map/components/MapArea/interfaces/index.js +3 -0
  218. package/dist/esm/components/Map/components/MapArea/interfaces/index.js.map +1 -0
  219. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js +16 -0
  220. package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -0
  221. package/dist/esm/components/Map/components/MapControls/components/DownloadControl/index.js +15 -0
  222. package/dist/esm/components/Map/components/MapControls/components/DownloadControl/index.js.map +1 -0
  223. package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js +13 -0
  224. package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -0
  225. package/dist/esm/components/Map/components/MapControls/index.js +35 -0
  226. package/dist/esm/components/Map/components/MapControls/index.js.map +1 -0
  227. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +10 -0
  228. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js.map +1 -0
  229. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/index.js +52 -0
  230. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/index.js.map +1 -0
  231. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +100 -0
  232. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -0
  233. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +457 -0
  234. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js.map +1 -0
  235. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +32 -0
  236. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js.map +1 -0
  237. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +197 -0
  238. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -0
  239. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +3 -0
  240. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js.map +1 -0
  241. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +31466 -0
  242. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js.map +1 -0
  243. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +365 -0
  244. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js.map +1 -0
  245. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +93 -0
  246. package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js.map +1 -0
  247. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css +10 -0
  248. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css.map +1 -0
  249. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +17 -0
  250. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js.map +1 -0
  251. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js +179 -0
  252. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -0
  253. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +92 -0
  254. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -0
  255. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +11 -0
  256. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/hooks/index.js.map +1 -0
  257. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/index.js +48 -0
  258. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/index.js.map +1 -0
  259. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +64 -0
  260. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js.map +1 -0
  261. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js +130 -0
  262. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -0
  263. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +41 -0
  264. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -0
  265. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +50 -0
  266. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -0
  267. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +56 -0
  268. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -0
  269. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +40 -0
  270. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js.map +1 -0
  271. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +40 -0
  272. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -0
  273. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +12 -0
  274. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js.map +1 -0
  275. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/index.js +55 -0
  276. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/index.js.map +1 -0
  277. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css +56 -0
  278. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css.map +1 -0
  279. package/dist/esm/components/Map/components/MapLayer/index.js +32 -0
  280. package/dist/esm/components/Map/components/MapLayer/index.js.map +1 -0
  281. package/dist/esm/components/Map/components/MapLayer/interfaces/index.js +10 -0
  282. package/dist/esm/components/Map/components/MapLayer/interfaces/index.js.map +1 -0
  283. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +405 -0
  284. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -0
  285. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js +115 -0
  286. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -0
  287. package/dist/esm/components/Map/components/MapProvider/hooks/index.js +16 -0
  288. package/dist/esm/components/Map/components/MapProvider/hooks/index.js.map +1 -0
  289. package/dist/esm/components/Map/components/MapProvider/index.js +95 -0
  290. package/dist/esm/components/Map/components/MapProvider/index.js.map +1 -0
  291. package/dist/esm/components/Map/components/MapUpdater/index.js +11 -0
  292. package/dist/esm/components/Map/components/MapUpdater/index.js.map +1 -0
  293. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.js +41 -0
  294. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.js.map +1 -0
  295. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +24 -0
  296. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js.map +1 -0
  297. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js +174 -0
  298. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -0
  299. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +21 -0
  300. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js.map +1 -0
  301. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +36 -0
  302. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js.map +1 -0
  303. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js +436 -0
  304. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js.map +1 -0
  305. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +71 -0
  306. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -0
  307. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css +15 -0
  308. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css.map +1 -0
  309. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css +12 -0
  310. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css.map +1 -0
  311. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +82 -0
  312. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js.map +1 -0
  313. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +57 -0
  314. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js.map +1 -0
  315. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +44 -0
  316. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -0
  317. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +60 -0
  318. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -0
  319. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/RadiusField.js +54 -0
  320. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/RadiusField.js.map +1 -0
  321. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/TypeField.js +63 -0
  322. package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/TypeField.js.map +1 -0
  323. package/dist/esm/components/Map/components/ThematicLayerConfiguration/index.js +5 -0
  324. package/dist/esm/components/Map/components/ThematicLayerConfiguration/index.js.map +1 -0
  325. package/dist/esm/components/Map/components/ThematicLayerConfiguration/types/index.js +3 -0
  326. package/dist/esm/components/Map/components/ThematicLayerConfiguration/types/index.js.map +1 -0
  327. package/dist/esm/components/Map/constants/colors.js +436 -0
  328. package/dist/esm/components/Map/constants/colors.js.map +1 -0
  329. package/dist/esm/components/Map/constants/legendSet.js +23 -0
  330. package/dist/esm/components/Map/constants/legendSet.js.map +1 -0
  331. package/dist/esm/components/Map/hooks/map.js +44 -0
  332. package/dist/esm/components/Map/hooks/map.js.map +1 -0
  333. package/dist/esm/components/Map/index.js +7 -0
  334. package/dist/esm/components/Map/index.js.map +1 -0
  335. package/dist/esm/components/Map/interfaces/index.js +3 -0
  336. package/dist/esm/components/Map/interfaces/index.js.map +1 -0
  337. package/dist/esm/components/Map/state/index.js +18 -0
  338. package/dist/esm/components/Map/state/index.js.map +1 -0
  339. package/dist/esm/components/Map/utils/colors.js +85 -0
  340. package/dist/esm/components/Map/utils/colors.js.map +1 -0
  341. package/dist/esm/components/Map/utils/helpers.js +18 -0
  342. package/dist/esm/components/Map/utils/helpers.js.map +1 -0
  343. package/dist/esm/components/Map/utils/map.js +138 -0
  344. package/dist/esm/components/Map/utils/map.js.map +1 -0
  345. package/dist/esm/components/SingleValueContainer/SingleValueContainer.stories.js +145 -0
  346. package/dist/esm/components/SingleValueContainer/SingleValueContainer.stories.js.map +1 -0
  347. package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js +44 -0
  348. package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -0
  349. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +49 -0
  350. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -0
  351. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +22 -0
  352. package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -0
  353. package/dist/esm/components/SingleValueContainer/index.js +5 -0
  354. package/dist/esm/components/SingleValueContainer/index.js.map +1 -0
  355. package/dist/esm/components/SingleValueContainer/styles/SingleValueContainer.module.css +32 -0
  356. package/dist/esm/components/SingleValueContainer/styles/SingleValueContainer.module.css.map +1 -0
  357. package/dist/esm/components/SingleValueContainer/types/props.js +3 -0
  358. package/dist/esm/components/SingleValueContainer/types/props.js.map +1 -0
  359. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js +94 -0
  360. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -0
  361. package/dist/esm/components/Visualization/components/DimensionsProvider/index.js +35 -0
  362. package/dist/esm/components/Visualization/components/DimensionsProvider/index.js.map +1 -0
  363. package/dist/esm/components/Visualization/components/LayoutProvider/index.js +18 -0
  364. package/dist/esm/components/Visualization/components/LayoutProvider/index.js.map +1 -0
  365. package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js +85 -0
  366. package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -0
  367. package/dist/esm/components/Visualization/components/VisualizationProvider/index.js +19 -0
  368. package/dist/esm/components/Visualization/components/VisualizationProvider/index.js.map +1 -0
  369. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js +167 -0
  370. package/dist/esm/components/Visualization/components/VisualizationSelector/index.js.map +1 -0
  371. package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js +27 -0
  372. package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -0
  373. package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js +55 -0
  374. package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -0
  375. package/dist/esm/components/Visualization/index.js +113 -0
  376. package/dist/esm/components/Visualization/index.js.map +1 -0
  377. package/dist/esm/index.js +8 -0
  378. package/dist/esm/index.js.map +1 -0
  379. package/dist/index.js +47 -6
  380. package/package.json +5 -6
@@ -0,0 +1,114 @@
1
+ class DHIS2Chart {
2
+ constructor(id, analytics, config) {
3
+ this.id = id;
4
+ this.analytics = analytics;
5
+ this.config = config;
6
+ }
7
+ getChartConfig() {
8
+ return {
9
+ renderTo: this.id,
10
+ zoomType: "xy",
11
+ type: this.getHighchartsType(),
12
+ height: this.config?.height,
13
+ styledMode: false
14
+ };
15
+ }
16
+ getOptions() {
17
+ const options = {
18
+ yAxis: this.getYAxis(),
19
+ chart: this.getChartConfig(),
20
+ colors: this.config?.colors ?? [
21
+ "#a8bf24",
22
+ "#518cc3",
23
+ "#d74554",
24
+ "#ff9e21",
25
+ "#968f8f",
26
+ "#ba3ba1",
27
+ "#ffda54",
28
+ "#45beae",
29
+ "#b98037",
30
+ "#676767",
31
+ "#6b2dd4",
32
+ "#47792c",
33
+ "#fcbdbd",
34
+ "#830000",
35
+ "#a5ffc0",
36
+ "#000078",
37
+ "#817c00",
38
+ "#bdf023",
39
+ "#fffac4"
40
+ ],
41
+ series: this.getSeries(),
42
+ plotOptions: this.getPlotOptions(),
43
+ title: { text: "" },
44
+ xAxis: this.getXAxis(),
45
+ exporting: this.getExporting(),
46
+ legend: { enabled: true },
47
+ credits: { enabled: false }
48
+ };
49
+ let overrides = {};
50
+ if (this.config?.highChartOverrides) {
51
+ overrides = {
52
+ ...typeof this.config?.highChartOverrides === "object" ? this.config?.highChartOverrides ?? {} : this.config?.highChartOverrides(options)
53
+ };
54
+ }
55
+ return {
56
+ ...options,
57
+ ...overrides
58
+ };
59
+ }
60
+ getYAxis() {
61
+ return [
62
+ {
63
+ title: {
64
+ text: "",
65
+ style: {
66
+ color: "#000000",
67
+ fontWeight: "normal",
68
+ fontSize: "14px"
69
+ }
70
+ },
71
+ labels: {
72
+ enabled: true,
73
+ style: {
74
+ color: "#000000",
75
+ fontWeight: "normal",
76
+ fontSize: "14px"
77
+ }
78
+ },
79
+ plotLines: [
80
+ {
81
+ color: "#000000",
82
+ dashStyle: "Solid",
83
+ width: 2,
84
+ zIndex: 1e3,
85
+ label: { text: "" }
86
+ },
87
+ {
88
+ color: "#bbbbbb",
89
+ dashStyle: "Solid",
90
+ zIndex: 1e3,
91
+ width: 2,
92
+ label: { text: "" }
93
+ }
94
+ ]
95
+ }
96
+ ];
97
+ }
98
+ getExporting() {
99
+ const name = this.config?.name ?? "chart";
100
+ return {
101
+ filename: `${name}`,
102
+ sourceWidth: 1200,
103
+ buttons: {
104
+ contextButton: {
105
+ enabled: false
106
+ }
107
+ }
108
+ };
109
+ }
110
+ }
111
+
112
+ export { DHIS2Chart };
113
+ //# sourceMappingURL=out.js.map
114
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/index.ts"],"names":[],"mappings":"AAIO,MAAe,WAAW;AAAA,EAKhC,YAAY,IAAY,WAAsB,QAAqB;AAClE,SAAK,KAAK;AACV,SAAK,YAAY;AACjB,SAAK,SAAS;AAAA,EACf;AAAA,EAIA,iBAAgD;AAC/C,WAAO;AAAA,MACN,UAAU,KAAK;AAAA,MACf,UAAU;AAAA,MACV,MAAM,KAAK,kBAAkB;AAAA,MAC7B,QAAQ,KAAK,QAAQ;AAAA,MACrB,YAAY;AAAA,IACb;AAAA,EACD;AAAA,EAEA,aAAiC;AAChC,UAAM,UAAU;AAAA,MACf,OAAO,KAAK,SAAS;AAAA,MACrB,OAAO,KAAK,eAAe;AAAA,MAC3B,QAAQ,KAAK,QAAQ,UAAU;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACA,QAAQ,KAAK,UAAU;AAAA,MACvB,aAAa,KAAK,eAAe;AAAA,MACjC,OAAO,EAAE,MAAM,GAAG;AAAA,MAClB,OAAO,KAAK,SAAS;AAAA,MACrB,WAAW,KAAK,aAAa;AAAA,MAC7B,QAAQ,EAAE,SAAS,KAAK;AAAA,MACxB,SAAS,EAAE,SAAS,MAAM;AAAA,IAC3B;AAEA,QAAI,YAAY,CAAC;AAEjB,QAAI,KAAK,QAAQ,oBAAoB;AACpC,kBAAY;AAAA,QACX,GAAI,OAAO,KAAK,QAAQ,uBAAuB,WAC5C,KAAK,QAAQ,sBAAsB,CAAC,IACpC,KAAK,QAAQ,mBAAmB,OAAO;AAAA,MAC3C;AAAA,IACD;AAEA,WAAO;AAAA,MACN,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACD;AAAA,EAQA,WAAsC;AACrC,WAAO;AAAA,MACN;AAAA,QACC,OAAO;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,YACN,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,UAAU;AAAA,UACX;AAAA,QACD;AAAA,QACA,QAAQ;AAAA,UACP,SAAS;AAAA,UACT,OAAO;AAAA,YACN,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,UAAU;AAAA,UACX;AAAA,QACD;AAAA,QACA,WAAW;AAAA,UACV;AAAA,YACC,OAAO;AAAA,YACP,WAAW;AAAA,YACX,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,OAAO,EAAE,MAAM,GAAG;AAAA,UACnB;AAAA,UACA;AAAA,YACC,OAAO;AAAA,YACP,WAAW;AAAA,YACX,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO,EAAE,MAAM,GAAG;AAAA,UACnB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,eAA4C;AAC3C,UAAM,OAAO,KAAK,QAAQ,QAAQ;AAClC,WAAO;AAAA,MACN,UAAU,GAAG,IAAI;AAAA,MACjB,aAAa;AAAA,MACb,SAAS;AAAA,QACR,eAAe;AAAA,UACd,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD","sourcesContent":["import type { Analytics } from \"@hisptz/dhis2-utils\";\nimport HighCharts from \"highcharts\";\nimport { ChartConfig } from \"../types/props.js\";\n\nexport abstract class DHIS2Chart {\n\tid: string;\n\tanalytics: Analytics;\n\tconfig: ChartConfig;\n\n\tconstructor(id: string, analytics: Analytics, config: ChartConfig) {\n\t\tthis.id = id;\n\t\tthis.analytics = analytics;\n\t\tthis.config = config;\n\t}\n\n\tabstract getHighchartsType(): string;\n\n\tgetChartConfig(): HighCharts.ChartOptions & any {\n\t\treturn {\n\t\t\trenderTo: this.id,\n\t\t\tzoomType: \"xy\",\n\t\t\ttype: this.getHighchartsType(),\n\t\t\theight: this.config?.height,\n\t\t\tstyledMode: false,\n\t\t};\n\t}\n\n\tgetOptions(): HighCharts.Options {\n\t\tconst options = {\n\t\t\tyAxis: this.getYAxis(),\n\t\t\tchart: this.getChartConfig(),\n\t\t\tcolors: this.config?.colors ?? [\n\t\t\t\t\"#a8bf24\",\n\t\t\t\t\"#518cc3\",\n\t\t\t\t\"#d74554\",\n\t\t\t\t\"#ff9e21\",\n\t\t\t\t\"#968f8f\",\n\t\t\t\t\"#ba3ba1\",\n\t\t\t\t\"#ffda54\",\n\t\t\t\t\"#45beae\",\n\t\t\t\t\"#b98037\",\n\t\t\t\t\"#676767\",\n\t\t\t\t\"#6b2dd4\",\n\t\t\t\t\"#47792c\",\n\t\t\t\t\"#fcbdbd\",\n\t\t\t\t\"#830000\",\n\t\t\t\t\"#a5ffc0\",\n\t\t\t\t\"#000078\",\n\t\t\t\t\"#817c00\",\n\t\t\t\t\"#bdf023\",\n\t\t\t\t\"#fffac4\",\n\t\t\t],\n\t\t\tseries: this.getSeries(),\n\t\t\tplotOptions: this.getPlotOptions(),\n\t\t\ttitle: { text: \"\" },\n\t\t\txAxis: this.getXAxis(),\n\t\t\texporting: this.getExporting(),\n\t\t\tlegend: { enabled: true },\n\t\t\tcredits: { enabled: false },\n\t\t};\n\n\t\tlet overrides = {};\n\n\t\tif (this.config?.highChartOverrides) {\n\t\t\toverrides = {\n\t\t\t\t...(typeof this.config?.highChartOverrides === \"object\"\n\t\t\t\t\t? this.config?.highChartOverrides ?? {}\n\t\t\t\t\t: this.config?.highChartOverrides(options)),\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t...options,\n\t\t\t...overrides,\n\t\t};\n\t}\n\n\tabstract getSeries(): HighCharts.SeriesOptionsType[];\n\n\tabstract getPlotOptions(): HighCharts.PlotOptions;\n\n\tabstract getXAxis(): HighCharts.XAxisOptions | undefined;\n\n\tgetYAxis(): HighCharts.YAxisOptions[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\ttitle: {\n\t\t\t\t\ttext: \"\",\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tfontWeight: \"normal\",\n\t\t\t\t\t\tfontSize: \"14px\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplotLines: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#000000\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: \"#bbbbbb\",\n\t\t\t\t\t\tdashStyle: \"Solid\",\n\t\t\t\t\t\tzIndex: 1000,\n\t\t\t\t\t\twidth: 2,\n\t\t\t\t\t\tlabel: { text: \"\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t];\n\t}\n\n\tgetExporting(): HighCharts.ExportingOptions {\n\t\tconst name = this.config?.name ?? \"chart\";\n\t\treturn {\n\t\t\tfilename: `${name}`,\n\t\t\tsourceWidth: 1200,\n\t\t\tbuttons: {\n\t\t\t\tcontextButton: {\n\t\t\t\t\tenabled: false,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { getPointSeries, getAllCategories } from '../utils/chart.js';
2
+ import { DHIS2Chart } from './index.js';
3
+
4
+ class DHIS2LineChart extends DHIS2Chart {
5
+ getHighchartsType() {
6
+ return "line";
7
+ }
8
+ getPlotOptions() {
9
+ return {
10
+ line: {}
11
+ };
12
+ }
13
+ getSeries() {
14
+ return getPointSeries(this.analytics, this.config, "line");
15
+ }
16
+ getXAxis() {
17
+ return {
18
+ type: "category",
19
+ categories: getAllCategories(this.analytics, this.config),
20
+ crosshair: true,
21
+ labels: {
22
+ enabled: true
23
+ },
24
+ title: { text: "" }
25
+ };
26
+ }
27
+ }
28
+
29
+ export { DHIS2LineChart };
30
+ //# sourceMappingURL=out.js.map
31
+ //# sourceMappingURL=line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/line.ts"],"names":[],"mappings":"AACA,SAAS,kBAAkB,sBAAsB;AACjD,SAAS,kBAAkB;AAEpB,MAAM,uBAAuB,WAAW;AAAA,EAC9C,oBAA4B;AAC3B,WAAO;AAAA,EACR;AAAA,EAEA,iBAA8B;AAC7B,WAAO;AAAA,MACN,MAAM,CAAC;AAAA,IACR;AAAA,EACD;AAAA,EAEA,YAAiC;AAChC,WAAO,eAAe,KAAK,WAAW,KAAK,QAAQ,MAAM;AAAA,EAC1D;AAAA,EAEA,WAAqC;AACpC,WAAO;AAAA,MACN,MAAM;AAAA,MACN,YAAY,iBAAiB,KAAK,WAAW,KAAK,MAAM;AAAA,MACxD,WAAW;AAAA,MACX,QAAQ;AAAA,QACP,SAAS;AAAA,MACV;AAAA,MACA,OAAO,EAAE,MAAM,GAAG;AAAA,IACnB;AAAA,EACD;AACD","sourcesContent":["import { PlotOptions, SeriesOptionsType, XAxisOptions } from \"highcharts\";\nimport { getAllCategories, getPointSeries } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2LineChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"line\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tline: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\treturn getPointSeries(this.analytics, this.config, \"line\");\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n}\n"]}
@@ -0,0 +1,112 @@
1
+ import { head, compact } from 'lodash';
2
+ import { getDimensionHeaderIndex, getAllCategories } from '../utils/chart.js';
3
+ import { DHIS2Chart } from './index.js';
4
+
5
+ class DHIS2MultiSeriesChart extends DHIS2Chart {
6
+ getHighchartsType() {
7
+ return "";
8
+ }
9
+ getPlotOptions() {
10
+ return {
11
+ column: {},
12
+ line: {}
13
+ };
14
+ }
15
+ getSeries() {
16
+ const analytics = this.analytics;
17
+ const config = this.config;
18
+ const categoryDimension = head(config.layout.category);
19
+ const seriesConfig = this.config.multiSeries;
20
+ const categoryIndex = getDimensionHeaderIndex(
21
+ analytics.headers ?? [],
22
+ categoryDimension ?? ""
23
+ );
24
+ const seriesIndex = getDimensionHeaderIndex(
25
+ analytics.headers ?? [],
26
+ head(config.layout.series) ?? ""
27
+ );
28
+ const valueIndex = getDimensionHeaderIndex(
29
+ analytics.headers ?? [],
30
+ "value"
31
+ );
32
+ if (!categoryDimension) {
33
+ throw new Error("At least one category dimension is required");
34
+ }
35
+ if (!seriesConfig) {
36
+ throw new Error(
37
+ "MultiSeries config is required for chart type multi-series"
38
+ );
39
+ }
40
+ return compact(
41
+ seriesConfig?.series?.map(({ id, as, cumulative, yAxis }) => {
42
+ const dataItem = analytics.metaData?.items[id];
43
+ const categoryItems = analytics.metaData?.dimensions[categoryDimension];
44
+ const data = categoryItems?.map((item) => {
45
+ const row = analytics.rows?.find(
46
+ (row2) => row2[categoryIndex] === item && row2[seriesIndex] === id
47
+ );
48
+ return row?.[valueIndex] ? parseFloat(row?.[valueIndex]) : 0;
49
+ });
50
+ let cumulativeData = [];
51
+ if (cumulative) {
52
+ cumulativeData = data?.reduce((acc, curr, index) => {
53
+ if (index === 0) {
54
+ return [...acc, curr];
55
+ }
56
+ return [...acc, acc[index - 1] + curr];
57
+ }, []) ?? [];
58
+ }
59
+ return {
60
+ name: dataItem?.name,
61
+ data: cumulative ? cumulativeData : data,
62
+ type: as,
63
+ yAxis: yAxis ?? 0
64
+ };
65
+ })
66
+ );
67
+ }
68
+ getXAxis() {
69
+ return {
70
+ type: "category",
71
+ categories: getAllCategories(this.analytics, this.config),
72
+ crosshair: true,
73
+ labels: {
74
+ enabled: true
75
+ },
76
+ title: { text: "" }
77
+ };
78
+ }
79
+ getYAxis() {
80
+ let yAxes = [];
81
+ if (this.config.multiSeries?.yAxes) {
82
+ yAxes = this.config.multiSeries?.yAxes;
83
+ } else {
84
+ yAxes = super.getYAxis();
85
+ }
86
+ if (!this.config.multiSeries?.target) {
87
+ return yAxes;
88
+ }
89
+ const { value, styles, label } = this.config.multiSeries?.target ?? {};
90
+ return [
91
+ {
92
+ ...yAxes[0],
93
+ plotLines: [
94
+ ...yAxes[0].plotLines ?? [],
95
+ {
96
+ color: styles?.color ?? "#00FF00",
97
+ dashStyle: styles?.dashStyle ?? "Solid",
98
+ value,
99
+ width: styles?.width ?? 2,
100
+ zIndex: styles?.zIndex ?? 1e3,
101
+ label
102
+ }
103
+ ]
104
+ },
105
+ ...yAxes.slice(1)
106
+ ];
107
+ }
108
+ }
109
+
110
+ export { DHIS2MultiSeriesChart };
111
+ //# sourceMappingURL=out.js.map
112
+ //# sourceMappingURL=multi-series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/multi-series.ts"],"names":["row"],"mappings":"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","sourcesContent":["import {\n\tPlotOptions,\n\tSeriesOptionsType,\n\tXAxisOptions,\n\tYAxisOptions,\n} from \"highcharts\";\nimport { compact, head } from \"lodash\";\nimport { MultiSeriesConfig } from \"../types/props.js\";\nimport { getAllCategories, getDimensionHeaderIndex } from \"../utils/chart.js\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2MultiSeriesChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tcolumn: {},\n\t\t\tline: {},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst analytics = this.analytics;\n\t\tconst config = this.config;\n\n\t\tconst categoryDimension = head(config.layout.category);\n\t\tconst seriesConfig: MultiSeriesConfig | undefined =\n\t\t\tthis.config.multiSeries;\n\n\t\tconst categoryIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\tcategoryDimension ?? \"\",\n\t\t);\n\t\tconst seriesIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\thead(config.layout.series) ?? \"\",\n\t\t);\n\t\tconst valueIndex = getDimensionHeaderIndex(\n\t\t\tanalytics.headers ?? [],\n\t\t\t\"value\",\n\t\t);\n\n\t\tif (!categoryDimension) {\n\t\t\tthrow new Error(\"At least one category dimension is required\");\n\t\t}\n\n\t\tif (!seriesConfig) {\n\t\t\tthrow new Error(\n\t\t\t\t\"MultiSeries config is required for chart type multi-series\",\n\t\t\t);\n\t\t}\n\n\t\treturn compact(\n\t\t\tseriesConfig?.series?.map(({ id, as, cumulative, yAxis }) => {\n\t\t\t\tconst dataItem = analytics.metaData?.items[id as any];\n\t\t\t\tconst categoryItems =\n\t\t\t\t\tanalytics.metaData?.dimensions[\n\t\t\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t\t\t];\n\n\t\t\t\tconst data = categoryItems?.map((item: string) => {\n\t\t\t\t\tconst row = analytics.rows?.find(\n\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\trow[categoryIndex] === item &&\n\t\t\t\t\t\t\trow[seriesIndex] === id,\n\t\t\t\t\t);\n\t\t\t\t\treturn row?.[valueIndex]\n\t\t\t\t\t\t? parseFloat(row?.[valueIndex])\n\t\t\t\t\t\t: 0;\n\t\t\t\t});\n\n\t\t\t\tlet cumulativeData: number[] = [];\n\n\t\t\t\tif (cumulative) {\n\t\t\t\t\tcumulativeData =\n\t\t\t\t\t\tdata?.reduce((acc, curr, index) => {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\treturn [...acc, curr];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn [...acc, acc[index - 1] + curr];\n\t\t\t\t\t\t}, [] as number[]) ?? [];\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tname: dataItem?.name,\n\t\t\t\t\tdata: cumulative ? cumulativeData : data,\n\t\t\t\t\ttype: as,\n\t\t\t\t\tyAxis: yAxis ?? 0,\n\t\t\t\t};\n\t\t\t}),\n\t\t) as SeriesOptionsType[];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn {\n\t\t\ttype: \"category\",\n\t\t\tcategories: getAllCategories(this.analytics, this.config),\n\t\t\tcrosshair: true,\n\t\t\tlabels: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\ttitle: { text: \"\" },\n\t\t};\n\t}\n\n\tgetYAxis(): YAxisOptions[] {\n\t\tlet yAxes: YAxisOptions[] = [];\n\n\t\tif (this.config.multiSeries?.yAxes) {\n\t\t\tyAxes = this.config.multiSeries?.yAxes;\n\t\t} else {\n\t\t\tyAxes = super.getYAxis();\n\t\t}\n\n\t\tif (!this.config.multiSeries?.target) {\n\t\t\treturn yAxes;\n\t\t}\n\n\t\tconst { value, styles, label } = this.config.multiSeries?.target ?? {};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t...yAxes[0],\n\t\t\t\tplotLines: [\n\t\t\t\t\t...(yAxes[0].plotLines ?? []),\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: styles?.color ?? \"#00FF00\",\n\t\t\t\t\t\tdashStyle: styles?.dashStyle ?? \"Solid\",\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twidth: styles?.width ?? 2,\n\t\t\t\t\t\tzIndex: styles?.zIndex ?? 1000,\n\t\t\t\t\t\tlabel: label,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t...yAxes.slice(1),\n\t\t];\n\t}\n}\n"]}
@@ -0,0 +1,53 @@
1
+ import { head } from 'lodash';
2
+ import { DHIS2Chart } from './index.js';
3
+
4
+ class DHIS2PieChart extends DHIS2Chart {
5
+ getHighchartsType() {
6
+ return "pie";
7
+ }
8
+ getPlotOptions() {
9
+ return {
10
+ pie: {
11
+ allowPointSelect: true,
12
+ cursor: "pointer",
13
+ dataLabels: {
14
+ enabled: true,
15
+ format: "<b>{point.name}</b>: {point.percentage:.1f} %"
16
+ }
17
+ }
18
+ };
19
+ }
20
+ getSeries() {
21
+ const analytics = this.analytics;
22
+ const config = this.config;
23
+ const seriesDimension = head(config.layout.series);
24
+ const seriesIndex = analytics?.headers?.findIndex((h) => h.name === seriesDimension) ?? -1;
25
+ const valueIndex = analytics?.headers?.findIndex((h) => h.name === "value") ?? -1;
26
+ if (!seriesDimension) {
27
+ throw new Error("Pie chart must have a series dimension");
28
+ }
29
+ const seriesValues = analytics.metaData?.dimensions?.[seriesDimension];
30
+ return [
31
+ {
32
+ id: seriesDimension ?? "",
33
+ name: analytics.metaData?.items?.[seriesDimension]?.name ?? "",
34
+ data: seriesValues?.map((value) => {
35
+ const row = analytics?.rows?.find(
36
+ (row2) => row2[seriesIndex] === value
37
+ );
38
+ return {
39
+ name: analytics.metaData?.items?.[value]?.name,
40
+ y: row?.[valueIndex] ? parseFloat(row?.[valueIndex] ?? "") : 0
41
+ };
42
+ })
43
+ }
44
+ ];
45
+ }
46
+ getXAxis() {
47
+ return void 0;
48
+ }
49
+ }
50
+
51
+ export { DHIS2PieChart };
52
+ //# sourceMappingURL=out.js.map
53
+ //# sourceMappingURL=pie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/models/pie.ts"],"names":["row"],"mappings":"AACA,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAEpB,MAAM,sBAAsB,WAAW;AAAA,EAC7C,oBAA4B;AAC3B,WAAO;AAAA,EACR;AAAA,EAEA,iBAA8B;AAC7B,WAAO;AAAA,MACN,KAAK;AAAA,QACJ,kBAAkB;AAAA,QAClB,QAAQ;AAAA,QACR,YAAY;AAAA,UACX,SAAS;AAAA,UACT,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,YAAiC;AAChC,UAAM,YAAY,KAAK;AACvB,UAAM,SAAS,KAAK;AACpB,UAAM,kBAAkB,KAAK,OAAO,OAAO,MAAM;AACjD,UAAM,cACL,WAAW,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,eAAe,KAC/D;AACD,UAAM,aACL,WAAW,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO,KAAK;AAE7D,QAAI,CAAC,iBAAiB;AACrB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IACzD;AACA,UAAM,eACL,UAAU,UAAU,aACnB,eACD;AAED,WAAO;AAAA,MACN;AAAA,QACC,IAAI,mBAAmB;AAAA,QACvB,MACC,UAAU,UAAU,QAAQ,eAAsB,GAAG,QACrD;AAAA,QACD,MAAM,cAAc,IAAI,CAAC,UAAkB;AAC1C,gBAAM,MAAM,WAAW,MAAM;AAAA,YAC5B,CAACA,SAAaA,KAAI,WAAW,MAAM;AAAA,UACpC;AAEA,iBAAO;AAAA,YACN,MAAM,UAAU,UAAU,QAAQ,KAAY,GAAG;AAAA,YACjD,GAAG,MAAM,UAAU,IAChB,WAAW,MAAM,UAAU,KAAK,EAAE,IAClC;AAAA,UACJ;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAEA,WAAqC;AACpC,WAAO;AAAA,EACR;AACD","sourcesContent":["import { PlotOptions, SeriesOptionsType, XAxisOptions } from \"highcharts\";\nimport { head } from \"lodash\";\nimport { DHIS2Chart } from \"./index.js\";\n\nexport class DHIS2PieChart extends DHIS2Chart {\n\tgetHighchartsType(): string {\n\t\treturn \"pie\";\n\t}\n\n\tgetPlotOptions(): PlotOptions {\n\t\treturn {\n\t\t\tpie: {\n\t\t\t\tallowPointSelect: true,\n\t\t\t\tcursor: \"pointer\",\n\t\t\t\tdataLabels: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tformat: \"<b>{point.name}</b>: {point.percentage:.1f} %\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tgetSeries(): SeriesOptionsType[] {\n\t\tconst analytics = this.analytics;\n\t\tconst config = this.config;\n\t\tconst seriesDimension = head(config.layout.series);\n\t\tconst seriesIndex =\n\t\t\tanalytics?.headers?.findIndex((h) => h.name === seriesDimension) ??\n\t\t\t-1;\n\t\tconst valueIndex =\n\t\t\tanalytics?.headers?.findIndex((h) => h.name === \"value\") ?? -1;\n\n\t\tif (!seriesDimension) {\n\t\t\tthrow new Error(\"Pie chart must have a series dimension\");\n\t\t}\n\t\tconst seriesValues =\n\t\t\tanalytics.metaData?.dimensions?.[\n\t\t\t\tseriesDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t];\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tid: seriesDimension ?? \"\",\n\t\t\t\tname:\n\t\t\t\t\tanalytics.metaData?.items?.[seriesDimension as any]?.name ??\n\t\t\t\t\t\"\",\n\t\t\t\tdata: seriesValues?.map((value: string) => {\n\t\t\t\t\tconst row = analytics?.rows?.find(\n\t\t\t\t\t\t(row: any) => row[seriesIndex] === value,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: analytics.metaData?.items?.[value as any]?.name,\n\t\t\t\t\t\ty: row?.[valueIndex]\n\t\t\t\t\t\t\t? parseFloat(row?.[valueIndex] ?? \"\")\n\t\t\t\t\t\t\t: 0,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t} as SeriesOptionsType,\n\t\t];\n\t}\n\n\tgetXAxis(): XAxisOptions | undefined {\n\t\treturn undefined;\n\t}\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import HighChartsExportCSV from 'highcharts/modules/export-data.js';
2
+ import HighChartsExport from 'highcharts/modules/exporting.js';
3
+ import HighChartsFullScreen from 'highcharts/modules/full-screen.js';
4
+
5
+ function setupHighchartsModules(highcharts) {
6
+ HighChartsExport(highcharts);
7
+ HighChartsExportCSV(highcharts);
8
+ HighChartsFullScreen(highcharts);
9
+ }
10
+ function onFullScreenView(chartRef, options) {
11
+ chartRef?.chart?.fullscreen.toggle();
12
+ }
13
+ function onPDFDownload(chartRef, options) {
14
+ chartRef?.chart.exportChart({ type: "application/pdf" }, options ?? {});
15
+ }
16
+ function onCSVDownload(chartRef, options) {
17
+ chartRef?.chart.downloadCSV();
18
+ }
19
+ const onImageDownload = (chartRef, type, options) => {
20
+ chartRef?.chart.exportChart({ type: `image/${type}` }, options ?? {});
21
+ };
22
+ const onViewAsTable = (chartRef, show) => {
23
+ const options = chartRef?.chart.options;
24
+ chartRef?.chart?.update({
25
+ ...options,
26
+ exporting: {
27
+ ...options?.exporting,
28
+ showTable: show
29
+ }
30
+ });
31
+ };
32
+
33
+ export { onCSVDownload, onFullScreenView, onImageDownload, onPDFDownload, onViewAsTable, setupHighchartsModules };
34
+ //# sourceMappingURL=out.js.map
35
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/services/export.ts"],"names":[],"mappings":"AAEA,OAAO,yBAAyB;AAChC,OAAO,sBAAsB;AAC7B,OAAO,0BAA0B;AAE1B,SAAS,uBAAuB,YAA+B;AACrE,mBAAiB,UAAU;AAC3B,sBAAoB,UAAU;AAC9B,uBAAqB,UAAU;AAChC;AAEO,SAAS,iBACf,UACA,SACC;AACD,YAAU,OAAO,WAAW,OAAO;AACpC;AAEO,SAAS,cACf,UACA,SACC;AACD,YAAU,MAAM,YAAY,EAAE,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC;AACvE;AAEO,SAAS,cACf,UACA,SACC;AACD,YAAU,MAAM,YAAY;AAC7B;AAEO,MAAM,kBAAkB,CAC9B,UACA,MACA,YACI;AACJ,YAAU,MAAM,YAAY,EAAE,MAAM,SAAS,IAAI,GAAG,GAAG,WAAW,CAAC,CAAC;AACrE;AAEO,MAAM,gBAAgB,CAC5B,UACA,SACI;AACJ,QAAM,UAAU,UAAU,MAAM;AAChC,YAAU,OAAO,OAAO;AAAA,IACvB,GAAG;AAAA,IACH,WAAW;AAAA,MACV,GAAG,SAAS;AAAA,MACZ,WAAW;AAAA,IACZ;AAAA,EACD,CAAC;AACF","sourcesContent":["import Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport HighChartsExportCSV from \"highcharts/modules/export-data.js\";\nimport HighChartsExport from \"highcharts/modules/exporting.js\";\nimport HighChartsFullScreen from \"highcharts/modules/full-screen.js\";\n\nexport function setupHighchartsModules(highcharts: typeof Highcharts) {\n\tHighChartsExport(highcharts);\n\tHighChartsExportCSV(highcharts);\n\tHighChartsFullScreen(highcharts);\n}\n\nexport function onFullScreenView(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart?.fullscreen.toggle();\n}\n\nexport function onPDFDownload(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart.exportChart({ type: \"application/pdf\" }, options ?? {});\n}\n\nexport function onCSVDownload(\n\tchartRef: HighchartsReact.RefObject,\n\toptions?: Highcharts.Options,\n) {\n\tchartRef?.chart.downloadCSV();\n}\n\nexport const onImageDownload = (\n\tchartRef: HighchartsReact.RefObject,\n\ttype: \"png\" | \"svg+xml\" | \"jpeg\",\n\toptions?: Highcharts.Options,\n) => {\n\tchartRef?.chart.exportChart({ type: `image/${type}` }, options ?? {});\n};\n\nexport const onViewAsTable = (\n\tchartRef: HighchartsReact.RefObject,\n\tshow: boolean,\n) => {\n\tconst options = chartRef?.chart.options;\n\tchartRef?.chart?.update({\n\t\t...options,\n\t\texporting: {\n\t\t\t...options?.exporting,\n\t\t\tshowTable: show,\n\t\t},\n\t});\n};\n"]}
@@ -0,0 +1,40 @@
1
+ .highcharts-data-table table {
2
+ border: 1px solid rgb(232, 237, 242);
3
+ text-align: left;
4
+ min-width: 100%;
5
+ border-collapse: collapse;
6
+ vertical-align: top;
7
+ }
8
+ .highcharts-data-table td,
9
+ .highcharts-data-table th,
10
+ .highcharts-data-table caption {
11
+ font-size: 14px;
12
+ line-height: 16px;
13
+ padding: 8px 6px;
14
+ height: 32px;
15
+ border-bottom: 1px solid rgb(232, 237, 242);
16
+ }
17
+ .highcharts-data-table thead tr {
18
+ background: transparent;
19
+ }
20
+ .highcharts-data-table tr:nth-child(even) {
21
+ background: rgb(251, 252, 253);
22
+ }
23
+ .highcharts-data-table tr {
24
+ cursor: pointer;
25
+ }
26
+ .highcharts-data-table tr:hover {
27
+ background: rgb(251, 252, 253);
28
+ }
29
+ .highcharts-data-table caption {
30
+ border-bottom: none;
31
+ font-size: 1.1em;
32
+ font-weight: bold;
33
+ }
34
+ .highcharts-sort-ascending::after {
35
+ content: " \2193";
36
+ }
37
+ .highcharts-sort-descending::after {
38
+ content: " \2191";
39
+ }
40
+ /*# sourceMappingURL=custom-highchart.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/styles/custom-highchart.css"],"sourcesContent":["\n.highcharts-data-table table {\n border: 1px solid rgb(232, 237, 242);\n text-align: left;\n min-width: 100%;\n border-collapse: collapse;\n vertical-align: top;\n}\n\n.highcharts-data-table td,\n.highcharts-data-table th,\n.highcharts-data-table caption {\n font-size: 14px;\n line-height: 16px;\n padding: 8px 6px;\n height: 32px;\n border-bottom: 1px solid rgb(232, 237, 242);\n}\n\n.highcharts-data-table thead tr {\n background: transparent;\n}\n\n.highcharts-data-table tr:nth-child(even) {\n background: rgb(251, 252, 253);\n}\n\n.highcharts-data-table tr {\n cursor: pointer;\n}\n\n.highcharts-data-table tr:hover {\n background: rgb(251, 252, 253);\n}\n\n.highcharts-data-table caption {\n border-bottom: none;\n font-size: 1.1em;\n font-weight: bold;\n}\n\n.highcharts-sort-ascending::after {\n content: \" ↓\";\n}\n\n.highcharts-sort-descending::after {\n content: \" ↑\";\n}\n"],"mappings":"AACA,CAAC,sBAAsB;AACnB,UAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE;AAChC,cAAY;AACZ,aAAW;AACX,mBAAiB;AACjB,kBAAgB;AACpB;AAEA,CARC,sBAQsB;AACvB,CATC,sBASsB;AACvB,CAVC,sBAUsB;AACnB,aAAW;AACX,eAAa;AACb,WAAS,IAAI;AACb,UAAQ;AACR,iBAAe,IAAI,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE;AAC3C;AAEA,CAlBC,sBAkBsB,MAAM;AACzB,cAAY;AAChB;AAEA,CAtBC,sBAsBsB,EAAE;AACrB,cAAY,IAAI,GAAG,EAAE,GAAG,EAAE;AAC9B;AAEA,CA1BC,sBA0BsB;AACnB,UAAQ;AACZ;AAEA,CA9BC,sBA8BsB,EAAE;AACrB,cAAY,IAAI,GAAG,EAAE,GAAG,EAAE;AAC9B;AAEA,CAlCC,sBAkCsB;AACnB,iBAAe;AACf,aAAW;AACX,eAAa;AACjB;AAEA,CAAC,yBAAyB;AACtB,WAAS;AACb;AAEA,CAAC,0BAA0B;AACvB,WAAS;AACb;","names":[]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,130 @@
1
+ import { findIndex, head, find, compact, set, isEmpty } from 'lodash';
2
+ import { DHIS2StackedColumnChart, DHIS2ColumnChart } from '../models/column.js';
3
+ import { DHIS2LineChart } from '../models/line.js';
4
+ import { DHIS2MultiSeriesChart } from '../models/multi-series.js';
5
+ import { DHIS2PieChart } from '../models/pie.js';
6
+ import { DHIS2StackedBarChart, DHIS2BarChart } from '../models/bar.js';
7
+
8
+ function getDimensionHeaderIndex(headers, name) {
9
+ return findIndex(headers, { name });
10
+ }
11
+ function getPointSeries(analytics, config, highchartsType) {
12
+ const series = config.layout.series;
13
+ return series.map((seriesName) => {
14
+ const header = analytics?.headers?.find(
15
+ (header2) => header2.name === seriesName
16
+ );
17
+ if (!header) {
18
+ return void 0;
19
+ }
20
+ if (analytics?.metaData) {
21
+ return getColumnSeries(analytics, header, config, highchartsType);
22
+ }
23
+ })[0];
24
+ }
25
+ function getColumnSeries(analytics, header, config, highchartsType) {
26
+ const headerIndex = analytics?.headers?.findIndex(
27
+ (h) => header.name === h.name
28
+ );
29
+ const valueIndex = analytics?.headers?.findIndex(
30
+ (h) => h.name === "value"
31
+ );
32
+ const colors = config.colors ?? [];
33
+ const { items, dimensions } = analytics?.metaData ?? {};
34
+ const categoriesDimension = config.layout.category;
35
+ const seriesDimensionValues = dimensions?.[header.name] ?? [];
36
+ return head(
37
+ categoriesDimension?.map((categoryDimension) => {
38
+ const categories = dimensions?.[categoryDimension];
39
+ const categoryDimensionIndex = analytics?.headers?.findIndex(
40
+ (h) => h.name === categoryDimension
41
+ );
42
+ return seriesDimensionValues?.map(
43
+ (seriesDimensionValue, index) => {
44
+ const data = categories?.map((category) => {
45
+ const row = find(
46
+ analytics?.rows,
47
+ (row2) => row2[headerIndex ?? -1] === seriesDimensionValue && row2[categoryDimensionIndex ?? -1] === category
48
+ );
49
+ return row?.[valueIndex ?? -1] ? parseFloat(row?.[valueIndex ?? -1]) : 0;
50
+ });
51
+ return {
52
+ name: items?.[seriesDimensionValue]?.name,
53
+ data,
54
+ type: highchartsType,
55
+ color: colors[index % colors.length]
56
+ };
57
+ }
58
+ );
59
+ })
60
+ );
61
+ }
62
+ function getCategories({ name }, { items, dimensions }) {
63
+ const categories = dimensions?.[name];
64
+ return categories?.map((category) => {
65
+ return items[category]?.name ?? "";
66
+ });
67
+ }
68
+ function getAllCategories(analytics, config) {
69
+ const categories = config.layout.category;
70
+ return compact(
71
+ categories?.map((category) => {
72
+ const header = analytics?.headers?.find(
73
+ (header2) => header2.name === category
74
+ );
75
+ if (!header) {
76
+ return void 0;
77
+ }
78
+ if (analytics?.metaData) {
79
+ return getCategories(header, analytics?.metaData);
80
+ }
81
+ })
82
+ )[0];
83
+ }
84
+ function updateLayout(config, { type }) {
85
+ if (type === config.type) {
86
+ return config.layout;
87
+ }
88
+ const updatedLayout = { ...config.layout };
89
+ switch (type) {
90
+ case "pie":
91
+ set(updatedLayout, "category", []);
92
+ if (isEmpty(updatedLayout.series)) {
93
+ if (!isEmpty(config.layout.category)) {
94
+ set(updatedLayout, "series", [
95
+ head(config.layout.category)
96
+ ]);
97
+ } else {
98
+ throw new Error("Invalid layout for pie chart");
99
+ }
100
+ }
101
+ if (updatedLayout.series.length > 1) {
102
+ set(updatedLayout, "series", [head(updatedLayout.series)]);
103
+ }
104
+ }
105
+ return updatedLayout;
106
+ }
107
+ function getChartInstance(id, analytics, config) {
108
+ switch (config.type) {
109
+ case "column":
110
+ return new DHIS2ColumnChart(id, analytics, config);
111
+ case "bar":
112
+ return new DHIS2BarChart(id, analytics, config);
113
+ case "stacked-bar":
114
+ return new DHIS2StackedBarChart(id, analytics, config);
115
+ case "stacked-column":
116
+ return new DHIS2StackedColumnChart(id, analytics, config);
117
+ case "pie":
118
+ return new DHIS2PieChart(id, analytics, config);
119
+ case "line":
120
+ return new DHIS2LineChart(id, analytics, config);
121
+ case "multi-series":
122
+ return new DHIS2MultiSeriesChart(id, analytics, config);
123
+ default:
124
+ throw new Error(`Unsupported chart type: ${config.type}`);
125
+ }
126
+ }
127
+
128
+ export { getAllCategories, getChartInstance, getColumnSeries, getDimensionHeaderIndex, getPointSeries, updateLayout };
129
+ //# sourceMappingURL=out.js.map
130
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ChartAnalytics/utils/chart.ts"],"names":["header","row"],"mappings":"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","sourcesContent":["import type {\n\tAnalytics,\n\tAnalyticsHeader,\n\tAnalyticsMetadata,\n} from \"@hisptz/dhis2-utils\";\nimport { compact, find, findIndex, head, isEmpty, set } from \"lodash\";\nimport { DHIS2Chart } from \"../models/index.js\";\nimport { DHIS2ColumnChart, DHIS2StackedColumnChart } from \"../models/column.js\";\nimport { DHIS2LineChart } from \"../models/line.js\";\nimport { DHIS2MultiSeriesChart } from \"../models/multi-series.js\";\nimport { DHIS2PieChart } from \"../models/pie.js\";\nimport { ChartConfig, ChartType } from \"../types/props.js\";\nimport { DHIS2BarChart, DHIS2StackedBarChart } from \"../models/bar.js\";\n\nexport function getDimensionHeaderIndex(\n\theaders: AnalyticsHeader[],\n\tname: string,\n): number {\n\treturn findIndex(headers, { name });\n}\n\nexport function getPointSeries(\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n\thighchartsType: string,\n) {\n\tconst series: string[] = config.layout.series;\n\n\treturn series.map((seriesName: string) => {\n\t\tconst header = analytics?.headers?.find(\n\t\t\t(header: any) => header.name === seriesName,\n\t\t);\n\t\tif (!header) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (analytics?.metaData) {\n\t\t\treturn getColumnSeries(analytics, header, config, highchartsType);\n\t\t}\n\t})[0];\n}\n\nexport function getColumnSeries(\n\tanalytics: Analytics,\n\theader: AnalyticsHeader,\n\tconfig: ChartConfig,\n\thighchartsType: string,\n): any {\n\tconst headerIndex = analytics?.headers?.findIndex(\n\t\t(h: { name: any }) => header.name === h.name,\n\t);\n\tconst valueIndex = analytics?.headers?.findIndex(\n\t\t(h: { name: string }) => h.name === \"value\",\n\t);\n\n\tconst colors = config.colors ?? [];\n\n\tconst { items, dimensions } = analytics?.metaData ?? {};\n\tconst categoriesDimension = config.layout.category;\n\n\tconst seriesDimensionValues: string[] =\n\t\tdimensions?.[header.name as \"dx\" | \"ou\" | \"pe\"] ?? [];\n\n\treturn head(\n\t\tcategoriesDimension?.map((categoryDimension: string) => {\n\t\t\tconst categories: string[] = dimensions?.[\n\t\t\t\tcategoryDimension as \"dx\" | \"ou\" | \"pe\"\n\t\t\t] as any;\n\t\t\tconst categoryDimensionIndex = analytics?.headers?.findIndex(\n\t\t\t\t(h: { name: string }) => h.name === categoryDimension,\n\t\t\t);\n\t\t\treturn seriesDimensionValues?.map(\n\t\t\t\t(seriesDimensionValue: string, index) => {\n\t\t\t\t\tconst data = categories?.map((category: string) => {\n\t\t\t\t\t\tconst row = find(\n\t\t\t\t\t\t\tanalytics?.rows,\n\t\t\t\t\t\t\t(row: any) =>\n\t\t\t\t\t\t\t\trow[headerIndex ?? -1] ===\n\t\t\t\t\t\t\t\t\tseriesDimensionValue &&\n\t\t\t\t\t\t\t\trow[categoryDimensionIndex ?? -1] === category,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn row?.[valueIndex ?? -1]\n\t\t\t\t\t\t\t? parseFloat(row?.[valueIndex ?? -1])\n\t\t\t\t\t\t\t: 0;\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: items?.[seriesDimensionValue as any]?.name,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\ttype: highchartsType,\n\t\t\t\t\t\tcolor: colors[index % colors.length],\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t);\n\t\t}),\n\t);\n}\n\nfunction getCategories(\n\t{ name }: AnalyticsHeader,\n\t{ items, dimensions }: AnalyticsMetadata,\n): string[] {\n\tconst categories: string[] = dimensions?.[\n\t\tname as \"dx\" | \"ou\" | \"pe\"\n\t] as any;\n\n\treturn categories?.map((category: string) => {\n\t\treturn items[category as any]?.name ?? \"\";\n\t}) as unknown as string[];\n}\n\nexport function getAllCategories(\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n): string[] {\n\tconst categories = config.layout.category;\n\n\treturn compact(\n\t\tcategories?.map((category: string) => {\n\t\t\tconst header = analytics?.headers?.find(\n\t\t\t\t(header: any) => header.name === category,\n\t\t\t);\n\t\t\tif (!header) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (analytics?.metaData) {\n\t\t\t\treturn getCategories(header, analytics?.metaData);\n\t\t\t}\n\t\t}),\n\t)[0];\n}\n\nexport function updateLayout(\n\tconfig: ChartConfig,\n\t{ type }: { type: ChartType },\n) {\n\tif (type === config.type) {\n\t\treturn config.layout;\n\t}\n\n\tconst updatedLayout = { ...config.layout };\n\n\tswitch (type) {\n\t\tcase \"pie\":\n\t\t\tset(updatedLayout, \"category\", []);\n\t\t\tif (isEmpty(updatedLayout.series)) {\n\t\t\t\tif (!isEmpty(config.layout.category)) {\n\t\t\t\t\tset(updatedLayout, \"series\", [\n\t\t\t\t\t\thead(config.layout.category),\n\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"Invalid layout for pie chart\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updatedLayout.series.length > 1) {\n\t\t\t\tset(updatedLayout, \"series\", [head(updatedLayout.series)]);\n\t\t\t}\n\t}\n\n\treturn updatedLayout;\n}\n\nexport function getChartInstance(\n\tid: string,\n\tanalytics: Analytics,\n\tconfig: ChartConfig,\n): DHIS2Chart {\n\tswitch (config.type) {\n\t\tcase \"column\":\n\t\t\treturn new DHIS2ColumnChart(id, analytics, config);\n\t\tcase \"bar\":\n\t\t\treturn new DHIS2BarChart(id, analytics, config);\n\t\tcase \"stacked-bar\":\n\t\t\treturn new DHIS2StackedBarChart(id, analytics, config);\n\t\tcase \"stacked-column\":\n\t\t\treturn new DHIS2StackedColumnChart(id, analytics, config);\n\t\tcase \"pie\":\n\t\t\treturn new DHIS2PieChart(id, analytics, config);\n\t\tcase \"line\":\n\t\t\treturn new DHIS2LineChart(id, analytics, config);\n\t\tcase \"multi-series\":\n\t\t\treturn new DHIS2MultiSeriesChart(id, analytics, config);\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported chart type: ${config.type}`);\n\t}\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { colors } from '@dhis2/ui';
3
+ import { useMemo } from 'react';
4
+ import { CircularProgressbarWithChildren } from 'react-circular-progressbar';
5
+ export * from './types/props.js';
6
+
7
+ function CircularProgressVisualizer({
8
+ numerator,
9
+ size,
10
+ denominator,
11
+ value,
12
+ textStyle,
13
+ strokeStyle
14
+ }) {
15
+ const filledSectionFieldsPercentage = useMemo(() => {
16
+ return value !== void 0 ? value : Math.floor((numerator ?? 0) / (denominator ?? 1) * 100);
17
+ }, [numerator, denominator, value]);
18
+ return /* @__PURE__ */ jsx(
19
+ "div",
20
+ {
21
+ style: {
22
+ backgroundColor: "transparent",
23
+ width: size
24
+ },
25
+ children: /* @__PURE__ */ jsx(
26
+ CircularProgressbarWithChildren,
27
+ {
28
+ styles: {
29
+ path: {
30
+ stroke: strokeStyle?.color ?? colors.blue700
31
+ }
32
+ },
33
+ strokeWidth: 7,
34
+ value: filledSectionFieldsPercentage,
35
+ children: /* @__PURE__ */ jsx(
36
+ "div",
37
+ {
38
+ style: {
39
+ ...textStyle ?? {},
40
+ fontSize: textStyle?.fontSize ?? typeof size === "number" ? 0.3 * size : "100%",
41
+ marginTop: -11
42
+ },
43
+ children: /* @__PURE__ */ jsxs(
44
+ "strong",
45
+ {
46
+ style: {
47
+ color: textStyle?.color ?? strokeStyle?.color ?? colors.blue700
48
+ },
49
+ children: [
50
+ filledSectionFieldsPercentage,
51
+ "%"
52
+ ]
53
+ }
54
+ )
55
+ }
56
+ )
57
+ }
58
+ )
59
+ }
60
+ );
61
+ }
62
+ const CircularProgressDashboard = CircularProgressVisualizer;
63
+
64
+ export { CircularProgressDashboard, CircularProgressVisualizer };
65
+ //# sourceMappingURL=out.js.map
66
+ //# sourceMappingURL=CircularProgressIndicator.js.map