@hisptz/dhis2-analytics 1.0.11 → 1.0.13

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 (239) hide show
  1. package/build/cjs/components/CustomPivotTable/CustomPivotTable.stories.js +69 -0
  2. package/build/cjs/components/CustomPivotTable/components/Table/index.js +16 -0
  3. package/build/cjs/components/CustomPivotTable/components/TableBody/TableBody.module.css +12 -0
  4. package/build/cjs/components/CustomPivotTable/components/TableBody/index.js +109 -0
  5. package/build/cjs/components/CustomPivotTable/components/TableHeaders/TableHeaders.module.css +10 -0
  6. package/build/cjs/components/CustomPivotTable/components/TableHeaders/index.js +89 -0
  7. package/build/cjs/components/CustomPivotTable/index.js +30 -0
  8. package/build/cjs/components/{PivotTable → CustomPivotTable}/interfaces/index.js +0 -0
  9. package/build/cjs/components/CustomPivotTable/services/engine.js +89 -0
  10. package/build/cjs/components/{PivotTable/components/PivotTableEngineContext.js → CustomPivotTable/state/engine.js} +11 -13
  11. package/build/cjs/dataProviders/map.js +1 -1
  12. package/build/cjs/index.js +4 -4
  13. package/build/cjs/locales/en/translations.json +0 -33
  14. package/build/es/components/CustomPivotTable/CustomPivotTable.stories.js +59 -0
  15. package/build/es/components/CustomPivotTable/components/Table/index.js +9 -0
  16. package/build/es/components/CustomPivotTable/components/TableBody/TableBody.module.css +12 -0
  17. package/build/es/components/CustomPivotTable/components/TableBody/index.js +100 -0
  18. package/build/es/components/CustomPivotTable/components/TableHeaders/TableHeaders.module.css +10 -0
  19. package/build/es/components/CustomPivotTable/components/TableHeaders/index.js +82 -0
  20. package/build/es/components/CustomPivotTable/index.js +22 -0
  21. package/build/es/components/{PivotTable → CustomPivotTable}/interfaces/index.js +0 -0
  22. package/build/es/components/CustomPivotTable/services/engine.js +82 -0
  23. package/build/es/components/CustomPivotTable/state/engine.js +14 -0
  24. package/build/es/dataProviders/map.js +1 -1
  25. package/build/es/index.js +1 -1
  26. package/build/es/locales/en/translations.json +0 -33
  27. package/build/types/{components → src/components}/ChartAnalytics/components/DownloadMenu/components/Menu.d.ts +0 -0
  28. package/build/types/{components → src/components}/ChartAnalytics/components/DownloadMenu/constants/menu.d.ts +0 -0
  29. package/build/types/{components → src/components}/ChartAnalytics/components/DownloadMenu/index.d.ts +0 -0
  30. package/build/types/{components → src/components}/ChartAnalytics/components/DownloadMenu/interfaces/menu.d.ts +0 -0
  31. package/build/types/{components → src/components}/ChartAnalytics/hooks/useChart.d.ts +0 -0
  32. package/build/types/{components → src/components}/ChartAnalytics/index.d.ts +0 -0
  33. package/build/types/{components → src/components}/ChartAnalytics/models/column.d.ts +0 -0
  34. package/build/types/{components → src/components}/ChartAnalytics/models/index.d.ts +0 -0
  35. package/build/types/{components → src/components}/ChartAnalytics/models/line.d.ts +0 -0
  36. package/build/types/{components → src/components}/ChartAnalytics/models/multi-series.d.ts +0 -0
  37. package/build/types/{components → src/components}/ChartAnalytics/models/pie.d.ts +0 -0
  38. package/build/types/{components → src/components}/ChartAnalytics/services/export.d.ts +0 -0
  39. package/build/types/{components → src/components}/ChartAnalytics/types/props.d.ts +0 -0
  40. package/build/types/{components → src/components}/ChartAnalytics/utils/chart.d.ts +0 -0
  41. package/build/types/{components → src/components}/CircularProgressDashboard/index.d.ts +0 -0
  42. package/build/types/{components → src/components}/CircularProgressDashboard/types/props.d.ts +0 -0
  43. package/build/types/src/components/CustomPivotTable/components/Table/index.d.ts +11 -0
  44. package/build/types/src/components/CustomPivotTable/components/TableBody/index.d.ts +2 -0
  45. package/build/types/src/components/CustomPivotTable/components/TableHeaders/index.d.ts +2 -0
  46. package/build/types/{components/PivotTable → src/components/CustomPivotTable}/index.d.ts +19 -5
  47. package/build/types/src/components/CustomPivotTable/interfaces/index.d.ts +1 -0
  48. package/build/types/src/components/CustomPivotTable/services/engine.d.ts +58 -0
  49. package/build/types/src/components/CustomPivotTable/state/engine.d.ts +7 -0
  50. package/build/types/{components → src/components}/Map/components/EarthEngineLayerConfiguration/index.d.ts +0 -0
  51. package/build/types/{components → src/components}/Map/components/MapArea/index.d.ts +0 -0
  52. package/build/types/{components → src/components}/Map/components/MapArea/interfaces/index.d.ts +0 -0
  53. package/build/types/{components → src/components}/Map/components/MapControls/components/CustomControl/index.d.ts +0 -0
  54. package/build/types/{components → src/components}/Map/components/MapControls/components/DownloadControl/index.d.ts +0 -0
  55. package/build/types/{components → src/components}/Map/components/MapControls/components/FullscreenControl/index.d.ts +0 -0
  56. package/build/types/{components → src/components}/Map/components/MapControls/index.d.ts +0 -0
  57. package/build/types/{components → src/components}/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.d.ts +0 -0
  58. package/build/types/{components → src/components}/Map/components/MapLayer/components/BoundaryLayer/index.d.ts +0 -0
  59. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts +0 -0
  60. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.d.ts +0 -0
  61. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.d.ts +0 -0
  62. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/index.d.ts +0 -0
  63. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.d.ts +0 -0
  64. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/services/api.d.ts +0 -0
  65. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.d.ts +0 -0
  66. package/build/types/{components → src/components}/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.d.ts +0 -0
  67. package/build/types/{components → src/components}/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.d.ts +0 -0
  68. package/build/types/{components → src/components}/Map/components/MapLayer/components/LegendArea/index.d.ts +0 -0
  69. package/build/types/{components → src/components}/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts +0 -0
  70. package/build/types/{components → src/components}/Map/components/MapLayer/components/PointLayer/hooks/index.d.ts +0 -0
  71. package/build/types/{components → src/components}/Map/components/MapLayer/components/PointLayer/index.d.ts +0 -0
  72. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.d.ts +0 -0
  73. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts +0 -0
  74. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts +0 -0
  75. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.d.ts +0 -0
  76. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts +0 -0
  77. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.d.ts +0 -0
  78. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.d.ts +0 -0
  79. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/hooks/config.d.ts +0 -0
  80. package/build/types/{components → src/components}/Map/components/MapLayer/components/ThematicLayer/index.d.ts +0 -0
  81. package/build/types/{components → src/components}/Map/components/MapLayer/index.d.ts +0 -0
  82. package/build/types/{components → src/components}/Map/components/MapLayer/interfaces/index.d.ts +0 -0
  83. package/build/types/{components → src/components}/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts +0 -0
  84. package/build/types/{components → src/components}/Map/components/MapProvider/components/MapLayerProvider/index.d.ts +0 -0
  85. package/build/types/{components → src/components}/Map/components/MapProvider/hooks/index.d.ts +0 -0
  86. package/build/types/{components → src/components}/Map/components/MapProvider/index.d.ts +0 -0
  87. package/build/types/{components → src/components}/Map/components/MapUpdater/index.d.ts +0 -0
  88. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.d.ts +0 -0
  89. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.d.ts +0 -0
  90. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.d.ts +0 -0
  91. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.d.ts +0 -0
  92. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.d.ts +0 -0
  93. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.d.ts +0 -0
  94. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.d.ts +0 -0
  95. package/build/types/{components → src/components}/Map/components/ThematicLayerConfiguration/index.d.ts +0 -0
  96. package/build/types/{components → src/components}/Map/constants/colors.d.ts +0 -0
  97. package/build/types/{components → src/components}/Map/constants/legendSet.d.ts +0 -0
  98. package/build/types/{components → src/components}/Map/hooks/map.d.ts +0 -0
  99. package/build/types/{components → src/components}/Map/index.d.ts +0 -0
  100. package/build/types/{components → src/components}/Map/interfaces/index.d.ts +0 -0
  101. package/build/types/{components → src/components}/Map/state/index.d.ts +0 -0
  102. package/build/types/{components → src/components}/Map/utils/colors.d.ts +0 -0
  103. package/build/types/{components → src/components}/Map/utils/helpers.d.ts +0 -0
  104. package/build/types/{components → src/components}/Map/utils/map.d.ts +0 -0
  105. package/build/types/{components → src/components}/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts +0 -0
  106. package/build/types/{components → src/components}/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts +0 -0
  107. package/build/types/{components → src/components}/SingleValueContainer/index.d.ts +0 -0
  108. package/build/types/{components → src/components}/SingleValueContainer/types/props.d.ts +0 -0
  109. package/build/types/{dataProviders → src/dataProviders}/map.d.ts +0 -0
  110. package/build/types/{index.d.ts → src/index.d.ts} +1 -1
  111. package/package.json +4 -4
  112. package/build/cjs/components/PivotTable/PivotTable.stories.js +0 -277
  113. package/build/cjs/components/PivotTable/components/AssignedCategoriesIcon/index.js +0 -32
  114. package/build/cjs/components/PivotTable/components/PivotTable.js +0 -60
  115. package/build/cjs/components/PivotTable/components/PivotTableBody.js +0 -41
  116. package/build/cjs/components/PivotTable/components/PivotTableCell.js +0 -40
  117. package/build/cjs/components/PivotTable/components/PivotTableClippedAxis.js +0 -26
  118. package/build/cjs/components/PivotTable/components/PivotTableColumnHeaderCell.js +0 -71
  119. package/build/cjs/components/PivotTable/components/PivotTableColumnHeaders.js +0 -60
  120. package/build/cjs/components/PivotTable/components/PivotTableContainer.js +0 -33
  121. package/build/cjs/components/PivotTable/components/PivotTableDimensionLabelCell.js +0 -77
  122. package/build/cjs/components/PivotTable/components/PivotTableEmptyCell.js +0 -22
  123. package/build/cjs/components/PivotTable/components/PivotTableEmptyRow.js +0 -33
  124. package/build/cjs/components/PivotTable/components/PivotTableHead.js +0 -35
  125. package/build/cjs/components/PivotTable/components/PivotTableHeaderCell.js +0 -37
  126. package/build/cjs/components/PivotTable/components/PivotTableRow.js +0 -65
  127. package/build/cjs/components/PivotTable/components/PivotTableRowHeaderCell.js +0 -49
  128. package/build/cjs/components/PivotTable/components/PivotTableTitleRow.js +0 -52
  129. package/build/cjs/components/PivotTable/components/PivotTableTitleRows.js +0 -46
  130. package/build/cjs/components/PivotTable/components/PivotTableValueCell.js +0 -69
  131. package/build/cjs/components/PivotTable/constants/dataTypes.js +0 -129
  132. package/build/cjs/components/PivotTable/constants/pivotTable.js +0 -64
  133. package/build/cjs/components/PivotTable/constants/predefinedDimensions.js +0 -62
  134. package/build/cjs/components/PivotTable/constants/valueTypes.js +0 -55
  135. package/build/cjs/components/PivotTable/data/column-data.json +0 -210
  136. package/build/cjs/components/PivotTable/hooks/useParentSize.js +0 -41
  137. package/build/cjs/components/PivotTable/hooks/useScrollPosition.js +0 -38
  138. package/build/cjs/components/PivotTable/hooks/useSortableColumns.js +0 -34
  139. package/build/cjs/components/PivotTable/hooks/useTableClipping.js +0 -53
  140. package/build/cjs/components/PivotTable/index.js +0 -47
  141. package/build/cjs/components/PivotTable/services/adaptiveClippingController.js +0 -197
  142. package/build/cjs/components/PivotTable/services/engine.js +0 -901
  143. package/build/cjs/components/PivotTable/utils/getOuLevelAndGroupText.js +0 -71
  144. package/build/cjs/components/PivotTable/utils/index.js +0 -322
  145. package/build/cjs/components/PivotTable/utils/isColorBright.js +0 -29
  146. package/build/cjs/components/PivotTable/utils/layout/dimension.js +0 -61
  147. package/build/cjs/components/PivotTable/utils/layout/dimensionGetId.js +0 -12
  148. package/build/cjs/components/PivotTable/utils/layout/dimensionGetItems.js +0 -12
  149. package/build/cjs/components/PivotTable/utils/layout/dimensionIs.js +0 -9
  150. package/build/cjs/components/PivotTable/utils/layout/dimensionIsEmpty.js +0 -9
  151. package/build/cjs/components/PivotTable/utils/layout/dimensionIsValid.js +0 -25
  152. package/build/cjs/components/PivotTable/utils/legend.js +0 -40
  153. package/build/cjs/components/PivotTable/utils/ouIdHelper/index.js +0 -27
  154. package/build/cjs/data/map.json +0 -5984
  155. package/build/es/components/PivotTable/PivotTable.stories.js +0 -268
  156. package/build/es/components/PivotTable/components/AssignedCategoriesIcon/index.js +0 -24
  157. package/build/es/components/PivotTable/components/PivotTable.js +0 -51
  158. package/build/es/components/PivotTable/components/PivotTableBody.js +0 -33
  159. package/build/es/components/PivotTable/components/PivotTableCell.js +0 -32
  160. package/build/es/components/PivotTable/components/PivotTableClippedAxis.js +0 -18
  161. package/build/es/components/PivotTable/components/PivotTableColumnHeaderCell.js +0 -62
  162. package/build/es/components/PivotTable/components/PivotTableColumnHeaders.js +0 -52
  163. package/build/es/components/PivotTable/components/PivotTableContainer.js +0 -25
  164. package/build/es/components/PivotTable/components/PivotTableDimensionLabelCell.js +0 -68
  165. package/build/es/components/PivotTable/components/PivotTableEmptyCell.js +0 -14
  166. package/build/es/components/PivotTable/components/PivotTableEmptyRow.js +0 -25
  167. package/build/es/components/PivotTable/components/PivotTableEngineContext.js +0 -14
  168. package/build/es/components/PivotTable/components/PivotTableHead.js +0 -27
  169. package/build/es/components/PivotTable/components/PivotTableHeaderCell.js +0 -29
  170. package/build/es/components/PivotTable/components/PivotTableRow.js +0 -57
  171. package/build/es/components/PivotTable/components/PivotTableRowHeaderCell.js +0 -41
  172. package/build/es/components/PivotTable/components/PivotTableTitleRow.js +0 -42
  173. package/build/es/components/PivotTable/components/PivotTableTitleRows.js +0 -37
  174. package/build/es/components/PivotTable/components/PivotTableValueCell.js +0 -60
  175. package/build/es/components/PivotTable/constants/dataTypes.js +0 -98
  176. package/build/es/components/PivotTable/constants/pivotTable.js +0 -29
  177. package/build/es/components/PivotTable/constants/predefinedDimensions.js +0 -44
  178. package/build/es/components/PivotTable/constants/valueTypes.js +0 -27
  179. package/build/es/components/PivotTable/data/column-data.json +0 -210
  180. package/build/es/components/PivotTable/hooks/useParentSize.js +0 -33
  181. package/build/es/components/PivotTable/hooks/useScrollPosition.js +0 -30
  182. package/build/es/components/PivotTable/hooks/useSortableColumns.js +0 -27
  183. package/build/es/components/PivotTable/hooks/useTableClipping.js +0 -46
  184. package/build/es/components/PivotTable/index.js +0 -26
  185. package/build/es/components/PivotTable/services/adaptiveClippingController.js +0 -191
  186. package/build/es/components/PivotTable/services/engine.js +0 -894
  187. package/build/es/components/PivotTable/utils/getOuLevelAndGroupText.js +0 -63
  188. package/build/es/components/PivotTable/utils/index.js +0 -309
  189. package/build/es/components/PivotTable/utils/isColorBright.js +0 -22
  190. package/build/es/components/PivotTable/utils/layout/dimension.js +0 -48
  191. package/build/es/components/PivotTable/utils/layout/dimensionGetId.js +0 -5
  192. package/build/es/components/PivotTable/utils/layout/dimensionGetItems.js +0 -5
  193. package/build/es/components/PivotTable/utils/layout/dimensionIs.js +0 -2
  194. package/build/es/components/PivotTable/utils/layout/dimensionIsEmpty.js +0 -2
  195. package/build/es/components/PivotTable/utils/layout/dimensionIsValid.js +0 -18
  196. package/build/es/components/PivotTable/utils/legend.js +0 -27
  197. package/build/es/components/PivotTable/utils/ouIdHelper/index.js +0 -17
  198. package/build/es/data/map.json +0 -5984
  199. package/build/types/components/PivotTable/components/AssignedCategoriesIcon/index.d.ts +0 -3
  200. package/build/types/components/PivotTable/components/PivotTable.d.ts +0 -12
  201. package/build/types/components/PivotTable/components/PivotTableBody.d.ts +0 -7
  202. package/build/types/components/PivotTable/components/PivotTableCell.d.ts +0 -17
  203. package/build/types/components/PivotTable/components/PivotTableClippedAxis.d.ts +0 -7
  204. package/build/types/components/PivotTable/components/PivotTableColumnHeaderCell.d.ts +0 -13
  205. package/build/types/components/PivotTable/components/PivotTableColumnHeaders.d.ts +0 -11
  206. package/build/types/components/PivotTable/components/PivotTableContainer.d.ts +0 -8
  207. package/build/types/components/PivotTable/components/PivotTableDimensionLabelCell.d.ts +0 -13
  208. package/build/types/components/PivotTable/components/PivotTableEmptyCell.d.ts +0 -7
  209. package/build/types/components/PivotTable/components/PivotTableEmptyRow.d.ts +0 -5
  210. package/build/types/components/PivotTable/components/PivotTableEngineContext.d.ts +0 -8
  211. package/build/types/components/PivotTable/components/PivotTableHead.d.ts +0 -21
  212. package/build/types/components/PivotTable/components/PivotTableHeaderCell.d.ts +0 -22
  213. package/build/types/components/PivotTable/components/PivotTableRow.d.ts +0 -19
  214. package/build/types/components/PivotTable/components/PivotTableRowHeaderCell.d.ts +0 -8
  215. package/build/types/components/PivotTable/components/PivotTableTitleRow.d.ts +0 -21
  216. package/build/types/components/PivotTable/components/PivotTableTitleRows.d.ts +0 -12
  217. package/build/types/components/PivotTable/components/PivotTableValueCell.d.ts +0 -8
  218. package/build/types/components/PivotTable/constants/dataTypes.d.ts +0 -90
  219. package/build/types/components/PivotTable/constants/pivotTable.d.ts +0 -29
  220. package/build/types/components/PivotTable/constants/predefinedDimensions.d.ts +0 -80
  221. package/build/types/components/PivotTable/constants/valueTypes.d.ts +0 -22
  222. package/build/types/components/PivotTable/hooks/useParentSize.d.ts +0 -8
  223. package/build/types/components/PivotTable/hooks/useScrollPosition.d.ts +0 -5
  224. package/build/types/components/PivotTable/hooks/useSortableColumns.d.ts +0 -8
  225. package/build/types/components/PivotTable/hooks/useTableClipping.d.ts +0 -24
  226. package/build/types/components/PivotTable/interfaces/index.d.ts +0 -72
  227. package/build/types/components/PivotTable/services/adaptiveClippingController.d.ts +0 -44
  228. package/build/types/components/PivotTable/services/engine.d.ts +0 -252
  229. package/build/types/components/PivotTable/utils/getOuLevelAndGroupText.d.ts +0 -1
  230. package/build/types/components/PivotTable/utils/index.d.ts +0 -38
  231. package/build/types/components/PivotTable/utils/isColorBright.d.ts +0 -1
  232. package/build/types/components/PivotTable/utils/layout/dimension.d.ts +0 -35
  233. package/build/types/components/PivotTable/utils/layout/dimensionGetId.d.ts +0 -3
  234. package/build/types/components/PivotTable/utils/layout/dimensionGetItems.d.ts +0 -3
  235. package/build/types/components/PivotTable/utils/layout/dimensionIs.d.ts +0 -1
  236. package/build/types/components/PivotTable/utils/layout/dimensionIsEmpty.d.ts +0 -3
  237. package/build/types/components/PivotTable/utils/layout/dimensionIsValid.d.ts +0 -5
  238. package/build/types/components/PivotTable/utils/legend.d.ts +0 -11
  239. package/build/types/components/PivotTable/utils/ouIdHelper/index.d.ts +0 -10
