@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,167 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
3
+ import { useVisualizationType } from '../VisualizationTypeProvider/index.js';
4
+ import { useAnalyticsData } from '../AnalyticsDataProvider/index.js';
5
+ import { CircularLoader } from '@dhis2/ui';
6
+ import { DHIS2PivotTable } from '../../../DHIS2PivotTable/index.js';
7
+ import { useLayout } from '../LayoutProvider/index.js';
8
+ import { forEach, set, mapValues, findIndex, find, filter } from 'lodash';
9
+ import { useDimensions } from '../DimensionsProvider/index.js';
10
+ import i18n from '@dhis2/d2-i18n';
11
+ import { DHIS2Chart } from '../../../ChartAnalytics/index.js';
12
+ import { DHIS2Map } from '../../../Map/index.js';
13
+
14
+ function getDimensionLabel(dimension) {
15
+ switch (dimension) {
16
+ case "pe":
17
+ return i18n.t("Period");
18
+ case "ou":
19
+ return i18n.t("Organisation unit");
20
+ case "dx":
21
+ return i18n.t("Data");
22
+ default:
23
+ return "";
24
+ }
25
+ }
26
+ function getOrgUnitSelectionFromIds(ous) {
27
+ const orgUnitSelection = {
28
+ orgUnits: []
29
+ };
30
+ forEach(ous, (ou) => {
31
+ if (ou === "USER_ORGUNIT") {
32
+ set(orgUnitSelection, ["userOrgUnit"], true);
33
+ } else if (ou === "USER_ORGUNIT_CHILDREN") {
34
+ set(orgUnitSelection, ["userSubUnit"], true);
35
+ } else if (ou === "USER_ORGUNIT_GRANDCHILDREN") {
36
+ set(orgUnitSelection, ["userSubX2Unit"], true);
37
+ } else {
38
+ const orgUnits = [...orgUnitSelection.orgUnits ?? []];
39
+ orgUnits.push({
40
+ id: ou,
41
+ children: [],
42
+ path: ""
43
+ });
44
+ set(orgUnitSelection, ["orgUnits"], orgUnits);
45
+ }
46
+ });
47
+ return orgUnitSelection;
48
+ }
49
+ function PivotTableRenderer({
50
+ options
51
+ }) {
52
+ const [layout] = useLayout();
53
+ const { analytics } = useAnalyticsData();
54
+ const sanitizedLayout = useMemo(() => {
55
+ return mapValues(
56
+ layout,
57
+ (dimension) => dimension.map((dimension2) => ({
58
+ dimension: dimension2,
59
+ label: getDimensionLabel(dimension2)
60
+ }))
61
+ );
62
+ }, [layout]);
63
+ if (!analytics) {
64
+ return null;
65
+ }
66
+ return /* @__PURE__ */ jsx(
67
+ DHIS2PivotTable,
68
+ {
69
+ tableProps: {
70
+ scrollHeight: options.scrollHeight ?? "100%",
71
+ scrollWidth: options.scrollWidth ?? "100%",
72
+ width: options.width ?? "100%"
73
+ },
74
+ analytics,
75
+ config: { layout: sanitizedLayout, options }
76
+ }
77
+ );
78
+ }
79
+ function ChartRenderer({ options }) {
80
+ const { analytics } = useAnalyticsData();
81
+ if (!analytics) {
82
+ return null;
83
+ }
84
+ return /* @__PURE__ */ jsx(DHIS2Chart, { analytics, config: { ...options } });
85
+ }
86
+ function MapRenderer({
87
+ options
88
+ }) {
89
+ const [dimensions] = useDimensions();
90
+ const { analytics } = useAnalyticsData();
91
+ const orgUnitSelection = useMemo(() => {
92
+ return getOrgUnitSelectionFromIds(dimensions.ou ?? []);
93
+ }, [dimensions.ou]);
94
+ const thematicLayers = useMemo(() => {
95
+ const valueIndex = findIndex(analytics.headers, ["name", "value"]) ?? -1;
96
+ return analytics.metaData?.dimensions["dx"]?.map((dataId) => {
97
+ const config = find(options.thematicLayers, ["id", dataId]);
98
+ const data = analytics.metaData?.dimensions?.ou?.map((ouId) => {
99
+ const values = filter(
100
+ analytics.rows,
101
+ (row) => row.includes(dataId) && row.includes(ouId)
102
+ );
103
+ const value = values.reduce(
104
+ (acc, value2) => acc + parseFloat(value2[valueIndex]),
105
+ 0
106
+ );
107
+ return {
108
+ data: value,
109
+ dataItem: dataId,
110
+ orgUnit: ouId
111
+ };
112
+ }) ?? [];
113
+ return {
114
+ ...config,
115
+ data
116
+ };
117
+ }) ?? [];
118
+ }, [analytics]);
119
+ return /* @__PURE__ */ jsx(
120
+ DHIS2Map,
121
+ {
122
+ orgUnitSelection,
123
+ thematicLayers
124
+ }
125
+ );
126
+ }
127
+ function VisualizationSelector({ config }) {
128
+ const [type] = useVisualizationType();
129
+ const { analytics, loading } = useAnalyticsData();
130
+ if (loading) {
131
+ return /* @__PURE__ */ jsx(
132
+ "div",
133
+ {
134
+ style: {
135
+ width: "100%",
136
+ height: "100%",
137
+ display: "flex",
138
+ justifyContent: "center",
139
+ alignItems: "center"
140
+ },
141
+ children: /* @__PURE__ */ jsx(CircularLoader, { small: true })
142
+ }
143
+ );
144
+ }
145
+ if (!analytics) {
146
+ return null;
147
+ }
148
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
149
+ type === "pivotTable" && /* @__PURE__ */ jsx(
150
+ PivotTableRenderer,
151
+ {
152
+ options: config?.pivotTable
153
+ }
154
+ ),
155
+ type === "chart" && /* @__PURE__ */ jsx(ChartRenderer, { options: config?.chart }),
156
+ type === "map" && /* @__PURE__ */ jsx(
157
+ MapRenderer,
158
+ {
159
+ options: config?.map
160
+ }
161
+ )
162
+ ] });
163
+ }
164
+
165
+ export { ChartRenderer, MapRenderer, PivotTableRenderer, VisualizationSelector, getDimensionLabel, getOrgUnitSelectionFromIds };
166
+ //# sourceMappingURL=out.js.map
167
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationSelector/index.tsx"],"names":["dimension","value"],"mappings":"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","sourcesContent":["import React, { useMemo } from \"react\";\nimport { useVisualizationType } from \"../VisualizationTypeProvider/index.js\";\nimport { useAnalyticsData } from \"../AnalyticsDataProvider/index.js\";\nimport { CircularLoader } from \"@dhis2/ui\";\nimport {\n\tDHIS2PivotTable,\n\tDHIS2PivotTableOptions,\n} from \"../../../DHIS2PivotTable/index.js\";\nimport { useLayout } from \"../LayoutProvider/index.js\";\nimport { filter, find, findIndex, forEach, mapValues, set } from \"lodash\";\nimport { Dimension, useDimensions } from \"../DimensionsProvider/index.js\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { ChartConfig, DHIS2Chart } from \"../../../ChartAnalytics/index.js\";\nimport { VisualizationConfig } from \"../../index.js\";\nimport { DHIS2Map, MapProps } from \"../../../Map/index.js\";\nimport { OrgUnitSelection } from \"@hisptz/dhis2-utils\";\nimport {\n\tThematicLayerConfig,\n\tThematicLayerRawData,\n} from \"../../../Map/components/MapLayer/interfaces/index.js\";\nimport type { PivotTableLayoutProps } from \"../../../DHIS2PivotTable/components/Table/index.js\";\n\nexport interface VisualizationSelectorProps {\n\tconfig: VisualizationConfig;\n}\n\nexport function getDimensionLabel(dimension: Dimension) {\n\tswitch (dimension) {\n\t\tcase \"pe\":\n\t\t\treturn i18n.t(\"Period\");\n\t\tcase \"ou\":\n\t\t\treturn i18n.t(\"Organisation unit\");\n\t\tcase \"dx\":\n\t\t\treturn i18n.t(\"Data\");\n\t\tdefault:\n\t\t\treturn \"\";\n\t}\n}\n\nexport function getOrgUnitSelectionFromIds(ous: string[]) {\n\tconst orgUnitSelection: OrgUnitSelection = {\n\t\torgUnits: [],\n\t};\n\tforEach(ous, (ou) => {\n\t\tif (ou === \"USER_ORGUNIT\") {\n\t\t\tset(orgUnitSelection, [\"userOrgUnit\"], true);\n\t\t} else if (ou === \"USER_ORGUNIT_CHILDREN\") {\n\t\t\tset(orgUnitSelection, [\"userSubUnit\"], true);\n\t\t} else if (ou === \"USER_ORGUNIT_GRANDCHILDREN\") {\n\t\t\tset(orgUnitSelection, [\"userSubX2Unit\"], true);\n\t\t} else {\n\t\t\tconst orgUnits = [...(orgUnitSelection.orgUnits ?? [])];\n\t\t\torgUnits.push({\n\t\t\t\tid: ou,\n\t\t\t\tchildren: [],\n\t\t\t\tpath: \"\",\n\t\t\t});\n\t\t\tset(orgUnitSelection, [\"orgUnits\"], orgUnits);\n\t\t}\n\t});\n\treturn orgUnitSelection;\n}\n\nexport function PivotTableRenderer({\n\toptions,\n}: {\n\toptions: DHIS2PivotTableOptions & PivotTableLayoutProps;\n}) {\n\tconst [layout] = useLayout();\n\tconst { analytics } = useAnalyticsData();\n\n\tconst sanitizedLayout = useMemo(() => {\n\t\treturn mapValues(layout, (dimension) =>\n\t\t\tdimension.map((dimension) => ({\n\t\t\t\tdimension,\n\t\t\t\tlabel: getDimensionLabel(dimension),\n\t\t\t})),\n\t\t);\n\t}, [layout]);\n\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DHIS2PivotTable\n\t\t\ttableProps={{\n\t\t\t\tscrollHeight: options.scrollHeight ?? \"100%\",\n\t\t\t\tscrollWidth: options.scrollWidth ?? \"100%\",\n\t\t\t\twidth: options.width ?? \"100%\",\n\t\t\t}}\n\t\t\tanalytics={analytics}\n\t\t\tconfig={{ layout: sanitizedLayout, options }}\n\t\t/>\n\t);\n}\n\nexport function ChartRenderer({ options }: { options: ChartConfig }) {\n\tconst { analytics } = useAnalyticsData();\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\treturn <DHIS2Chart analytics={analytics} config={{ ...options }} />;\n}\n\nexport function MapRenderer({\n\toptions,\n}: {\n\toptions: Omit<MapProps, \"orgUnitSelection\" | \"periodSelection\">;\n}) {\n\tconst [dimensions] = useDimensions();\n\tconst { analytics } = useAnalyticsData();\n\tconst orgUnitSelection: OrgUnitSelection = useMemo(() => {\n\t\treturn getOrgUnitSelectionFromIds(dimensions.ou ?? []);\n\t}, [dimensions.ou]);\n\n\tconst thematicLayers: ThematicLayerConfig[] = useMemo(() => {\n\t\tconst valueIndex =\n\t\t\tfindIndex(analytics.headers, [\"name\", \"value\"]) ?? -1;\n\t\treturn (\n\t\t\tanalytics.metaData?.dimensions[\"dx\"]?.map((dataId) => {\n\t\t\t\tconst config = find(options.thematicLayers, [\"id\", dataId]);\n\t\t\t\tconst data: ThematicLayerRawData[] =\n\t\t\t\t\tanalytics.metaData?.dimensions?.ou?.map((ouId) => {\n\t\t\t\t\t\tconst values = filter(\n\t\t\t\t\t\t\tanalytics.rows,\n\t\t\t\t\t\t\t(row) => row.includes(dataId) && row.includes(ouId),\n\t\t\t\t\t\t) as unknown as string[];\n\t\t\t\t\t\tconst value = values.reduce(\n\t\t\t\t\t\t\t(acc, value) => acc + parseFloat(value[valueIndex]),\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tdata: value,\n\t\t\t\t\t\t\tdataItem: dataId,\n\t\t\t\t\t\t\torgUnit: ouId,\n\t\t\t\t\t\t};\n\t\t\t\t\t}) ?? [];\n\t\t\t\treturn {\n\t\t\t\t\t...config,\n\t\t\t\t\tdata,\n\t\t\t\t} as ThematicLayerConfig;\n\t\t\t}) ?? []\n\t\t);\n\t}, [analytics]);\n\n\treturn (\n\t\t<DHIS2Map\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\tthematicLayers={thematicLayers}\n\t\t/>\n\t);\n}\n\nexport function VisualizationSelector({ config }: VisualizationSelectorProps) {\n\tconst [type] = useVisualizationType();\n\tconst { analytics, loading } = useAnalyticsData();\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\theight: \"100%\",\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<CircularLoader small />\n\t\t\t</div>\n\t\t);\n\t}\n\tif (!analytics) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{type === \"pivotTable\" && (\n\t\t\t\t<PivotTableRenderer\n\t\t\t\t\toptions={config?.pivotTable as DHIS2PivotTableOptions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{type === \"chart\" && (\n\t\t\t\t<ChartRenderer options={config?.chart as ChartConfig} />\n\t\t\t)}\n\t\t\t{type === \"map\" && (\n\t\t\t\t<MapRenderer\n\t\t\t\t\toptions={\n\t\t\t\t\t\tconfig?.map as Omit<\n\t\t\t\t\t\t\tMapProps,\n\t\t\t\t\t\t\t\"orgUnitSelection\" | \"periodSelection\"\n\t\t\t\t\t\t>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createContext, useContext, useState } from 'react';
3
+
4
+ const VisualizationTypeContext = createContext("pivotTable");
5
+ const VisualizationConfigContext = createContext(void 0);
6
+ const VisualizationTypeSetter = createContext(void 0);
7
+ function useVisualizationType() {
8
+ return [
9
+ useContext(VisualizationTypeContext),
10
+ useContext(VisualizationTypeSetter)
11
+ ];
12
+ }
13
+ function useVisualizationConfig() {
14
+ return useContext(VisualizationConfigContext);
15
+ }
16
+ function VisualizationTypeProvider({
17
+ children,
18
+ defaultType,
19
+ config
20
+ }) {
21
+ const [type, setType] = useState(defaultType);
22
+ return /* @__PURE__ */ jsx(VisualizationTypeContext.Provider, { value: type, children: /* @__PURE__ */ jsx(VisualizationConfigContext.Provider, { value: config, children: /* @__PURE__ */ jsx(VisualizationTypeSetter.Provider, { value: setType, children }) }) });
23
+ }
24
+
25
+ export { VisualizationConfigContext, VisualizationTypeContext, VisualizationTypeProvider, VisualizationTypeSetter, useVisualizationConfig, useVisualizationType };
26
+ //# sourceMappingURL=out.js.map
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationTypeProvider/index.tsx"],"names":[],"mappings":"AA4CI;AA5CJ,SAAgB,eAAe,YAAY,gBAAgB;AAKpD,MAAM,2BACZ,cAAiC,YAAY;AACvC,MAAM,6BAA6B,cAExC,MAAS;AACJ,MAAM,0BAA0B,cAErC,MAAS;AAQJ,SAAS,uBAAuB;AACtC,SAAO;AAAA,IACN,WAAW,wBAAwB;AAAA,IACnC,WAAW,uBAAuB;AAAA,EACnC;AAID;AAEO,SAAS,yBAAyB;AACxC,SAAO,WAAW,0BAA0B;AAC7C;AAEO,SAAS,0BAA0B;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AACD,GAAmC;AAClC,QAAM,CAAC,MAAM,OAAO,IAAI,SAA4B,WAAW;AAE/D,SACC,oBAAC,yBAAyB,UAAzB,EAAkC,OAAO,MACzC,8BAAC,2BAA2B,UAA3B,EAAoC,OAAO,QAC3C,8BAAC,wBAAwB,UAAxB,EAAiC,OAAO,SACvC,UACF,GACD,GACD;AAEF","sourcesContent":["import React, { createContext, useContext, useState } from \"react\";\nimport { VisualizationConfig } from \"../../index.js\";\n\nexport type VisualizationType = \"pivotTable\" | \"chart\" | \"map\";\n\nexport const VisualizationTypeContext =\n\tcreateContext<VisualizationType>(\"pivotTable\");\nexport const VisualizationConfigContext = createContext<\n\tVisualizationConfig | undefined\n>(undefined);\nexport const VisualizationTypeSetter = createContext<\n\tReact.Dispatch<React.SetStateAction<VisualizationType>> | undefined\n>(undefined);\n\nexport interface VisualizationTypeProviderProps {\n\tchildren: React.ReactNode;\n\tdefaultType: VisualizationType;\n\tconfig: VisualizationConfig;\n}\n\nexport function useVisualizationType() {\n\treturn [\n\t\tuseContext(VisualizationTypeContext),\n\t\tuseContext(VisualizationTypeSetter),\n\t] as [\n\t\tVisualizationType,\n\t\tReact.Dispatch<React.SetStateAction<VisualizationType>>,\n\t];\n}\n\nexport function useVisualizationConfig() {\n\treturn useContext(VisualizationConfigContext);\n}\n\nexport function VisualizationTypeProvider({\n\tchildren,\n\tdefaultType,\n\tconfig,\n}: VisualizationTypeProviderProps) {\n\tconst [type, setType] = useState<VisualizationType>(defaultType);\n\n\treturn (\n\t\t<VisualizationTypeContext.Provider value={type}>\n\t\t\t<VisualizationConfigContext.Provider value={config}>\n\t\t\t\t<VisualizationTypeSetter.Provider value={setType}>\n\t\t\t\t\t{children}\n\t\t\t\t</VisualizationTypeSetter.Provider>\n\t\t\t</VisualizationConfigContext.Provider>\n\t\t</VisualizationTypeContext.Provider>\n\t);\n}\n"]}
@@ -0,0 +1,55 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
3
+ import { useVisualizationType, useVisualizationConfig } from '../VisualizationTypeProvider/index.js';
4
+ import { IconTable24, IconVisualizationColumn24, IconWorld24, Tooltip, Button } from '@dhis2/ui';
5
+ import i18n from '@dhis2/d2-i18n';
6
+
7
+ const supportedVisualizationTypes = [
8
+ {
9
+ id: "pivotTable",
10
+ icon: /* @__PURE__ */ jsx(IconTable24, {}),
11
+ label: i18n.t("Pivot table")
12
+ },
13
+ {
14
+ id: "chart",
15
+ icon: /* @__PURE__ */ jsx(IconVisualizationColumn24, {}),
16
+ label: i18n.t("Chart")
17
+ },
18
+ {
19
+ id: "map",
20
+ icon: /* @__PURE__ */ jsx(IconWorld24, {}),
21
+ label: i18n.t("Map")
22
+ }
23
+ ];
24
+ function VisualizationTypeSelector() {
25
+ const [type, setType] = useVisualizationType();
26
+ const config = useVisualizationConfig();
27
+ const types = useMemo(
28
+ () => supportedVisualizationTypes.filter((supportedType) => {
29
+ return Object.keys(config ?? {}).includes(supportedType.id) && supportedType.id !== type;
30
+ }),
31
+ [type, config]
32
+ );
33
+ return /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: 8 }, children: types.map(({ icon, label, id }) => {
34
+ return /* @__PURE__ */ jsx(
35
+ Tooltip,
36
+ {
37
+ content: i18n.t("View as {{type}}", {
38
+ type: label.toLowerCase()
39
+ }),
40
+ children: /* @__PURE__ */ jsx(
41
+ Button,
42
+ {
43
+ onClick: () => setType(id),
44
+ icon
45
+ }
46
+ )
47
+ },
48
+ `${label}-tooltip`
49
+ );
50
+ }) });
51
+ }
52
+
53
+ export { VisualizationTypeSelector };
54
+ //# sourceMappingURL=out.js.map
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/Visualization/components/VisualizationTypeSelector/index.tsx"],"names":[],"mappings":"AAkBQ;AAlBR,SAAgB,eAAe;AAC/B;AAAA,EACC;AAAA,EACA;AAAA,OAEM;AACP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,UAAU;AAEjB,MAAM,8BAA8B;AAAA,EACnC;AAAA,IACC,IAAI;AAAA,IACJ,MAAM,oBAAC,eAAY;AAAA,IACnB,OAAO,KAAK,EAAE,aAAa;AAAA,EAC5B;AAAA,EACA;AAAA,IACC,IAAI;AAAA,IACJ,MAAM,oBAAC,6BAA0B;AAAA,IACjC,OAAO,KAAK,EAAE,OAAO;AAAA,EACtB;AAAA,EACA;AAAA,IACC,IAAI;AAAA,IACJ,MAAM,oBAAC,eAAY;AAAA,IACnB,OAAO,KAAK,EAAE,KAAK;AAAA,EACpB;AACD;AAEO,SAAS,4BAA4B;AAC3C,QAAM,CAAC,MAAM,OAAO,IAAI,qBAAqB;AAC7C,QAAM,SAAS,uBAAuB;AAEtC,QAAM,QAAQ;AAAA,IACb,MACC,4BAA4B,OAAO,CAAC,kBAAkB;AACrD,aACC,OAAO,KAAK,UAAU,CAAC,CAAC,EAAE,SAAS,cAAc,EAAE,KACnD,cAAc,OAAO;AAAA,IAEvB,CAAC;AAAA,IACF,CAAC,MAAM,MAAM;AAAA,EACd;AAEA,SACC,oBAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,EAAE,GACpC,gBAAM,IAAI,CAAC,EAAE,MAAM,OAAO,GAAG,MAAM;AACnC,WACC;AAAA,MAAC;AAAA;AAAA,QAEA,SAAS,KAAK,EAAE,oBAAoB;AAAA,UACnC,MAAM,MAAM,YAAY;AAAA,QACzB,CAAC;AAAA,QAED;AAAA,UAAC;AAAA;AAAA,YACA,SAAS,MAAM,QAAQ,EAAuB;AAAA,YAC9C;AAAA;AAAA,QACD;AAAA;AAAA,MARK,GAAG,KAAK;AAAA,IASd;AAAA,EAEF,CAAC,GACF;AAEF","sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n\tuseVisualizationConfig,\n\tuseVisualizationType,\n\tVisualizationType,\n} from \"../VisualizationTypeProvider/index.js\";\nimport {\n\tButton,\n\tIconTable24,\n\tIconVisualizationColumn24,\n\tIconWorld24,\n\tTooltip,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nconst supportedVisualizationTypes = [\n\t{\n\t\tid: \"pivotTable\",\n\t\ticon: <IconTable24 />,\n\t\tlabel: i18n.t(\"Pivot table\"),\n\t},\n\t{\n\t\tid: \"chart\",\n\t\ticon: <IconVisualizationColumn24 />,\n\t\tlabel: i18n.t(\"Chart\"),\n\t},\n\t{\n\t\tid: \"map\",\n\t\ticon: <IconWorld24 />,\n\t\tlabel: i18n.t(\"Map\"),\n\t},\n];\n\nexport function VisualizationTypeSelector() {\n\tconst [type, setType] = useVisualizationType();\n\tconst config = useVisualizationConfig();\n\n\tconst types = useMemo(\n\t\t() =>\n\t\t\tsupportedVisualizationTypes.filter((supportedType) => {\n\t\t\t\treturn (\n\t\t\t\t\tObject.keys(config ?? {}).includes(supportedType.id) &&\n\t\t\t\t\tsupportedType.id !== type\n\t\t\t\t);\n\t\t\t}),\n\t\t[type, config],\n\t);\n\n\treturn (\n\t\t<div style={{ display: \"flex\", gap: 8 }}>\n\t\t\t{types.map(({ icon, label, id }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tkey={`${label}-tooltip`}\n\t\t\t\t\t\tcontent={i18n.t(\"View as {{type}}\", {\n\t\t\t\t\t\t\ttype: label.toLowerCase(),\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={() => setType(id as VisualizationType)}\n\t\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,113 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { VisualizationProvider } from './components/VisualizationProvider/index.js';
3
+ import { VisualizationTypeSelector } from './components/VisualizationTypeSelector/index.js';
4
+ import { VisualizationDimensionSelector } from './components/VisualizationDimensionSelector/index.js';
5
+ import { VisualizationSelector } from './components/VisualizationSelector/index.js';
6
+ import { ErrorBoundary } from 'react-error-boundary';
7
+ import i18n from '@dhis2/d2-i18n';
8
+ import { IconError24, colors, Button } from '@dhis2/ui';
9
+
10
+ function ErrorFallback({
11
+ error,
12
+ resetErrorBoundary,
13
+ height
14
+ }) {
15
+ return /* @__PURE__ */ jsxs(
16
+ "div",
17
+ {
18
+ style: {
19
+ width: "100%",
20
+ textAlign: "center",
21
+ height: height ?? 500,
22
+ display: "flex",
23
+ flexDirection: "column",
24
+ alignItems: "center",
25
+ justifyContent: "center",
26
+ gap: 16,
27
+ padding: 16
28
+ },
29
+ children: [
30
+ /* @__PURE__ */ jsx(IconError24, {}),
31
+ /* @__PURE__ */ jsx(
32
+ "h3",
33
+ {
34
+ style: {
35
+ color: colors.grey800,
36
+ margin: 0
37
+ },
38
+ children: i18n.t("Could not load visualization")
39
+ }
40
+ ),
41
+ /* @__PURE__ */ jsx("p", { style: { margin: 0 }, children: error.message }),
42
+ resetErrorBoundary && /* @__PURE__ */ jsx(Button, { onClick: resetErrorBoundary, small: true, children: i18n.t("Try again") })
43
+ ]
44
+ }
45
+ );
46
+ }
47
+ function Visualization({
48
+ dimensions,
49
+ layout,
50
+ defaultVisualizationType,
51
+ config,
52
+ height,
53
+ showToolbar,
54
+ showOrgUnitSelector,
55
+ showPeriodSelector
56
+ }) {
57
+ return /* @__PURE__ */ jsx(
58
+ ErrorBoundary,
59
+ {
60
+ resetKeys: [dimensions, layout, defaultVisualizationType, config],
61
+ fallbackRender: (props) => /* @__PURE__ */ jsx(ErrorFallback, { height, ...props }),
62
+ children: /* @__PURE__ */ jsx(
63
+ VisualizationProvider,
64
+ {
65
+ config,
66
+ type: defaultVisualizationType,
67
+ layout,
68
+ dimensions,
69
+ children: /* @__PURE__ */ jsxs(
70
+ "div",
71
+ {
72
+ style: {
73
+ display: "flex",
74
+ flexDirection: "column",
75
+ width: "100%",
76
+ height: "100%",
77
+ gap: 16
78
+ },
79
+ children: [
80
+ showToolbar && /* @__PURE__ */ jsxs(
81
+ "div",
82
+ {
83
+ style: {
84
+ display: "flex",
85
+ flexDirection: "row",
86
+ gap: 16,
87
+ justifyContent: "space-between"
88
+ },
89
+ children: [
90
+ /* @__PURE__ */ jsx(VisualizationTypeSelector, {}),
91
+ /* @__PURE__ */ jsx(
92
+ VisualizationDimensionSelector,
93
+ {
94
+ showPeriodSelector,
95
+ showOrgUnitSelector
96
+ }
97
+ )
98
+ ]
99
+ }
100
+ ),
101
+ /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(VisualizationSelector, { config }) })
102
+ ]
103
+ }
104
+ )
105
+ }
106
+ )
107
+ }
108
+ );
109
+ }
110
+
111
+ export { Visualization };
112
+ //# sourceMappingURL=out.js.map
113
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/Visualization/index.tsx"],"names":[],"mappings":"AA2CE,SAgFG,UAnEF,KAbD;AAzCF,SAAS,6BAA6B;AAGtC,SAAS,iCAAiC;AAC1C,SAAS,sCAAsC;AAC/C,SAAS,6BAA6B;AAItC,SAAS,qBAAoC;AAC7C,OAAO,UAAU;AACjB,SAAS,QAAQ,QAAQ,mBAAmB;AAwB5C,SAAS,cAAc;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AACD,GAAwC;AACvC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,UAAU;AAAA,QAClB,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,KAAK;AAAA,QACL,SAAS;AAAA,MACV;AAAA,MAEA;AAAA,4BAAC,eAAY;AAAA,QACb;AAAA,UAAC;AAAA;AAAA,YACA,OAAO;AAAA,cACN,OAAO,OAAO;AAAA,cACd,QAAQ;AAAA,YACT;AAAA,YAEC,eAAK,EAAE,8BAA8B;AAAA;AAAA,QACvC;AAAA,QACA,oBAAC,OAAE,OAAO,EAAE,QAAQ,EAAE,GAAI,gBAAM,SAAQ;AAAA,QACvC,sBACA,oBAAC,UAAO,SAAS,oBAAoB,OAAK,MACxC,eAAK,EAAE,WAAW,GACpB;AAAA;AAAA;AAAA,EAEF;AAEF;AAEO,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAuB;AACtB,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAW,CAAC,YAAY,QAAQ,0BAA0B,MAAM;AAAA,MAChE,gBAAgB,CAAC,UACf,oBAAC,iBAAc,QAAiB,GAAG,OAAO;AAAA,MAG5C;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACA,OAAO;AAAA,gBACN,SAAS;AAAA,gBACT,eAAe;AAAA,gBACf,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,KAAK;AAAA,cACN;AAAA,cAEC;AAAA,+BACA;AAAA,kBAAC;AAAA;AAAA,oBACA,OAAO;AAAA,sBACN,SAAS;AAAA,sBACT,eAAe;AAAA,sBACf,KAAK;AAAA,sBACL,gBAAgB;AAAA,oBACjB;AAAA,oBAEA;AAAA,0CAAC,6BAA0B;AAAA,sBAC3B;AAAA,wBAAC;AAAA;AAAA,0BACA;AAAA,0BACA;AAAA;AAAA,sBACD;AAAA;AAAA;AAAA,gBACD;AAAA,gBAED,gCACC,8BAAC,yBAAsB,QAAgB,GACxC;AAAA;AAAA;AAAA,UACD;AAAA;AAAA,MACD;AAAA;AAAA,EACD;AAEF","sourcesContent":["import React from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { VisualizationProvider } from \"./components/VisualizationProvider/index.js\";\nimport { Layout } from \"./components/LayoutProvider/index.js\";\nimport { VisualizationType } from \"./components/VisualizationTypeProvider/index.js\";\nimport { VisualizationTypeSelector } from \"./components/VisualizationTypeSelector/index.js\";\nimport { VisualizationDimensionSelector } from \"./components/VisualizationDimensionSelector/index.js\";\nimport { VisualizationSelector } from \"./components/VisualizationSelector/index.js\";\nimport { DHIS2PivotTableOptions } from \"../DHIS2PivotTable/index.js\";\nimport { ChartConfig } from \"../ChartAnalytics/index.js\";\nimport { MapProps } from \"../Map/index.js\";\nimport { ErrorBoundary, FallbackProps } from \"react-error-boundary\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { Button, colors, IconError24 } from \"@dhis2/ui\";\n\nexport interface VisualizationConfig {\n\tpivotTable?: DHIS2PivotTableOptions;\n\tchart?: ChartConfig;\n\tmap?: Omit<MapProps, \"orgUnitSelection\" | \"periodSelection\">;\n}\n\nexport interface VisualizationProps {\n\tlayout: Layout;\n\tdefaultVisualizationType: VisualizationType;\n\tdimensions: AnalyticsDimension;\n\tconfig: VisualizationConfig;\n\theight?: number;\n\tshowToolbar?: boolean;\n\tshowPeriodSelector?: boolean;\n\tshowOrgUnitSelector?: boolean;\n}\n\n/**\n * An analytics component that allows visualization of `chart`, `map`, and `pivot table` by passing analytics object and the default layout and type\n *\n * */\n\nfunction ErrorFallback({\n\terror,\n\tresetErrorBoundary,\n\theight,\n}: FallbackProps & { height?: number }) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\twidth: \"100%\",\n\t\t\t\ttextAlign: \"center\",\n\t\t\t\theight: height ?? 500,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tgap: 16,\n\t\t\t\tpadding: 16,\n\t\t\t}}\n\t\t>\n\t\t\t<IconError24 />\n\t\t\t<h3\n\t\t\t\tstyle={{\n\t\t\t\t\tcolor: colors.grey800,\n\t\t\t\t\tmargin: 0,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i18n.t(\"Could not load visualization\")}\n\t\t\t</h3>\n\t\t\t<p style={{ margin: 0 }}>{error.message}</p>\n\t\t\t{resetErrorBoundary && (\n\t\t\t\t<Button onClick={resetErrorBoundary} small>\n\t\t\t\t\t{i18n.t(\"Try again\")}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport function Visualization({\n\tdimensions,\n\tlayout,\n\tdefaultVisualizationType,\n\tconfig,\n\theight,\n\tshowToolbar,\n\tshowOrgUnitSelector,\n\tshowPeriodSelector,\n}: VisualizationProps) {\n\treturn (\n\t\t<ErrorBoundary\n\t\t\tresetKeys={[dimensions, layout, defaultVisualizationType, config]}\n\t\t\tfallbackRender={(props) =>\n\t\t\t\t(<ErrorFallback height={height} {...props} />) as any\n\t\t\t}\n\t\t>\n\t\t\t<VisualizationProvider\n\t\t\t\tconfig={config}\n\t\t\t\ttype={defaultVisualizationType}\n\t\t\t\tlayout={layout}\n\t\t\t\tdimensions={dimensions}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{showToolbar && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\t\tflexDirection: \"row\",\n\t\t\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<VisualizationTypeSelector />\n\t\t\t\t\t\t\t<VisualizationDimensionSelector\n\t\t\t\t\t\t\t\tshowPeriodSelector={showPeriodSelector}\n\t\t\t\t\t\t\t\tshowOrgUnitSelector={showOrgUnitSelector}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<>\n\t\t\t\t\t\t<VisualizationSelector config={config} />\n\t\t\t\t\t</>\n\t\t\t\t</div>\n\t\t\t</VisualizationProvider>\n\t\t</ErrorBoundary>\n\t);\n}\n"]}
@@ -0,0 +1,8 @@
1
+ export * from './components/Map/index.js';
2
+ export * from './components/CircularProgressDashboard/index.js';
3
+ export * from './components/ChartAnalytics/index.js';
4
+ export * from './components/SingleValueContainer/index.js';
5
+ export * from './components/DHIS2PivotTable/index.js';
6
+ export * from './components/Visualization/index.js';
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","sourcesContent":["export * from \"./components/Map/index.js\";\nexport * from \"./components/CircularProgressDashboard/index.js\";\nexport * from \"./components/ChartAnalytics/index.js\";\nexport * from \"./components/SingleValueContainer/index.js\";\nexport * from \"./components/DHIS2PivotTable/index.js\";\nexport * from \"./components/Visualization/index.js\";\n"]}
package/dist/index.js CHANGED
@@ -1,8 +1,49 @@
1
- export * from './components/Map/index.js';
2
- export * from './components/CircularProgressDashboard/index.js';
3
- export * from './components/ChartAnalytics/index.js';
4
- export * from './components/SingleValueContainer/index.js';
5
- export * from './components/DHIS2PivotTable/index.js';
6
- export * from './components/Visualization/index.js';
1
+ 'use strict';
2
+
3
+ var index_js = require('./components/Map/index.js');
4
+ var index_js$1 = require('./components/CircularProgressDashboard/index.js');
5
+ var index_js$2 = require('./components/ChartAnalytics/index.js');
6
+ var index_js$3 = require('./components/SingleValueContainer/index.js');
7
+ var index_js$4 = require('./components/DHIS2PivotTable/index.js');
8
+ var index_js$5 = require('./components/Visualization/index.js');
9
+
10
+
11
+
12
+ Object.keys(index_js).forEach(function (k) {
13
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
14
+ enumerable: true,
15
+ get: function () { return index_js[k]; }
16
+ });
17
+ });
18
+ Object.keys(index_js$1).forEach(function (k) {
19
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
20
+ enumerable: true,
21
+ get: function () { return index_js$1[k]; }
22
+ });
23
+ });
24
+ Object.keys(index_js$2).forEach(function (k) {
25
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
26
+ enumerable: true,
27
+ get: function () { return index_js$2[k]; }
28
+ });
29
+ });
30
+ Object.keys(index_js$3).forEach(function (k) {
31
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
32
+ enumerable: true,
33
+ get: function () { return index_js$3[k]; }
34
+ });
35
+ });
36
+ Object.keys(index_js$4).forEach(function (k) {
37
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
38
+ enumerable: true,
39
+ get: function () { return index_js$4[k]; }
40
+ });
41
+ });
42
+ Object.keys(index_js$5).forEach(function (k) {
43
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
44
+ enumerable: true,
45
+ get: function () { return index_js$5[k]; }
46
+ });
47
+ });
7
48
  //# sourceMappingURL=out.js.map
