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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 @@
1
+ {"version":3,"sources":["../../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":[],"mappings":"AAoCI,cAUC,YAVD;AApCJ,SAAS,cAAc;AACvB,SAAgB,eAAe;AAC/B,SAAS,uCAAuC;AAGhD,cAAc;AAEP,SAAS,2BAA2B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAA+C;AAC9C,QAAM,gCAAgC,QAAQ,MAAM;AACnD,WAAO,UAAU,SACd,QACA,KAAK,OAAQ,aAAa,MAAM,eAAe,KAAM,GAAG;AAAA,EAC5D,GAAG,CAAC,WAAW,aAAa,KAAK,CAAC;AAClC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,QACN,iBAAiB;AAAA,QACjB,OAAO;AAAA,MACR;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACA,QAAQ;AAAA,YACP,MAAM;AAAA,cACL,QAAQ,aAAa,SAAS,OAAO;AAAA,YACtC;AAAA,UACD;AAAA,UACA,aAAa;AAAA,UACb,OAAO;AAAA,UAEP;AAAA,YAAC;AAAA;AAAA,cACA,OAAO;AAAA,gBACN,GAAI,aAAa,CAAC;AAAA,gBAClB,UACC,WAAW,YAAY,OAAO,SAAS,WACpC,MAAO,OACP;AAAA,gBACJ,WAAW;AAAA,cACZ;AAAA,cAEA;AAAA,gBAAC;AAAA;AAAA,kBACA,OAAO;AAAA,oBACN,OACC,WAAW,SACX,aAAa,SACb,OAAO;AAAA,kBACT;AAAA,kBAEC;AAAA;AAAA,oBAA8B;AAAA;AAAA;AAAA,cAChC;AAAA;AAAA,UACD;AAAA;AAAA,MACD;AAAA;AAAA,EACD;AAEF;AAEO,MAAM,4BAA4B","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport React, { useMemo } from \"react\";\nimport { CircularProgressbarWithChildren } from \"react-circular-progressbar\";\nimport { CircularDashboardProps } from \"./types/props.js\";\n\nexport * from \"./types/props.js\";\n\nexport function CircularProgressVisualizer({\n\tnumerator,\n\tsize,\n\tdenominator,\n\tvalue,\n\ttextStyle,\n\tstrokeStyle,\n}: CircularDashboardProps): React.ReactElement {\n\tconst filledSectionFieldsPercentage = useMemo(() => {\n\t\treturn value !== undefined\n\t\t\t? value\n\t\t\t: Math.floor(((numerator ?? 0) / (denominator ?? 1)) * 100);\n\t}, [numerator, denominator, value]);\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\twidth: size,\n\t\t\t}}\n\t\t>\n\t\t\t<CircularProgressbarWithChildren\n\t\t\t\tstyles={{\n\t\t\t\t\tpath: {\n\t\t\t\t\t\tstroke: strokeStyle?.color ?? colors.blue700,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tstrokeWidth={7}\n\t\t\t\tvalue={filledSectionFieldsPercentage}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...(textStyle ?? {}),\n\t\t\t\t\t\tfontSize:\n\t\t\t\t\t\t\ttextStyle?.fontSize ?? typeof size === \"number\"\n\t\t\t\t\t\t\t\t? 0.3 * (size as number)\n\t\t\t\t\t\t\t\t: \"100%\",\n\t\t\t\t\t\tmarginTop: -11,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<strong\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\ttextStyle?.color ??\n\t\t\t\t\t\t\t\tstrokeStyle?.color ??\n\t\t\t\t\t\t\t\tcolors.blue700,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{filledSectionFieldsPercentage}%\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t</CircularProgressbarWithChildren>\n\t\t</div>\n\t);\n}\n\nexport const CircularProgressDashboard = CircularProgressVisualizer;\n"]}
@@ -0,0 +1,42 @@
1
+ import { CircularProgressVisualizer } from './CircularProgressIndicator';
2
+
3
+ const meta = {
4
+ title: "Circular Progress Visualizer",
5
+ component: CircularProgressVisualizer
6
+ };
7
+ var CircularProgressIndicator_stories_default = meta;
8
+ const Default = { name: "Default" };
9
+ Default.args = {
10
+ numerator: 7,
11
+ denominator: 10,
12
+ size: 500
13
+ };
14
+ const WithStrokeStyling = {
15
+ name: "With stroke styling"
16
+ };
17
+ WithStrokeStyling.args = {
18
+ numerator: 7,
19
+ denominator: 10,
20
+ size: 500,
21
+ strokeStyle: {
22
+ width: "10%",
23
+ color: "red"
24
+ }
25
+ };
26
+ const WithTextStyling = {
27
+ name: "With text styling"
28
+ };
29
+ WithTextStyling.args = {
30
+ numerator: 7,
31
+ denominator: 10,
32
+ size: 500,
33
+ textStyle: {
34
+ color: "red",
35
+ fontWeight: "bold",
36
+ fontSize: "20vh"
37
+ }
38
+ };
39
+
40
+ export { Default, WithStrokeStyling, WithTextStyling, CircularProgressIndicator_stories_default as default };
41
+ //# sourceMappingURL=out.js.map
42
+ //# sourceMappingURL=CircularProgressIndicator.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CircularProgressDashboard/CircularProgressIndicator.stories.tsx"],"names":[],"mappings":"AACA,SAAS,kCAAkC;AAE3C,MAAM,OAAgD;AAAA,EACrD,OAAO;AAAA,EACP,WAAW;AACZ;AACA,IAAO,4CAAQ;AAIR,MAAM,UAAiB,EAAE,MAAM,UAAU;AAChD,QAAQ,OAAO;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AAAA,EACb,MAAM;AACP;AAEO,MAAM,oBAA2B;AAAA,EACvC,MAAM;AACP;AACA,kBAAkB,OAAO;AAAA,EACxB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,IACZ,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AACD;AAEO,MAAM,kBAAyB;AAAA,EACrC,MAAM;AACP;AACA,gBAAgB,OAAO;AAAA,EACtB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,EACX;AACD","sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { CircularProgressVisualizer } from \"./CircularProgressIndicator\";\n\nconst meta: Meta<typeof CircularProgressVisualizer> = {\n\ttitle: \"Circular Progress Visualizer\",\n\tcomponent: CircularProgressVisualizer,\n};\nexport default meta;\n\ntype Story = StoryObj<typeof CircularProgressVisualizer>;\n\nexport const Default: Story = { name: \"Default\" };\nDefault.args = {\n\tnumerator: 7,\n\tdenominator: 10,\n\tsize: 500,\n};\n\nexport const WithStrokeStyling: Story = {\n\tname: \"With stroke styling\",\n};\nWithStrokeStyling.args = {\n\tnumerator: 7,\n\tdenominator: 10,\n\tsize: 500,\n\tstrokeStyle: {\n\t\twidth: \"10%\",\n\t\tcolor: \"red\",\n\t},\n};\n\nexport const WithTextStyling: Story = {\n\tname: \"With text styling\",\n};\nWithTextStyling.args = {\n\tnumerator: 7,\n\tdenominator: 10,\n\tsize: 500,\n\ttextStyle: {\n\t\tcolor: \"red\",\n\t\tfontWeight: \"bold\",\n\t\tfontSize: \"20vh\",\n\t},\n};\n"]}
@@ -0,0 +1,4 @@
1
+ export * from './CircularProgressIndicator.js';
2
+ export * from './types/props.js';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/CircularProgressDashboard/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc","sourcesContent":["export * from \"./CircularProgressIndicator.js\";\nexport * from \"./types/props.js\";\n"]}
@@ -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,26 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { DHIS2PivotTableEngine } from './services/engine.js';
3
+ import { useMemo } from 'react';
4
+ import { DHIS2PivotTableEngineProvider } from './state/engine.js';
5
+ import { PivotTable } from './components/Table/index.js';
6
+ import { TableHeaders } from './components/TableHeaders/index.js';
7
+ import { CustomPivotTableBody } from './components/TableBody/index.js';
8
+
9
+ function DHIS2PivotTable({
10
+ analytics,
11
+ config,
12
+ tableProps
13
+ }) {
14
+ const engine = useMemo(
15
+ () => new DHIS2PivotTableEngine({ analytics, config }),
16
+ [analytics, config]
17
+ );
18
+ return /* @__PURE__ */ jsx(DHIS2PivotTableEngineProvider, { engine, children: /* @__PURE__ */ jsxs(PivotTable, { tableProps, children: [
19
+ /* @__PURE__ */ jsx(TableHeaders, {}),
20
+ /* @__PURE__ */ jsx(CustomPivotTableBody, {})
21
+ ] }) });
22
+ }
23
+
24
+ export { DHIS2PivotTable };
25
+ //# sourceMappingURL=out.js.map
26
+ //# sourceMappingURL=DHIS2PivotTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DHIS2PivotTable/DHIS2PivotTable.tsx"],"names":[],"mappings":"AAwDG,SACC,KADD;AAvDH,SAAS,6BAA6B;AACtC,SAAgB,eAAe;AAC/B,SAAS,qCAAqC;AAC9C,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,4BAA4B;AAsC9B,SAAS,gBAAgB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACD,GAAyB;AACxB,QAAM,SAAS;AAAA,IACd,MAAM,IAAI,sBAAsB,EAAE,WAAW,OAAO,CAAC;AAAA,IACrD,CAAC,WAAW,MAAM;AAAA,EACnB;AAEA,SACC,oBAAC,iCAA8B,QAC9B,+BAAC,cAAW,YACX;AAAA,wBAAC,gBAAa;AAAA,IACd,oBAAC,wBAAqB;AAAA,KACvB,GACD;AAEF","sourcesContent":["import { Analytics, LegendSet } from \"@hisptz/dhis2-utils\";\nimport { DHIS2PivotTableEngine } from \"./services/engine.js\";\nimport React, { useMemo } from \"react\";\nimport { DHIS2PivotTableEngineProvider } from \"./state/engine.js\";\nimport { PivotTable } from \"./components/Table/index.js\";\nimport { TableHeaders } from \"./components/TableHeaders/index.js\";\nimport { CustomPivotTableBody } from \"./components/TableBody/index.js\";\nimport { DHIS2Dimension } from \"./interfaces/index.js\";\nimport { DataTableProps } from \"@dhis2/ui\";\n\nexport interface DHIS2PivotTableOptions {\n\tlegendSets?: LegendSet[];\n\thideEmptyColumns?: boolean;\n\thideEmptyRows?: boolean;\n\tshowRowTotals?: boolean;\n\tshowColumnTotals?: boolean;\n\tshowRowSubtotals?: boolean;\n\tshowColumnSubtotals?: boolean;\n\tfixColumnHeaders?: boolean;\n\tfixRowHeaders?: boolean;\n}\n\nexport interface DHIS2PivotTableProps {\n\tanalytics: Analytics;\n\ttableProps?: DataTableProps;\n\tconfig: {\n\t\tlayout: {\n\t\t\tcolumns: {\n\t\t\t\tdimension: DHIS2Dimension;\n\t\t\t\tlabel?: string;\n\t\t\t}[];\n\t\t\trows: {\n\t\t\t\tdimension: DHIS2Dimension;\n\t\t\t\tlabel?: string;\n\t\t\t}[];\n\t\t\tfilter?: {\n\t\t\t\tdimension: DHIS2Dimension;\n\t\t\t\tlabel?: string;\n\t\t\t}[];\n\t\t};\n\t\toptions?: DHIS2PivotTableOptions;\n\t};\n}\n\nexport function DHIS2PivotTable({\n\tanalytics,\n\tconfig,\n\ttableProps,\n}: DHIS2PivotTableProps) {\n\tconst engine = useMemo(\n\t\t() => new DHIS2PivotTableEngine({ analytics, config }),\n\t\t[analytics, config],\n\t);\n\n\treturn (\n\t\t<DHIS2PivotTableEngineProvider engine={engine}>\n\t\t\t<PivotTable tableProps={tableProps}>\n\t\t\t\t<TableHeaders />\n\t\t\t\t<CustomPivotTableBody />\n\t\t\t</PivotTable>\n\t\t</DHIS2PivotTableEngineProvider>\n\t);\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import simpleData from '../../shared/resources/simple-data.json';
2
+ import { DHIS2PivotTable } from './DHIS2PivotTable';
3
+
4
+ const meta = {
5
+ title: "DHIS2 Pivot Table",
6
+ component: DHIS2PivotTable
7
+ };
8
+ var DHIS2PivotTable_stories_default = meta;
9
+ const Default = {
10
+ name: "Default"
11
+ };
12
+ Default.args = {
13
+ analytics: simpleData,
14
+ config: {
15
+ layout: {
16
+ columns: [
17
+ { dimension: "ou" },
18
+ { dimension: "pe", label: "Period" }
19
+ ],
20
+ rows: [{ dimension: "dx", label: "Services" }],
21
+ filter: []
22
+ },
23
+ options: {}
24
+ },
25
+ tableProps: {}
26
+ };
27
+
28
+ export { Default, DHIS2PivotTable_stories_default as default };
29
+ //# sourceMappingURL=out.js.map
30
+ //# sourceMappingURL=DHIS2PivotTable.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DHIS2PivotTable/DHIS2PivotTable.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,gBAAgB;AAEvB,SAAS,uBAAuB;AAEhC,MAAM,OAAqC;AAAA,EAC1C,OAAO;AAAA,EACP,WAAW;AACZ;AAEA,IAAO,kCAAQ;AAGR,MAAM,UAAiB;AAAA,EAC7B,MAAM;AACP;AACA,QAAQ,OAAO;AAAA,EACd,WAAW;AAAA,EACX,QAAQ;AAAA,IACP,QAAQ;AAAA,MACP,SAAS;AAAA,QACR,EAAE,WAAW,KAAK;AAAA,QAClB,EAAE,WAAW,MAAM,OAAO,SAAS;AAAA,MACpC;AAAA,MACA,MAAM,CAAC,EAAE,WAAW,MAAM,OAAO,WAAW,CAAC;AAAA,MAC7C,QAAQ,CAAC;AAAA,IACV;AAAA,IACA,SAAS,CAAC;AAAA,EACX;AAAA,EACA,YAAY,CAAC;AACd","sourcesContent":["import simpleData from \"../../shared/resources/simple-data.json\";\nimport { Meta, StoryObj } from \"@storybook/react\";\nimport { DHIS2PivotTable } from \"./DHIS2PivotTable\";\n\nconst meta: Meta<typeof DHIS2PivotTable> = {\n\ttitle: \"DHIS2 Pivot Table\",\n\tcomponent: DHIS2PivotTable,\n};\n\nexport default meta;\n\ntype Story = StoryObj<typeof DHIS2PivotTable>;\nexport const Default: Story = {\n\tname: \"Default\",\n};\nDefault.args = {\n\tanalytics: simpleData as any,\n\tconfig: {\n\t\tlayout: {\n\t\t\tcolumns: [\n\t\t\t\t{ dimension: \"ou\" },\n\t\t\t\t{ dimension: \"pe\", label: \"Period\" },\n\t\t\t],\n\t\t\trows: [{ dimension: \"dx\", label: \"Services\" }],\n\t\t\tfilter: [],\n\t\t},\n\t\toptions: {},\n\t},\n\ttableProps: {},\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { DataTable } from '@dhis2/ui';
3
+
4
+ function PivotTable({ tableProps, children }) {
5
+ return /* @__PURE__ */ jsx(DataTable, { ...tableProps ?? {}, children });
6
+ }
7
+
8
+ export { PivotTable };
9
+ //# sourceMappingURL=out.js.map
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/Table/index.tsx"],"names":[],"mappings":"AAWQ;AAVR,SAAS,iBAAiC;AASnC,SAAS,WAAW,EAAE,YAAY,SAAS,GAAoB;AACrE,SAAO,oBAAC,aAAW,GAAI,cAAc,CAAC,GAAK,UAAS;AACrD","sourcesContent":["import React from \"react\";\nimport { DataTable, DataTableProps } from \"@dhis2/ui\";\n\nexport type PivotTableLayoutProps = DataTableProps;\n\nexport interface PivotTableProps {\n\tchildren: React.ReactNode;\n\ttableProps?: DataTableProps;\n}\n\nexport function PivotTable({ tableProps, children }: PivotTableProps) {\n\treturn <DataTable {...(tableProps ?? {})}>{children}</DataTable>;\n}\n"]}
@@ -0,0 +1,11 @@
1
+ .nested-table-cell {
2
+ padding: 0 !important;
3
+ }
4
+ .nested-table {
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+ .header-cell {
9
+ border-right: 1px solid rgb(232, 237, 242) !important;
10
+ }
11
+ /*# sourceMappingURL=TableBody.module.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/TableBody.module.css"],"sourcesContent":[".nested-table-cell {\n padding: 0 !important;\n}\n\n.nested-table {\n margin: 0;\n padding: 0;\n}\n\n.header-cell {\n border-right: 1px solid rgb(232, 237, 242) !important;\n}\n"],"mappings":"AAAA,CAAC;AACG,WAAS;AACb;AAEA,CAAC;AACG,UAAQ;AACR,WAAS;AACb;AAEA,CAAC;AACG,gBAAc,IAAI,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE;AAC1C;","names":[]}
@@ -0,0 +1,106 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import { isEmpty, slice } from 'lodash';
3
+ import { useCustomPivotTableEngine } from '../../state/engine.js';
4
+ import { TableBody, DataTableRow, DataTableCell } from '@dhis2/ui';
5
+ import { Fragment as Fragment$1 } from 'react';
6
+ import classes from './TableBody.module.css';
7
+ import { useElementSize } from 'usehooks-ts';
8
+
9
+ function DataRowRenderer({
10
+ mapper,
11
+ item,
12
+ dimension
13
+ }) {
14
+ const engine = useCustomPivotTableEngine();
15
+ const columnMappers = engine?.columnMap;
16
+ const completeMapper = columnMappers?.map((map) => ({
17
+ ...map,
18
+ ...mapper,
19
+ [dimension]: item.uid
20
+ }));
21
+ return /* @__PURE__ */ jsx(Fragment, { children: completeMapper?.map((mapper2) => /* @__PURE__ */ jsx(
22
+ DataTableCell,
23
+ {
24
+ align: "center",
25
+ bordered: true,
26
+ children: engine?.getValue(mapper2) ?? ""
27
+ },
28
+ `${Object.values(mapper2).join("-")}-value`
29
+ )) });
30
+ }
31
+ function RowRenderer({
32
+ row,
33
+ index,
34
+ config: { rows, columns, mapper, prevWidth, fixRowHeaders }
35
+ }) {
36
+ const [cellRef, { width }] = useElementSize();
37
+ const rowSpan = slice(rows, index + 1).reduce((acc, column) => {
38
+ return acc * (column.items?.length ?? 1);
39
+ }, 1);
40
+ const hasSubRows = !isEmpty(rows[index + 1]);
41
+ const nextRow = rows[index + 1];
42
+ return /* @__PURE__ */ jsx(Fragment, { children: row?.items?.map((item) => {
43
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
44
+ /* @__PURE__ */ jsxs(DataTableRow, { children: [
45
+ /* @__PURE__ */ jsx(
46
+ DataTableCell,
47
+ {
48
+ ref: cellRef,
49
+ fixed: fixRowHeaders,
50
+ left: `${prevWidth}px`,
51
+ className: classes["header-cell"],
52
+ tag: "th",
53
+ bordered: true,
54
+ rowSpan: (rowSpan + (hasSubRows ? 1 : 0)).toString(),
55
+ children: item.name
56
+ }
57
+ ),
58
+ !hasSubRows ? /* @__PURE__ */ jsx(
59
+ DataRowRenderer,
60
+ {
61
+ dimension: row.dimension,
62
+ mapper,
63
+ item
64
+ }
65
+ ) : null
66
+ ] }, `${item.name}-${row.dimension}-row`),
67
+ hasSubRows ? /* @__PURE__ */ jsx(
68
+ RowRenderer,
69
+ {
70
+ row: nextRow,
71
+ index: index + 1,
72
+ config: {
73
+ rows,
74
+ columns,
75
+ prevWidth: width,
76
+ mapper: {
77
+ ...mapper,
78
+ [row.dimension]: item.uid
79
+ }
80
+ }
81
+ }
82
+ ) : null
83
+ ] }, `${item.name}-${row.dimension}-fragment`);
84
+ }) });
85
+ }
86
+ function CustomPivotTableBody() {
87
+ const engine = useCustomPivotTableEngine();
88
+ const rows = engine?.rowHeaders;
89
+ const columns = engine?.columnHeaders;
90
+ const fixRowHeaders = engine?.fixRowHeaders;
91
+ if (!rows || isEmpty(rows)) {
92
+ return null;
93
+ }
94
+ return /* @__PURE__ */ jsx(TableBody, { children: /* @__PURE__ */ jsx(
95
+ RowRenderer,
96
+ {
97
+ row: rows[0],
98
+ index: 0,
99
+ config: { rows, columns, fixRowHeaders }
100
+ }
101
+ ) });
102
+ }
103
+
104
+ export { CustomPivotTableBody };
105
+ //# sourceMappingURL=out.js.map
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["Fragment","mapper"],"mappings":"AA4BE,mBAEE,KAwCE,YA1CJ;AA3BF,SAAS,SAAS,aAAa;AAC/B,SAAS,iCAAiC;AAC1C,SAAS,eAAe,cAAc,iBAAiB;AACvD,SAAgB,YAAAA,iBAA2B;AAE3C,OAAO,aAAa;AACpB,SAAS,sBAAsB;AAG/B,SAAS,gBAAgB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,QAAM,SAAS,0BAA0B;AAEzC,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,iBAAiB,eAAe,IAAI,CAAC,SAAS;AAAA,IACnD,GAAG;AAAA,IACH,GAAG;AAAA,IACH,CAAC,SAAS,GAAG,KAAK;AAAA,EACnB,EAAE;AACF,SACC,gCACE,0BAAgB,IAAI,CAACC,YACrB;AAAA,IAAC;AAAA;AAAA,MAEA,OAAM;AAAA,MACN,UAAQ;AAAA,MAEP,kBAAQ,SAASA,OAAM,KAAK;AAAA;AAAA,IAJxB,GAAG,OAAO,OAAOA,OAAM,EAAE,KAAK,GAAG,CAAC;AAAA,EAKxC,CACA,GACF;AAEF;AAEA,SAAS,YAAY;AAAA,EACpB;AAAA,EACA;AAAA,EACA,QAAQ,EAAE,MAAM,SAAS,QAAQ,WAAW,cAAc;AAC3D,GAU8B;AAC7B,QAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,eAAe;AAE5C,QAAM,UAAU,MAAM,MAAM,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,WAAW;AAC9D,WAAO,OAAO,OAAO,OAAO,UAAU;AAAA,EACvC,GAAG,CAAC;AACJ,QAAM,aAAa,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AAC3C,QAAM,UAAU,KAAK,QAAQ,CAAC;AAE9B,SACC,gCACE,eAAK,OAAO,IAAI,CAAC,SAAS;AAC1B,WACC,qBAACD,WAAA,EACA;AAAA,2BAAC,gBACA;AAAA;AAAA,UAAC;AAAA;AAAA,YAGA,KAAK;AAAA,YACL,OAAO;AAAA,YACP,MAAM,GAAG,SAAS;AAAA,YAClB,WAAW,QAAQ,aAAa;AAAA,YAChC,KAAI;AAAA,YACJ,UAAQ;AAAA,YACR,UACC,WAAW,aAAa,IAAI,IAC3B,SAAS;AAAA,YAEV,eAAK;AAAA;AAAA,QACP;AAAA,QACC,CAAC,aACD;AAAA,UAAC;AAAA;AAAA,YACA,WAAW,IAAI;AAAA,YACf;AAAA,YACA;AAAA;AAAA,QACD,IACG;AAAA,WAtBc,GAAG,KAAK,IAAI,IAAI,IAAI,SAAS,MAuBhD;AAAA,MACC,aACA;AAAA,QAAC;AAAA;AAAA,UACA,KAAK;AAAA,UACL,OAAO,QAAQ;AAAA,UACf,QAAQ;AAAA,YACP;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,QAAQ;AAAA,cACP,GAAG;AAAA,cACH,CAAC,IAAI,SAAS,GACb,KAAK;AAAA,YACP;AAAA,UACD;AAAA;AAAA,MACD,IACG;AAAA,SAxCU,GAAG,KAAK,IAAI,IAAI,IAAI,SAAS,WAyC5C;AAAA,EAEF,CAAC,GACF;AAEF;AAEO,SAAS,uBAAuB;AACtC,QAAM,SAAS,0BAA0B;AACzC,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,QAAQ;AACxB,QAAM,gBAAgB,QAAQ;AAE9B,MAAI,CAAC,QAAQ,QAAQ,IAAI,GAAG;AAC3B,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,aACA;AAAA,IAAC;AAAA;AAAA,MACA,KAAK,KAAK,CAAC;AAAA,MACX,OAAO;AAAA,MACP,QAAQ,EAAE,MAAM,SAAS,cAAc;AAAA;AAAA,EACxC,GACD;AAEF","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { useElementSize } from \"usehooks-ts\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst [cellRef, { width }] = useElementSize();\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
@@ -0,0 +1,10 @@
1
+ .table-header {
2
+ border-right: 1px solid rgb(232, 237, 242);
3
+ }
4
+ .table-header:last-child {
5
+ border-right: none;
6
+ }
7
+ .table-header > span > span {
8
+ justify-content: center;
9
+ }
10
+ /*# sourceMappingURL=TableHeaders.module.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/TableHeaders.module.css"],"sourcesContent":[".table-header{\n border-right: 1px solid rgb(232, 237, 242);\n}\n.table-header:last-child{\n border-right: none;\n}\n\n.table-header > span > span{\n justify-content: center;\n}\n"],"mappings":"AAAA,CAAC;AACG,gBAAc,IAAI,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE;AAC1C;AACA,CAHC,YAGY;AACT,gBAAc;AAClB;AAEA,CAPC,aAOa,EAAE,KAAK,EAAE;AACnB,mBAAiB;AACrB;","names":[]}
@@ -0,0 +1,94 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { useCustomPivotTableEngine } from '../../state/engine.js';
3
+ import { TableHead, DataTableRow, DataTableColumnHeader } from '@dhis2/ui';
4
+ import { isEmpty, slice, times } from 'lodash';
5
+ import classes from './TableHeaders.module.css';
6
+ import { useElementSize } from 'usehooks-ts';
7
+
8
+ function ColumnRenderer({
9
+ column,
10
+ index,
11
+ config: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns }
12
+ }) {
13
+ const [columnHeaderRef, { height }] = useElementSize();
14
+ if (!column) {
15
+ return null;
16
+ }
17
+ const colSpan = slice(columns, index + 1).reduce((acc, column2) => {
18
+ return acc * (column2.items?.length ?? 1);
19
+ }, 1);
20
+ const hasSubColumns = !isEmpty(columns[index + 1]);
21
+ const nextColumn = columns[index + 1];
22
+ const multiplicationFactor = slice(columns, 0, index).reduce(
23
+ (acc, column2) => {
24
+ return acc * (column2.items?.length ?? 1);
25
+ },
26
+ 1
27
+ );
28
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
29
+ /* @__PURE__ */ jsxs(DataTableRow, { children: [
30
+ index === 0 && rowHeaders?.map((header) => {
31
+ return /* @__PURE__ */ jsx(
32
+ DataTableColumnHeader,
33
+ {
34
+ fixed: fixColumnHeaders,
35
+ top: "0",
36
+ className: classes["table-header"],
37
+ rowSpan: columns.length.toString(),
38
+ children: header.label ?? ""
39
+ },
40
+ `${header.dimension}-header-column`
41
+ );
42
+ }),
43
+ times(multiplicationFactor, (colNo) => {
44
+ return column.items?.map((item) => /* @__PURE__ */ jsx(
45
+ DataTableColumnHeader,
46
+ {
47
+ fixed: fixColumnHeaders,
48
+ top: `${prevHeight.toString()}px`,
49
+ ref: index === 0 ? columnHeaderRef : void 0,
50
+ className: classes["table-header"],
51
+ align: "center",
52
+ colSpan: colSpan.toString(),
53
+ children: item.name
54
+ },
55
+ `${colNo}-${item.name}-column-header`
56
+ ));
57
+ })
58
+ ] }),
59
+ hasSubColumns ? /* @__PURE__ */ jsx(
60
+ ColumnRenderer,
61
+ {
62
+ column: nextColumn,
63
+ index: index + 1,
64
+ config: {
65
+ columns,
66
+ rowHeaders,
67
+ prevHeight: height,
68
+ fixColumnHeaders
69
+ }
70
+ }
71
+ ) : null
72
+ ] });
73
+ }
74
+ function TableHeaders() {
75
+ const engine = useCustomPivotTableEngine();
76
+ const columns = engine?.columnHeaders;
77
+ const rowHeaders = engine?.rowHeaders;
78
+ const fixColumnHeaders = engine?.fixColumnHeaders;
79
+ if (!columns || isEmpty(columns)) {
80
+ return null;
81
+ }
82
+ return /* @__PURE__ */ jsx(TableHead, { children: /* @__PURE__ */ jsx(
83
+ ColumnRenderer,
84
+ {
85
+ column: columns[0],
86
+ index: 0,
87
+ config: { rowHeaders, columns, fixColumnHeaders }
88
+ }
89
+ ) });
90
+ }
91
+
92
+ export { TableHeaders };
93
+ //# sourceMappingURL=out.js.map
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"AA0CE,mBAKK,KAJJ,YADD;AAzCF,SAAS,iCAAiC;AAC1C,SAAS,uBAAuB,cAAc,iBAAiB;AAC/D,SAAS,SAAS,OAAO,aAAa;AAEtC,OAAO,aAAa;AACpB,SAAS,sBAAsB;AAE/B,SAAS,eAAe;AAAA,EACvB;AAAA,EACA;AAAA,EACA,QAAQ,EAAE,kBAAkB,YAAY,aAAa,GAAG,QAAQ;AACjE,GAS8B;AAC7B,QAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,IAAI,eAAe;AAErD,MAAI,CAAC,QAAQ;AACZ,WAAO;AAAA,EACR;AACA,QAAM,UAAU,MAAM,SAAS,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAKA,YAAW;AACjE,WAAO,OAAOA,QAAO,OAAO,UAAU;AAAA,EACvC,GAAG,CAAC;AAEJ,QAAM,gBAAgB,CAAC,QAAQ,QAAQ,QAAQ,CAAC,CAAC;AACjD,QAAM,aAAa,QAAQ,QAAQ,CAAC;AAEpC,QAAM,uBAAuB,MAAM,SAAS,GAAG,KAAK,EAAE;AAAA,IACrD,CAAC,KAAKA,YAAW;AAChB,aAAO,OAAOA,QAAO,OAAO,UAAU;AAAA,IACvC;AAAA,IACA;AAAA,EACD;AAEA,SACC,iCACC;AAAA,yBAAC,gBACC;AAAA,gBAAU,KACV,YAAY,IAAI,CAAC,WAAW;AAC3B,eACC;AAAA,UAAC;AAAA;AAAA,YACA,OAAO;AAAA,YAGP,KAAK;AAAA,YACL,WAAW,QAAQ,cAAc;AAAA,YACjC,SAAS,QAAQ,OAAO,SAAS;AAAA,YAGhC,iBAAO,SAAS;AAAA;AAAA,UAFZ,GAAG,OAAO,SAAS;AAAA,QAGzB;AAAA,MAEF,CAAC;AAAA,MACD,MAAM,sBAAsB,CAAC,UAAU;AACvC,eAAO,OAAO,OAAO,IAAI,CAAC,SACzB;AAAA,UAAC;AAAA;AAAA,YACA,OAAO;AAAA,YAGP,KAAK,GAAG,WAAW,SAAS,CAAC;AAAA,YAC7B,KAAK,UAAU,IAAI,kBAAkB;AAAA,YACrC,WAAW,QAAQ,cAAc;AAAA,YACjC,OAAM;AAAA,YACN,SAAS,QAAQ,SAAS;AAAA,YAGzB,eAAK;AAAA;AAAA,UAFD,GAAG,KAAK,IAAI,KAAK,IAAI;AAAA,QAG3B,CACA;AAAA,MACF,CAAC;AAAA,OACF;AAAA,IACC,gBACA;AAAA,MAAC;AAAA;AAAA,QACA,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf,QAAQ;AAAA,UACP;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,QACD;AAAA;AAAA,IACD,IACG;AAAA,KACL;AAEF;AAEO,SAAS,eAAe;AAC9B,QAAM,SAAS,0BAA0B;AACzC,QAAM,UAAU,QAAQ;AACxB,QAAM,aAAa,QAAQ;AAC3B,QAAM,mBAAmB,QAAQ;AAEjC,MAAI,CAAC,WAAW,QAAQ,OAAO,GAAG;AACjC,WAAO;AAAA,EACR;AAEA,SACC,oBAAC,aACA;AAAA,IAAC;AAAA;AAAA,MACA,QAAQ,QAAQ,CAAC;AAAA,MACjB,OAAO;AAAA,MACP,QAAQ,EAAE,YAAY,SAAS,iBAAiB;AAAA;AAAA,EACjD,GACD;AAEF","sourcesContent":["import React from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useElementSize } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst [columnHeaderRef, { height }] = useElementSize();\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? columnHeaderRef : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export * from './DHIS2PivotTable.js';
2
+ export * from './interfaces/index.js';
3
+ //# sourceMappingURL=out.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DHIS2PivotTable/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc","sourcesContent":["export * from \"./DHIS2PivotTable.js\";\nexport * from \"./interfaces/index.js\";\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ import { findIndex, intersection, compact, times, zip } from 'lodash';
2
+
3
+ class DHIS2PivotTableEngine {
4
+ constructor({
5
+ analytics,
6
+ config
7
+ }) {
8
+ this.config = config;
9
+ this.analyticsData = analytics;
10
+ this.valueIndex = findIndex(this.analyticsData.headers, [
11
+ "name",
12
+ "value"
13
+ ]);
14
+ this.getHeaders();
15
+ this.getColumnMap();
16
+ }
17
+ get fixColumnHeaders() {
18
+ return this.config.options?.fixColumnHeaders ?? true;
19
+ }
20
+ get fixRowHeaders() {
21
+ return this.config.options?.fixRowHeaders ?? true;
22
+ }
23
+ getDimensionItems(dimension) {
24
+ return this.analyticsData.metaData?.dimensions[dimension] ?? [];
25
+ }
26
+ getItem(id) {
27
+ return this.analyticsData.metaData?.items[id];
28
+ }
29
+ getValue(mapper) {
30
+ const dimensions = Object.values(mapper);
31
+ const data = this.analyticsData.rows?.filter(
32
+ (row) => intersection(row, dimensions).length >= dimensions.length
33
+ );
34
+ return data?.reduce((acc, row) => {
35
+ return acc + parseFloat(row[this.valueIndex]);
36
+ }, 0);
37
+ }
38
+ getHeaders() {
39
+ this.rowHeaders = this.config.layout.rows.map((rowConfig) => {
40
+ return {
41
+ ...rowConfig,
42
+ items: compact(
43
+ this.getDimensionItems(rowConfig.dimension).map(
44
+ (itemId) => this.getItem(itemId)
45
+ )
46
+ )
47
+ };
48
+ });
49
+ this.columnHeaders = this.config.layout.columns.map((columnConfig) => {
50
+ return {
51
+ ...columnConfig,
52
+ items: compact(
53
+ this.getDimensionItems(columnConfig.dimension).map(
54
+ (itemId) => this.getItem(itemId)
55
+ )
56
+ )
57
+ };
58
+ });
59
+ }
60
+ getColumnMap() {
61
+ const columns = this.columnHeaders;
62
+ const sanitizedColumns = compact(
63
+ columns?.map(
64
+ (column) => column.items?.map((item) => ({
65
+ [column.dimension]: item.uid
66
+ }))
67
+ )
68
+ ) ?? [];
69
+ const size = sanitizedColumns.reduce((acc, items) => {
70
+ return acc * (items?.length ?? 1);
71
+ }, 1);
72
+ const standardiseColumns = sanitizedColumns.map((items) => [
73
+ ...times(size / items.length, () => items).flat()
74
+ ]);
75
+ this.columnMap = compact(
76
+ zip(...standardiseColumns).map(
77
+ (arr) => arr.reduce((obj, value) => {
78
+ return { ...obj, ...value };
79
+ })
80
+ )
81
+ );
82
+ }
83
+ }
84
+
85
+ export { DHIS2PivotTableEngine };
86
+ //# sourceMappingURL=out.js.map
87
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/services/engine.ts"],"names":[],"mappings":"AACA,SAAS,SAAS,WAAW,cAAc,OAAO,WAAW;AA6BtD,MAAM,sBAAsB;AAAA,EASlC,YAAY;AAAA,IACX;AAAA,IACA;AAAA,EACD,GAGG;AACF,SAAK,SAAS;AACd,SAAK,gBAAgB;AACrB,SAAK,aAAa,UAAU,KAAK,cAAc,SAAS;AAAA,MACvD;AAAA,MACA;AAAA,IACD,CAAC;AACD,SAAK,WAAW;AAChB,SAAK,aAAa;AAAA,EACnB;AAAA,EAEA,IAAI,mBAAmB;AACtB,WAAO,KAAK,OAAO,SAAS,oBAAoB;AAAA,EACjD;AAAA,EAEA,IAAI,gBAAgB;AACnB,WAAO,KAAK,OAAO,SAAS,iBAAiB;AAAA,EAC9C;AAAA,EAEA,kBAAkB,WAA2B;AAC5C,WAAO,KAAK,cAAc,UAAU,WAAW,SAAS,KAAK,CAAC;AAAA,EAC/D;AAAA,EAEA,QAAQ,IAAY;AACnB,WAAO,KAAK,cAAc,UAAU,MAAM,EAAS;AAAA,EACpD;AAAA,EAEA,SAAS,QAAgC;AACxC,UAAM,aAAa,OAAO,OAAO,MAAM;AACvC,UAAM,OAAO,KAAK,cAAc,MAAM;AAAA,MACrC,CAAC,QAAQ,aAAa,KAAK,UAAU,EAAE,UAAU,WAAW;AAAA,IAC7D;AACA,WAAO,MAAM,OAAO,CAAC,KAAK,QAAQ;AACjC,aAAO,MAAM,WAAW,IAAI,KAAK,UAAU,CAAC;AAAA,IAC7C,GAAG,CAAC;AAAA,EACL;AAAA,EAEA,aAAa;AACZ,SAAK,aAAa,KAAK,OAAO,OAAO,KAAK,IAAI,CAAC,cAAc;AAC5D,aAAO;AAAA,QACN,GAAG;AAAA,QACH,OAAO;AAAA,UACN,KAAK,kBAAkB,UAAU,SAAS,EAAE;AAAA,YAC3C,CAAC,WAAmB,KAAK,QAAQ,MAAM;AAAA,UACxC;AAAA,QACD;AAAA,MACD;AAAA,IACD,CAAC;AACD,SAAK,gBAAgB,KAAK,OAAO,OAAO,QAAQ,IAAI,CAAC,iBAAiB;AACrE,aAAO;AAAA,QACN,GAAG;AAAA,QACH,OAAO;AAAA,UACN,KAAK,kBAAkB,aAAa,SAAS,EAAE;AAAA,YAC9C,CAAC,WAAmB,KAAK,QAAQ,MAAM;AAAA,UACxC;AAAA,QACD;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,eAAe;AACd,UAAM,UAAU,KAAK;AACrB,UAAM,mBACL;AAAA,MACC,SAAS;AAAA,QACR,CAAC,WACA,OAAO,OAAO,IAAI,CAAC,UAAU;AAAA,UAC5B,CAAC,OAAO,SAAS,GAAG,KAAK;AAAA,QAC1B,EAAE;AAAA,MACJ;AAAA,IACD,KAAK,CAAC;AACP,UAAM,OAAO,iBAAiB,OAAO,CAAC,KAAK,UAAU;AACpD,aAAO,OAAO,OAAO,UAAU;AAAA,IAChC,GAAG,CAAC;AACJ,UAAM,qBAAqB,iBAAiB,IAAI,CAAC,UAAU;AAAA,MAC1D,GAAG,MAAM,OAAO,MAAM,QAAQ,MAAM,KAAK,EAAE,KAAK;AAAA,IACjD,CAAC;AACD,SAAK,YAAY;AAAA,MAChB,IAAI,GAAG,kBAAkB,EAAE;AAAA,QAAI,CAAC,QAC/B,IAAI,OAAO,CAAC,KAAK,UAAU;AAC1B,iBAAO,EAAE,GAAG,KAAK,GAAG,MAAM;AAAA,QAC3B,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD","sourcesContent":["import { Analytics, AnalyticsItem, LegendSet } from \"@hisptz/dhis2-utils\";\nimport { compact, findIndex, intersection, times, zip } from \"lodash\";\nimport { DHIS2Dimension } from \"../interfaces/index.js\";\n\nexport interface EngineConfig {\n\tlayout: {\n\t\tcolumns: { dimension: DHIS2Dimension; label?: string }[];\n\t\trows: { dimension: DHIS2Dimension; label?: string }[];\n\t\tfilter?: { dimension: DHIS2Dimension; label?: string }[];\n\t};\n\toptions?: {\n\t\tlegendSets?: LegendSet[];\n\t\thideEmptyColumns?: boolean;\n\t\thideEmptyRows?: boolean;\n\t\tshowRowTotals?: boolean;\n\t\tshowColumnTotals?: boolean;\n\t\tshowRowSubtotals?: boolean;\n\t\tshowColumnSubtotals?: boolean;\n\t\tfixColumnHeaders?: boolean;\n\t\tfixRowHeaders?: boolean;\n\t\t[key: string]: any;\n\t};\n}\n\nexport interface Header {\n\tdimension: DHIS2Dimension;\n\tlabel?: string;\n\titems?: AnalyticsItem[];\n}\n\nexport class DHIS2PivotTableEngine {\n\tanalyticsData: Analytics;\n\tvalueIndex: number;\n\tconfig: EngineConfig;\n\trowHeaders?: Header[];\n\tcolumnHeaders?: Header[];\n\n\tcolumnMap?: { [key: string]: any }[];\n\n\tconstructor({\n\t\tanalytics,\n\t\tconfig,\n\t}: {\n\t\tanalytics: Analytics;\n\t\tconfig: EngineConfig;\n\t}) {\n\t\tthis.config = config;\n\t\tthis.analyticsData = analytics;\n\t\tthis.valueIndex = findIndex(this.analyticsData.headers, [\n\t\t\t\"name\",\n\t\t\t\"value\",\n\t\t]);\n\t\tthis.getHeaders();\n\t\tthis.getColumnMap();\n\t}\n\n\tget fixColumnHeaders() {\n\t\treturn this.config.options?.fixColumnHeaders ?? true;\n\t}\n\n\tget fixRowHeaders() {\n\t\treturn this.config.options?.fixRowHeaders ?? true;\n\t}\n\n\tgetDimensionItems(dimension: DHIS2Dimension) {\n\t\treturn this.analyticsData.metaData?.dimensions[dimension] ?? [];\n\t}\n\n\tgetItem(id: string) {\n\t\treturn this.analyticsData.metaData?.items[id as any];\n\t}\n\n\tgetValue(mapper: { [key: string]: any }) {\n\t\tconst dimensions = Object.values(mapper);\n\t\tconst data = this.analyticsData.rows?.filter(\n\t\t\t(row) => intersection(row, dimensions).length >= dimensions.length,\n\t\t);\n\t\treturn data?.reduce((acc, row) => {\n\t\t\treturn acc + parseFloat(row[this.valueIndex]);\n\t\t}, 0);\n\t}\n\n\tgetHeaders() {\n\t\tthis.rowHeaders = this.config.layout.rows.map((rowConfig) => {\n\t\t\treturn {\n\t\t\t\t...rowConfig,\n\t\t\t\titems: compact(\n\t\t\t\t\tthis.getDimensionItems(rowConfig.dimension).map(\n\t\t\t\t\t\t(itemId: string) => this.getItem(itemId),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\t\tthis.columnHeaders = this.config.layout.columns.map((columnConfig) => {\n\t\t\treturn {\n\t\t\t\t...columnConfig,\n\t\t\t\titems: compact(\n\t\t\t\t\tthis.getDimensionItems(columnConfig.dimension).map(\n\t\t\t\t\t\t(itemId: string) => this.getItem(itemId),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t});\n\t}\n\n\tgetColumnMap() {\n\t\tconst columns = this.columnHeaders;\n\t\tconst sanitizedColumns =\n\t\t\tcompact(\n\t\t\t\tcolumns?.map(\n\t\t\t\t\t(column) =>\n\t\t\t\t\t\tcolumn.items?.map((item) => ({\n\t\t\t\t\t\t\t[column.dimension]: item.uid,\n\t\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t) ?? [];\n\t\tconst size = sanitizedColumns.reduce((acc, items) => {\n\t\t\treturn acc * (items?.length ?? 1);\n\t\t}, 1);\n\t\tconst standardiseColumns = sanitizedColumns.map((items) => [\n\t\t\t...times(size / items.length, () => items).flat(),\n\t\t]);\n\t\tthis.columnMap = compact(\n\t\t\tzip(...standardiseColumns).map((arr) =>\n\t\t\t\tarr.reduce((obj, value) => {\n\t\t\t\t\treturn { ...obj, ...value };\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\t}\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createContext, useContext } from 'react';
3
+
4
+ const DHIS2PivotTableEngineContext = createContext(null);
5
+ function useCustomPivotTableEngine() {
6
+ return useContext(DHIS2PivotTableEngineContext);
7
+ }
8
+ function DHIS2PivotTableEngineProvider({
9
+ children,
10
+ engine
11
+ }) {
12
+ return /* @__PURE__ */ jsx(DHIS2PivotTableEngineContext.Provider, { value: engine, children });
13
+ }
14
+
15
+ export { DHIS2PivotTableEngineProvider, useCustomPivotTableEngine };
16
+ //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/state/engine.tsx"],"names":[],"mappings":"AAkBE;AAlBF,SAAgB,eAA0B,kBAAkB;AAG5D,MAAM,+BACL,cAA4C,IAAI;AAE1C,SAAS,4BAA4B;AAC3C,SAAO,WAAW,4BAA4B;AAC/C;AAEO,SAAS,8BAA8B;AAAA,EAC7C;AAAA,EACA;AACD,GAGG;AACF,SACC,oBAAC,6BAA6B,UAA7B,EAAsC,OAAO,QAC5C,UACF;AAEF","sourcesContent":["import React, { createContext, ReactNode, useContext } from \"react\";\nimport { DHIS2PivotTableEngine } from \"../services/engine.js\";\n\nconst DHIS2PivotTableEngineContext =\n\tcreateContext<DHIS2PivotTableEngine | null>(null);\n\nexport function useCustomPivotTableEngine() {\n\treturn useContext(DHIS2PivotTableEngineContext);\n}\n\nexport function DHIS2PivotTableEngineProvider({\n\tchildren,\n\tengine,\n}: {\n\tchildren: ReactNode;\n\tengine: DHIS2PivotTableEngine;\n}) {\n\treturn (\n\t\t<DHIS2PivotTableEngineContext.Provider value={engine}>\n\t\t\t{children}\n\t\t</DHIS2PivotTableEngineContext.Provider>\n\t);\n}\n"]}
@@ -0,0 +1,65 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import MapArea from './components/MapArea/index.js';
4
+ import { MapProvider } from './components/MapProvider/index.js';
5
+ import 'leaflet/dist/leaflet.css';
6
+ import { QueryClient, QueryClientProvider } from 'react-query';
7
+
8
+ const queryClient = new QueryClient();
9
+ const MapComponent = ({
10
+ orgUnitSelection,
11
+ pointLayer,
12
+ boundaryLayer,
13
+ thematicLayers,
14
+ earthEngineLayers,
15
+ periodSelection,
16
+ mapOptions,
17
+ key,
18
+ controls,
19
+ legends
20
+ }, ref) => {
21
+ const sanitizedPointLayers = [
22
+ {
23
+ type: "point",
24
+ id: "point",
25
+ enabled: pointLayer?.enabled ?? false,
26
+ ...pointLayer
27
+ }
28
+ ];
29
+ const sanitizedBoundaryLayers = [
30
+ {
31
+ type: "overlay",
32
+ id: "boundary",
33
+ enabled: boundaryLayer?.enabled ?? false
34
+ }
35
+ ];
36
+ return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(
37
+ MapProvider,
38
+ {
39
+ periodSelection,
40
+ orgUnitSelection,
41
+ children: /* @__PURE__ */ jsx(
42
+ MapArea,
43
+ {
44
+ layers: {
45
+ thematicLayers,
46
+ earthEngineLayers,
47
+ boundaryLayers: sanitizedBoundaryLayers,
48
+ pointLayers: sanitizedPointLayers
49
+ },
50
+ legends,
51
+ controls,
52
+ ref,
53
+ mapOptions
54
+ },
55
+ key
56
+ )
57
+ }
58
+ ) });
59
+ };
60
+ const DHIS2Map = forwardRef(MapComponent);
61
+ const Map = DHIS2Map;
62
+
63
+ export { DHIS2Map, Map };
64
+ //# sourceMappingURL=out.js.map
65
+ //# sourceMappingURL=DHIS2Map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAmDI;AAlDJ,SAAgB,kBAAkB;AAClC,OAAO,aAAa;AAKpB,SAAS,mBAAmB;AAE5B,OAAO;AACP,SAAS,aAAa,2BAA2B;AAEjD,MAAM,cAAc,IAAI,YAAY;AAEpC,MAAM,eAAe,CACpB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GACA,QACI;AACJ,QAAM,uBAA2C;AAAA,IAChD;AAAA,MACC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,SAAS,YAAY,WAAW;AAAA,MAChC,GAAG;AAAA,IACJ;AAAA,EACD;AACA,QAAM,0BAAiD;AAAA,IACtD;AAAA,MACC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,SAAS,eAAe,WAAW;AAAA,IACpC;AAAA,EACD;AAEA,SACC,oBAAC,uBAAoB,QAAQ,aAC5B;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACA,QAAQ;AAAA,YACP;AAAA,YACA;AAAA,YACA,gBAAgB;AAAA,YAChB,aAAa;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,QAFK;AAAA,MAGN;AAAA;AAAA,EACD,GACD;AAEF;AACO,MAAM,WAA+B,WAAW,YAAY;AAK5D,MAAM,MAAM","sourcesContent":["import { Map as LeafletMap } from \"leaflet\";\nimport React, { forwardRef } from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider/index.js\";\nimport { MapProps } from \"./interfaces/index.js\";\nimport \"leaflet/dist/leaflet.css\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nconst MapComponent = (\n\t{\n\t\torgUnitSelection,\n\t\tpointLayer,\n\t\tboundaryLayer,\n\t\tthematicLayers,\n\t\tearthEngineLayers,\n\t\tperiodSelection,\n\t\tmapOptions,\n\t\tkey,\n\t\tcontrols,\n\t\tlegends,\n\t}: MapProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<MapProvider\n\t\t\t\tperiodSelection={periodSelection}\n\t\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\t>\n\t\t\t\t<MapArea\n\t\t\t\t\tlayers={{\n\t\t\t\t\t\tthematicLayers,\n\t\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t\t}}\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tmapOptions={mapOptions}\n\t\t\t\t/>\n\t\t\t</MapProvider>\n\t\t</QueryClientProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = forwardRef(MapComponent);\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}