@@ -0,0 +1,100 @@
1
+ import { isEmpty, slice } from "lodash";
2
+ import { useCustomPivotTableEngine } from "../../state/engine";
3
+ import { DataTableCell, DataTableRow, TableBody } from '@dhis2/ui';
4
+ import React, { Fragment } from "react";
5
+ import classes from "./TableBody.module.css";
6
+ import { useElementSize } from "usehooks-ts";
7
+ function DataRowRenderer(_ref) {
8
+ let {
9
+ mapper,
10
+ item,
11
+ dimension
12
+ } = _ref;
13
+ const engine = useCustomPivotTableEngine();
14
+ const columnMappers = engine === null || engine === void 0 ? void 0 : engine.columnMap;
15
+ const completeMapper = columnMappers === null || columnMappers === void 0 ? void 0 : columnMappers.map(map => ({
16
+ ...map,
17
+ ...mapper,
18
+ [dimension]: item.uid
19
+ }));
20
+ return /*#__PURE__*/React.createElement(React.Fragment, null, completeMapper === null || completeMapper === void 0 ? void 0 : completeMapper.map(mapper => {
21
+ var _engine$getValue;
22
+ return /*#__PURE__*/React.createElement(DataTableCell, {
23
+ key: `${Object.values(mapper).join('-')}-value`,
24
+ align: "center",
25
+ bordered: true
26
+ }, (_engine$getValue = engine === null || engine === void 0 ? void 0 : engine.getValue(mapper)) !== null && _engine$getValue !== void 0 ? _engine$getValue : '');
27
+ }));
28
+ }
29
+ function RowRenderer(_ref2) {
30
+ var _row$items;
31
+ let {
32
+ row,
33
+ index,
34
+ config: {
35
+ rows,
36
+ columns,
37
+ mapper,
38
+ prevWidth,
39
+ fixRowHeaders
40
+ }
41
+ } = _ref2;
42
+ const [cellRef, {
43
+ width
44
+ }] = useElementSize();
45
+ const rowSpan = slice(rows, index + 1).reduce((acc, column) => {
46
+ var _column$items$length, _column$items;
47
+ return acc * ((_column$items$length = (_column$items = column.items) === null || _column$items === void 0 ? void 0 : _column$items.length) !== null && _column$items$length !== void 0 ? _column$items$length : 1);
48
+ }, 1);
49
+ const hasSubRows = !isEmpty(rows[index + 1]);
50
+ const nextRow = rows[index + 1];
51
+ return /*#__PURE__*/React.createElement(React.Fragment, null, row === null || row === void 0 ? void 0 : (_row$items = row.items) === null || _row$items === void 0 ? void 0 : _row$items.map(item => {
52
+ return /*#__PURE__*/React.createElement(Fragment, {
53
+ key: `${item.name}-${row.dimension}-fragment`
54
+ }, /*#__PURE__*/React.createElement(DataTableRow, {
55
+ key: `${item.name}-${row.dimension}-row`
56
+ }, /*#__PURE__*/React.createElement(DataTableCell, {
57
+ ref: cellRef,
58
+ fixed: fixRowHeaders,
59
+ left: `${prevWidth}px`,
60
+ className: classes['header-cell'],
61
+ tag: "th",
62
+ bordered: true,
63
+ rowSpan: (rowSpan + (hasSubRows ? 1 : 0)).toString()
64
+ }, item.name), !hasSubRows ? /*#__PURE__*/React.createElement(DataRowRenderer, {
65
+ dimension: row.dimension,
66
+ mapper: mapper,
67
+ item: item
68
+ }) : null), hasSubRows ? /*#__PURE__*/React.createElement(RowRenderer, {
69
+ row: nextRow,
70
+ index: index + 1,
71
+ config: {
72
+ rows,
73
+ columns,
74
+ prevWidth: width,
75
+ mapper: {
76
+ ...mapper,
77
+ [row.dimension]: item.uid
78
+ }
79
+ }
80
+ }) : null);
81
+ }));
82
+ }
83
+ export function CustomPivotTableBody() {
84
+ const engine = useCustomPivotTableEngine();
85
+ const rows = engine === null || engine === void 0 ? void 0 : engine.rowHeaders;
86
+ const columns = engine === null || engine === void 0 ? void 0 : engine.columnHeaders;
87
+ const fixRowHeaders = engine === null || engine === void 0 ? void 0 : engine.fixRowHeaders;
88
+ if (!rows || isEmpty(rows)) {
89
+ return null;
90
+ }
91
+ return /*#__PURE__*/React.createElement(TableBody, null, /*#__PURE__*/React.createElement(RowRenderer, {
92
+ row: rows[0],
93
+ index: 0,
94
+ config: {
95
+ rows,
96
+ columns,
97
+ fixRowHeaders
98
+ }
99
+ }));
100
+ }
@@ -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
+
8
+ .table-header > span > span{
9
+ justify-content: center;
10
+ }
@@ -0,0 +1,82 @@
1
+ import React from "react";
2
+ import { useCustomPivotTableEngine } from "../../state/engine";
3
+ import { DataTableColumnHeader, DataTableRow, TableHead } from '@dhis2/ui';
4
+ import { isEmpty, slice, times } from "lodash";
5
+ import classes from "./TableHeaders.module.css";
6
+ import { useElementSize } from "usehooks-ts";
7
+ function ColumnRenderer(_ref) {
8
+ let {
9
+ column,
10
+ index,
11
+ config: {
12
+ fixColumnHeaders,
13
+ rowHeaders,
14
+ prevHeight = 0,
15
+ columns
16
+ }
17
+ } = _ref;
18
+ const [columnHeaderRef, {
19
+ height
20
+ }] = useElementSize();
21
+ if (!column) {
22
+ return null;
23
+ }
24
+ const colSpan = slice(columns, index + 1).reduce((acc, column) => {
25
+ var _column$items$length, _column$items;
26
+ return acc * ((_column$items$length = (_column$items = column.items) === null || _column$items === void 0 ? void 0 : _column$items.length) !== null && _column$items$length !== void 0 ? _column$items$length : 1);
27
+ }, 1);
28
+ const hasSubColumns = !isEmpty(columns[index + 1]);
29
+ const nextColumn = columns[index + 1];
30
+ const multiplicationFactor = slice(columns, 0, index).reduce((acc, column) => {
31
+ var _column$items$length2, _column$items2;
32
+ return acc * ((_column$items$length2 = (_column$items2 = column.items) === null || _column$items2 === void 0 ? void 0 : _column$items2.length) !== null && _column$items$length2 !== void 0 ? _column$items$length2 : 1);
33
+ }, 1);
34
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DataTableRow, null, index === 0 && (rowHeaders === null || rowHeaders === void 0 ? void 0 : rowHeaders.map(header => {
35
+ var _header$label;
36
+ return /*#__PURE__*/React.createElement(DataTableColumnHeader, {
37
+ fixed: fixColumnHeaders,
38
+ top: "0",
39
+ className: classes['table-header'],
40
+ rowSpan: columns.length.toString(),
41
+ key: `${header.dimension}-header-column`
42
+ }, (_header$label = header.label) !== null && _header$label !== void 0 ? _header$label : "");
43
+ })), times(multiplicationFactor, colNo => {
44
+ var _column$items3;
45
+ return (_column$items3 = column.items) === null || _column$items3 === void 0 ? void 0 : _column$items3.map(item => /*#__PURE__*/React.createElement(DataTableColumnHeader, {
46
+ fixed: fixColumnHeaders,
47
+ top: `${prevHeight.toString()}px`,
48
+ ref: index === 0 ? columnHeaderRef : undefined,
49
+ className: classes['table-header'],
50
+ align: "center",
51
+ colSpan: colSpan.toString(),
52
+ key: `${colNo}-${item.name}-column-header`
53
+ }, item.name));
54
+ })), hasSubColumns ? /*#__PURE__*/React.createElement(ColumnRenderer, {
55
+ column: nextColumn,
56
+ index: index + 1,
57
+ config: {
58
+ columns,
59
+ rowHeaders,
60
+ prevHeight: height,
61
+ fixColumnHeaders
62
+ }
63
+ }) : null);
64
+ }
65
+ export function TableHeaders() {
66
+ const engine = useCustomPivotTableEngine();
67
+ const columns = engine === null || engine === void 0 ? void 0 : engine.columnHeaders;
68
+ const rowHeaders = engine === null || engine === void 0 ? void 0 : engine.rowHeaders;
69
+ const fixColumnHeaders = engine === null || engine === void 0 ? void 0 : engine.fixColumnHeaders;
70
+ if (!columns || isEmpty(columns)) {
71
+ return null;
72
+ }
73
+ return /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(ColumnRenderer, {
74
+ column: columns[0],
75
+ index: 0,
76
+ config: {
77
+ rowHeaders,
78
+ columns,
79
+ fixColumnHeaders
80
+ }
81
+ }));
82
+ }
@@ -0,0 +1,22 @@
1
+ import { CustomPivotTableEngine } from "./services/engine";
2
+ import React, { useMemo } from "react";
3
+ import { CustomPivotTableEngineProvider } from "./state/engine";
4
+ import { PivotTable } from "./components/Table";
5
+ import { TableHeaders } from "./components/TableHeaders";
6
+ import { CustomPivotTableBody } from "./components/TableBody";
7
+ export function CustomPivotTable(_ref) {
8
+ let {
9
+ analytics,
10
+ config,
11
+ tableProps
12
+ } = _ref;
13
+ const engine = useMemo(() => new CustomPivotTableEngine({
14
+ analytics,
15
+ config
16
+ }), [analytics, config]);
17
+ return /*#__PURE__*/React.createElement(CustomPivotTableEngineProvider, {
18
+ engine: engine
19
+ }, /*#__PURE__*/React.createElement(PivotTable, {
20
+ tableProps: tableProps
21
+ }, /*#__PURE__*/React.createElement(TableHeaders, null), /*#__PURE__*/React.createElement(CustomPivotTableBody, null)));
22
+ }
@@ -0,0 +1,82 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ import { compact, findIndex, intersection, times, zip } from "lodash";
5
+ export class CustomPivotTableEngine {
6
+ constructor(_ref) {
7
+ let {
8
+ analytics,
9
+ config
10
+ } = _ref;
11
+ _defineProperty(this, "analyticsData", void 0);
12
+ _defineProperty(this, "valueIndex", void 0);
13
+ _defineProperty(this, "config", void 0);
14
+ _defineProperty(this, "rowHeaders", void 0);
15
+ _defineProperty(this, "columnHeaders", void 0);
16
+ _defineProperty(this, "columnMap", void 0);
17
+ this.config = config;
18
+ this.analyticsData = analytics;
19
+ this.valueIndex = findIndex(this.analyticsData.headers, ['name', 'value']);
20
+ this.getHeaders();
21
+ this.getColumnMap();
22
+ }
23
+ get fixColumnHeaders() {
24
+ var _this$config$options$, _this$config$options;
25
+ return (_this$config$options$ = (_this$config$options = this.config.options) === null || _this$config$options === void 0 ? void 0 : _this$config$options.fixColumnHeaders) !== null && _this$config$options$ !== void 0 ? _this$config$options$ : true;
26
+ }
27
+ get fixRowHeaders() {
28
+ var _this$config$options$2, _this$config$options2;
29
+ return (_this$config$options$2 = (_this$config$options2 = this.config.options) === null || _this$config$options2 === void 0 ? void 0 : _this$config$options2.fixRowHeaders) !== null && _this$config$options$2 !== void 0 ? _this$config$options$2 : true;
30
+ }
31
+ getDimensionItems(dimension) {
32
+ var _this$analyticsData$m, _this$analyticsData$m2;
33
+ return (_this$analyticsData$m = (_this$analyticsData$m2 = this.analyticsData.metaData) === null || _this$analyticsData$m2 === void 0 ? void 0 : _this$analyticsData$m2.dimensions[dimension]) !== null && _this$analyticsData$m !== void 0 ? _this$analyticsData$m : [];
34
+ }
35
+ getItem(id) {
36
+ var _this$analyticsData$m3;
37
+ return (_this$analyticsData$m3 = this.analyticsData.metaData) === null || _this$analyticsData$m3 === void 0 ? void 0 : _this$analyticsData$m3.items[id];
38
+ }
39
+ getValue(mapper) {
40
+ var _this$analyticsData$r;
41
+ const dimensions = Object.values(mapper);
42
+ const data = (_this$analyticsData$r = this.analyticsData.rows) === null || _this$analyticsData$r === void 0 ? void 0 : _this$analyticsData$r.filter(row => intersection(row, dimensions).length >= dimensions.length);
43
+ return data === null || data === void 0 ? void 0 : data.reduce((acc, row) => {
44
+ return acc + parseFloat(row[this.valueIndex]);
45
+ }, 0);
46
+ }
47
+ getHeaders() {
48
+ this.rowHeaders = this.config.layout.rows.map(rowConfig => {
49
+ return {
50
+ ...rowConfig,
51
+ items: compact(this.getDimensionItems(rowConfig.dimension).map(itemId => this.getItem(itemId)))
52
+ };
53
+ });
54
+ this.columnHeaders = this.config.layout.columns.map(columnConfig => {
55
+ return {
56
+ ...columnConfig,
57
+ items: compact(this.getDimensionItems(columnConfig.dimension).map(itemId => this.getItem(itemId)))
58
+ };
59
+ });
60
+ }
61
+ getColumnMap() {
62
+ var _compact;
63
+ const columns = this.columnHeaders;
64
+ const sanitizedColumns = (_compact = compact(columns === null || columns === void 0 ? void 0 : columns.map(column => {
65
+ var _column$items;
66
+ return (_column$items = column.items) === null || _column$items === void 0 ? void 0 : _column$items.map(item => ({
67
+ [column.dimension]: item.uid
68
+ }));
69
+ }))) !== null && _compact !== void 0 ? _compact : [];
70
+ const size = sanitizedColumns.reduce((acc, items) => {
71
+ var _items$length;
72
+ return acc * ((_items$length = items === null || items === void 0 ? void 0 : items.length) !== null && _items$length !== void 0 ? _items$length : 1);
73
+ }, 1);
74
+ const standardiseColumns = sanitizedColumns.map(items => [...times(size / items.length, () => items).flat()]);
75
+ this.columnMap = compact(zip(...standardiseColumns).map(arr => arr.reduce((obj, value) => {
76
+ return {
77
+ ...obj,
78
+ ...value
79
+ };
80
+ })));
81
+ }
82
+ }
@@ -0,0 +1,14 @@
1
+ import React, { createContext, useContext } from "react";
2
+ const CustomPivotTableEngineContext = /*#__PURE__*/createContext(null);
3
+ export function useCustomPivotTableEngine() {
4
+ return useContext(CustomPivotTableEngineContext);
5
+ }
6
+ export function CustomPivotTableEngineProvider(_ref) {
7
+ let {
8
+ children,
9
+ engine
10
+ } = _ref;
11
+ return /*#__PURE__*/React.createElement(CustomPivotTableEngineContext.Provider, {
12
+ value: engine
13
+ }, children);
14
+ }
@@ -1,6 +1,6 @@
1
1
  import { CustomDataProvider } from "@dhis2/app-runtime";