8
49
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "@hisptz/dhis2-analytics",
3
- "version": "2.0.0-alpha.01",
3
+ "version": "2.0.1",
4
4
  "main": "./dist/index.js",
5
- "module": "./dist/index.js",
5
+ "module": "./dist/esm/index.js",
6
6
  "types": "./dist/types/index.d.ts",
7
7
  "typings": "./dist/types/index.d.ts",
8
8
  "sideEffects": false,
9
- "type": "module",
10
9
  "license": "MIT",
11
10
  "files": [
12
11
  "dist/**",
@@ -30,7 +29,7 @@
30
29
  "concurrently": "^8.2.2",
31
30
  "eslint": "^8.56.0",
32
31
  "lodash": "^4.17.21",
33
- "react": "^18.2.0",
32
+ "react": "^16.14.0",
34
33
  "react-error-boundary": "^4.0.12",
35
34
  "react-hook-form": "^7.43.9",
36
35
  "styled-jsx": "^5.1.2",
@@ -56,8 +55,8 @@
56
55
  "react-query": "^3.39.3",
57
56
  "react-spring": "^9.6.1",
58
57
  "screenfull": "^6.0.2",
59
- "@hisptz/dhis2-ui": "2.0.0-alpha.01",
60
- "@hisptz/dhis2-utils": "2.0.0-alpha.01"
58
+ "@hisptz/dhis2-utils": "2.0.1",
59
+ "@hisptz/dhis2-ui": "2.0.1"
61
60
  },
62
61
  "peerDependencies": {
63
62
  "@dhis2/app-runtime": "^3.10.2",