2
2
  import React from "react";
3
- import mapData from "../data/map.json";
3
+ import mapData from "../../data/map.json";
4
4
  export default function MapDataProvider(_ref) {
5
5
  let {
6
6
  children
package/build/es/index.js CHANGED
@@ -2,5 +2,5 @@ export * from "./components/Map";
2
2
  export * from "./components/CircularProgressDashboard";
3
3
  export * from "./components/ChartAnalytics";
4
4
  export * from "./components/SingleValueContainer";
5
- export * from "./components/PivotTable";
5
+ export * from "./components/CustomPivotTable";
6
6
  export {};
@@ -124,38 +124,5 @@
124
124
  "Legend set is required": "Legend set is required",
125
125
  "Radius": "Radius",
126
126
  "Configure Thematic Layer": "Configure Thematic Layer",
127
- "Program": "Program",
128
- "Select a program": "Select a program",
129
- "Indicators": "Indicators",
130
- "Indicator group": "Indicator group",
131
- "All groups": "All groups",
132
- "Indicator": "Indicator",
133
- "No indicator groups found": "No indicator groups found",
134
- "Loading indicator groups": "Loading indicator groups",
135
- "Data elements": "Data elements",
136
- "Data element group": "Data element group",
137
- "Data element": "Data element",
138
- "No data element groups found": "No data element groups found",
139
- "Loading data element groups": "Loading data element groups",
140
- "Data sets": "Data sets",
141
- "Data set": "Data set",
142
- "All data sets": "All data sets",
143
- "No data sets found": "No data sets found",
144
- "Loading data sets": "Loading data sets",
145
- "Event data items": "Event data items",
146
- "All programs": "All programs",
147
- "Event data item": "Event data item",
148
- "No programs found": "No programs found",
149
- "Loading programs": "Loading programs",
150
- "Program indicators": "Program indicators",
151
- "Program indicator": "Program indicator",
152
- "Data": "Data",
153
- "Organisation unit": "Organisation unit",
154
- "Assigned Categories": "Assigned Categories",
155
- "{{dynamicOuNames}} and {{lastOuName}}": "{{dynamicOuNames}} and {{lastOuName}}",
156
- "{{allDynamicOuNames}} levels": "{{allDynamicOuNames}} levels",
157
- "{{allDynamicOuNames}} groups": "{{allDynamicOuNames}} groups",
158
- "{{allDynamicOuNames}} levels in {{staticOuNames}}": "{{allDynamicOuNames}} levels in {{staticOuNames}}",
159
- "{{allDynamicOuNames}} groups in {{staticOuNames}}": "{{allDynamicOuNames}} groups in {{staticOuNames}}",
160
127
  "Loading ...": "Loading ..."
161
128
  }
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ export interface PivotTableProps {
3
+ children: React.ReactNode;
4
+ tableProps?: {
5
+ scrollHeight?: string;
6
+ scrollWidth?: string;
7
+ layout?: string;
8
+ width?: string;
9
+ };
10
+ }
11
+ export declare function PivotTable({ tableProps, children }: PivotTableProps): JSX.Element;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function CustomPivotTableBody(): JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function TableHeaders(): JSX.Element | null;
@@ -1,14 +1,28 @@
1
1
  /// <reference types="react" />
2
2
  import { Analytics, LegendSet } from "@hisptz/dhis2-utils";
3
3
  import { DHIS2Dimension } from "./interfaces";
4
- export * from "./interfaces";
5
4
  export interface CustomPivotTableProps {
6
5
  analytics: Analytics;
6
+ tableProps?: {
7
+ scrollHeight?: string;
8
+ scrollWidth?: string;
9
+ layout?: string;
10
+ width?: string;
11
+ };
7
12
  config: {
8
13
  layout: {
9
- columns: Array<DHIS2Dimension>;
10
- rows: Array<DHIS2Dimension>;
11
- filter?: Array<DHIS2Dimension>;
14
+ columns: {
15
+ dimension: DHIS2Dimension;
16
+ label?: string;
17
+ }[];
18
+ rows: {
19
+ dimension: DHIS2Dimension;
20
+ label?: string;
21
+ }[];
22
+ filter?: {
23
+ dimension: DHIS2Dimension;
24
+ label?: string;
25
+ }[];
12
26
  };
13
27
  options?: {
14
28
  legendSets?: LegendSet[];
@@ -23,4 +37,4 @@ export interface CustomPivotTableProps {
23
37
  };
24
38
  };
25
39
  }
26
- export declare function CustomPivotTable({ analytics, config }: CustomPivotTableProps): JSX.Element;
40
+ export declare function CustomPivotTable({ analytics, config, tableProps }: CustomPivotTableProps): JSX.Element;
@@ -0,0 +1 @@
1
+ export type DHIS2Dimension = "ou" | "pe" | "dx" | "co" | string;
@@ -0,0 +1,58 @@
1
+ import { Analytics, AnalyticsItem, LegendSet } from "@hisptz/dhis2-utils";
2
+ import { DHIS2Dimension } from "../interfaces";
3
+ export interface EngineConfig {
4
+ layout: {
5
+ columns: {
6
+ dimension: DHIS2Dimension;
7
+ label?: string;
8
+ }[];
9
+ rows: {
10
+ dimension: DHIS2Dimension;
11
+ label?: string;
12
+ }[];
13
+ filter?: {
14
+ dimension: DHIS2Dimension;
15
+ label?: string;
16
+ }[];
17
+ };
18
+ options?: {
19
+ legendSets?: LegendSet[];
20
+ hideEmptyColumns?: boolean;
21
+ hideEmptyRows?: boolean;
22
+ showRowTotals?: boolean;
23
+ showColumnTotals?: boolean;
24
+ showRowSubtotals?: boolean;
25
+ showColumnSubtotals?: boolean;
26
+ fixColumnHeaders?: boolean;
27
+ fixRowHeaders?: boolean;
28
+ [key: string]: any;
29
+ };
30
+ }
31
+ export interface Header {
32
+ dimension: DHIS2Dimension;
33
+ label?: string;
34
+ items?: AnalyticsItem[];
35
+ }
36
+ export declare class CustomPivotTableEngine {
37
+ analyticsData: Analytics;
38
+ valueIndex: number;
39
+ config: EngineConfig;
40
+ rowHeaders?: Header[];
41
+ columnHeaders?: Header[];
42
+ columnMap?: {
43
+ [key: string]: any;
44
+ }[];
45
+ constructor({ analytics, config }: {
46
+ analytics: Analytics;
47
+ config: EngineConfig;
48
+ });
49
+ get fixColumnHeaders(): boolean;
50
+ get fixRowHeaders(): boolean;
51
+ getDimensionItems(dimension: DHIS2Dimension): string[];
52
+ getItem(id: string): AnalyticsItem | undefined;
53
+ getValue(mapper: {
54
+ [key: string]: any;
55
+ }): number | undefined;
56
+ getHeaders(): void;
57
+ getColumnMap(): void;
58
+ }
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from "react";
2
+ import { CustomPivotTableEngine } from "../services/engine";
3
+ export declare function useCustomPivotTableEngine(): CustomPivotTableEngine | null;
4
+ export declare function CustomPivotTableEngineProvider({ children, engine }: {
5
+ children: ReactNode;
6
+ engine: CustomPivotTableEngine;
7
+ }): JSX.Element;