@hisptz/dhis2-analytics 2.0.42 → 2.0.44

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 (427) hide show
  1. package/dist/esm/index.js +0 -1
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/index.js +0 -7
  4. package/dist/index.js.map +1 -1
  5. package/dist/types/components/Map/interfaces/index.d.ts +2 -2
  6. package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
  7. package/dist/types/index.d.ts +0 -1
  8. package/dist/types/index.d.ts.map +1 -1
  9. package/package.json +11 -3
  10. package/dist/components/Scorecard/Scorecard.js +0 -16
  11. package/dist/components/Scorecard/Scorecard.js.map +0 -1
  12. package/dist/components/Scorecard/Scorecard.stories.js +0 -483
  13. package/dist/components/Scorecard/Scorecard.stories.js.map +0 -1
  14. package/dist/components/Scorecard/ScorecardContext.stories.js +0 -422
  15. package/dist/components/Scorecard/ScorecardContext.stories.js.map +0 -1
  16. package/dist/components/Scorecard/components/ConfigProvider.js +0 -30
  17. package/dist/components/Scorecard/components/ConfigProvider.js.map +0 -1
  18. package/dist/components/Scorecard/components/DataProvider.js +0 -45
  19. package/dist/components/Scorecard/components/DataProvider.js.map +0 -1
  20. package/dist/components/Scorecard/components/LoadingIndicator.js +0 -43
  21. package/dist/components/Scorecard/components/LoadingIndicator.js.map +0 -1
  22. package/dist/components/Scorecard/components/MetaProvider.js +0 -53
  23. package/dist/components/Scorecard/components/MetaProvider.js.map +0 -1
  24. package/dist/components/Scorecard/components/ScorecardContext.js +0 -69
  25. package/dist/components/Scorecard/components/ScorecardContext.js.map +0 -1
  26. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js +0 -29
  27. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +0 -1
  28. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js +0 -30
  29. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +0 -1
  30. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js +0 -62
  31. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +0 -1
  32. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js +0 -14
  33. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js.map +0 -1
  34. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js +0 -77
  35. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js.map +0 -1
  36. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js +0 -80
  37. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +0 -1
  38. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css +0 -33
  39. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css.map +0 -1
  40. package/dist/components/Scorecard/components/ScorecardTable/components/AverageCell.js +0 -157
  41. package/dist/components/Scorecard/components/ScorecardTable/components/AverageCell.js.map +0 -1
  42. package/dist/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js +0 -58
  43. package/dist/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js.map +0 -1
  44. package/dist/components/Scorecard/components/ScorecardTable/components/CellLoader.js +0 -12
  45. package/dist/components/Scorecard/components/ScorecardTable/components/CellLoader.js.map +0 -1
  46. package/dist/components/Scorecard/components/ScorecardTable/components/DataContainer.js +0 -59
  47. package/dist/components/Scorecard/components/ScorecardTable/components/DataContainer.js.map +0 -1
  48. package/dist/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js +0 -152
  49. package/dist/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js.map +0 -1
  50. package/dist/components/Scorecard/components/ScorecardTable/components/DataRow.js +0 -60
  51. package/dist/components/Scorecard/components/ScorecardTable/components/DataRow.js.map +0 -1
  52. package/dist/components/Scorecard/components/ScorecardTable/components/DataValue.js +0 -69
  53. package/dist/components/Scorecard/components/ScorecardTable/components/DataValue.js.map +0 -1
  54. package/dist/components/Scorecard/components/ScorecardTable/components/DraggableCell.js +0 -46
  55. package/dist/components/Scorecard/components/ScorecardTable/components/DraggableCell.js.map +0 -1
  56. package/dist/components/Scorecard/components/ScorecardTable/components/DroppableCell.js +0 -50
  57. package/dist/components/Scorecard/components/ScorecardTable/components/DroppableCell.js.map +0 -1
  58. package/dist/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js +0 -12
  59. package/dist/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js.map +0 -1
  60. package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +0 -84
  61. package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +0 -1
  62. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js +0 -152
  63. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +0 -1
  64. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js +0 -58
  65. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js.map +0 -1
  66. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedCell.js +0 -107
  67. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedCell.js.map +0 -1
  68. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js +0 -97
  69. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js.map +0 -1
  70. package/dist/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js +0 -37
  71. package/dist/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js.map +0 -1
  72. package/dist/components/Scorecard/components/ScorecardTable/components/PaginatedToolbar.js +0 -58
  73. package/dist/components/Scorecard/components/ScorecardTable/components/PaginatedToolbar.js.map +0 -1
  74. package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js +0 -101
  75. package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js.map +0 -1
  76. package/dist/components/Scorecard/components/ScorecardTable/components/TableBody.js +0 -28
  77. package/dist/components/Scorecard/components/ScorecardTable/components/TableBody.js.map +0 -1
  78. package/dist/components/Scorecard/components/ScorecardTable/components/TableFoot.js +0 -31
  79. package/dist/components/Scorecard/components/ScorecardTable/components/TableFoot.js.map +0 -1
  80. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js +0 -24
  81. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js.map +0 -1
  82. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css +0 -32
  83. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css.map +0 -1
  84. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +0 -38
  85. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +0 -1
  86. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +0 -72
  87. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +0 -1
  88. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js +0 -26
  89. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +0 -1
  90. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js +0 -42
  91. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +0 -1
  92. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js +0 -71
  93. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +0 -1
  94. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +0 -64
  95. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +0 -1
  96. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js +0 -31
  97. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +0 -1
  98. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js +0 -14
  99. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js.map +0 -1
  100. package/dist/components/Scorecard/components/ScorecardTable/index.js +0 -14
  101. package/dist/components/Scorecard/components/ScorecardTable/index.js.map +0 -1
  102. package/dist/components/Scorecard/components/StateProvider.js +0 -66
  103. package/dist/components/Scorecard/components/StateProvider.js.map +0 -1
  104. package/dist/components/Scorecard/components/TableStateProvider.js +0 -45
  105. package/dist/components/Scorecard/components/TableStateProvider.js.map +0 -1
  106. package/dist/components/Scorecard/components/index.js +0 -35
  107. package/dist/components/Scorecard/components/index.js.map +0 -1
  108. package/dist/components/Scorecard/hooks/cellData.js +0 -35
  109. package/dist/components/Scorecard/hooks/cellData.js.map +0 -1
  110. package/dist/components/Scorecard/hooks/columns.js +0 -173
  111. package/dist/components/Scorecard/hooks/columns.js.map +0 -1
  112. package/dist/components/Scorecard/hooks/data.js +0 -203
  113. package/dist/components/Scorecard/hooks/data.js.map +0 -1
  114. package/dist/components/Scorecard/hooks/dataEngine.js +0 -8
  115. package/dist/components/Scorecard/hooks/dataEngine.js.map +0 -1
  116. package/dist/components/Scorecard/hooks/dataItem.js +0 -20
  117. package/dist/components/Scorecard/hooks/dataItem.js.map +0 -1
  118. package/dist/components/Scorecard/hooks/index.js +0 -14
  119. package/dist/components/Scorecard/hooks/index.js.map +0 -1
  120. package/dist/components/Scorecard/hooks/metadata.js +0 -128
  121. package/dist/components/Scorecard/hooks/metadata.js.map +0 -1
  122. package/dist/components/Scorecard/hooks/orgUnit.js +0 -17
  123. package/dist/components/Scorecard/hooks/orgUnit.js.map +0 -1
  124. package/dist/components/Scorecard/hooks/period.js +0 -15
  125. package/dist/components/Scorecard/hooks/period.js.map +0 -1
  126. package/dist/components/Scorecard/hooks/table.js +0 -181
  127. package/dist/components/Scorecard/hooks/table.js.map +0 -1
  128. package/dist/components/Scorecard/hooks/value.js +0 -190
  129. package/dist/components/Scorecard/hooks/value.js.map +0 -1
  130. package/dist/components/Scorecard/index.js +0 -35
  131. package/dist/components/Scorecard/index.js.map +0 -1
  132. package/dist/components/Scorecard/schemas/config.js +0 -216
  133. package/dist/components/Scorecard/schemas/config.js.map +0 -1
  134. package/dist/components/Scorecard/utils/analytics.js +0 -39
  135. package/dist/components/Scorecard/utils/analytics.js.map +0 -1
  136. package/dist/components/Scorecard/utils/columns.js +0 -309
  137. package/dist/components/Scorecard/utils/columns.js.map +0 -1
  138. package/dist/components/Scorecard/utils/data.js +0 -57
  139. package/dist/components/Scorecard/utils/data.js.map +0 -1
  140. package/dist/components/Scorecard/utils/dataEngine.js +0 -35
  141. package/dist/components/Scorecard/utils/dataEngine.js.map +0 -1
  142. package/dist/components/Scorecard/utils/dataSources.js +0 -16
  143. package/dist/components/Scorecard/utils/dataSources.js.map +0 -1
  144. package/dist/components/Scorecard/utils/engine.js +0 -20
  145. package/dist/components/Scorecard/utils/engine.js.map +0 -1
  146. package/dist/components/Scorecard/utils/legends.js +0 -118
  147. package/dist/components/Scorecard/utils/legends.js.map +0 -1
  148. package/dist/components/Scorecard/utils/orgUnits.js +0 -40
  149. package/dist/components/Scorecard/utils/orgUnits.js.map +0 -1
  150. package/dist/components/Scorecard/utils/state.js +0 -15
  151. package/dist/components/Scorecard/utils/state.js.map +0 -1
  152. package/dist/esm/components/Scorecard/Scorecard.js +0 -14
  153. package/dist/esm/components/Scorecard/Scorecard.js.map +0 -1
  154. package/dist/esm/components/Scorecard/Scorecard.stories.js +0 -474
  155. package/dist/esm/components/Scorecard/Scorecard.stories.js.map +0 -1
  156. package/dist/esm/components/Scorecard/ScorecardContext.stories.js +0 -417
  157. package/dist/esm/components/Scorecard/ScorecardContext.stories.js.map +0 -1
  158. package/dist/esm/components/Scorecard/components/ConfigProvider.js +0 -23
  159. package/dist/esm/components/Scorecard/components/ConfigProvider.js.map +0 -1
  160. package/dist/esm/components/Scorecard/components/DataProvider.js +0 -40
  161. package/dist/esm/components/Scorecard/components/DataProvider.js.map +0 -1
  162. package/dist/esm/components/Scorecard/components/LoadingIndicator.js +0 -37
  163. package/dist/esm/components/Scorecard/components/LoadingIndicator.js.map +0 -1
  164. package/dist/esm/components/Scorecard/components/MetaProvider.js +0 -46
  165. package/dist/esm/components/Scorecard/components/MetaProvider.js.map +0 -1
  166. package/dist/esm/components/Scorecard/components/ScorecardContext.js +0 -63
  167. package/dist/esm/components/Scorecard/components/ScorecardContext.js.map +0 -1
  168. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js +0 -23
  169. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +0 -1
  170. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js +0 -27
  171. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +0 -1
  172. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js +0 -55
  173. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +0 -1
  174. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js +0 -3
  175. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js.map +0 -1
  176. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js +0 -75
  177. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js.map +0 -1
  178. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js +0 -78
  179. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +0 -1
  180. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css +0 -33
  181. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css.map +0 -1
  182. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageCell.js +0 -153
  183. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageCell.js.map +0 -1
  184. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js +0 -56
  185. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js.map +0 -1
  186. package/dist/esm/components/Scorecard/components/ScorecardTable/components/CellLoader.js +0 -10
  187. package/dist/esm/components/Scorecard/components/ScorecardTable/components/CellLoader.js.map +0 -1
  188. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataContainer.js +0 -57
  189. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataContainer.js.map +0 -1
  190. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js +0 -150
  191. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js.map +0 -1
  192. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataRow.js +0 -54
  193. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataRow.js.map +0 -1
  194. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataValue.js +0 -67
  195. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataValue.js.map +0 -1
  196. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DraggableCell.js +0 -44
  197. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DraggableCell.js.map +0 -1
  198. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DroppableCell.js +0 -48
  199. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DroppableCell.js.map +0 -1
  200. package/dist/esm/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js +0 -10
  201. package/dist/esm/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js.map +0 -1
  202. package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +0 -82
  203. package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +0 -1
  204. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js +0 -146
  205. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +0 -1
  206. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js +0 -52
  207. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js.map +0 -1
  208. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedCell.js +0 -101
  209. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedCell.js.map +0 -1
  210. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js +0 -95
  211. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js.map +0 -1
  212. package/dist/esm/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js +0 -31
  213. package/dist/esm/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js.map +0 -1
  214. package/dist/esm/components/Scorecard/components/ScorecardTable/components/PaginatedToolbar.js +0 -56
  215. package/dist/esm/components/Scorecard/components/ScorecardTable/components/PaginatedToolbar.js.map +0 -1
  216. package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js +0 -99
  217. package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js.map +0 -1
  218. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableBody.js +0 -26
  219. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableBody.js.map +0 -1
  220. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableFoot.js +0 -29
  221. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableFoot.js.map +0 -1
  222. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js +0 -18
  223. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js.map +0 -1
  224. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css +0 -32
  225. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css.map +0 -1
  226. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +0 -31
  227. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +0 -1
  228. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +0 -63
  229. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +0 -1
  230. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js +0 -24
  231. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +0 -1
  232. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js +0 -35
  233. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +0 -1
  234. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js +0 -64
  235. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +0 -1
  236. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +0 -57
  237. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +0 -1
  238. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js +0 -29
  239. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +0 -1
  240. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js +0 -3
  241. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js.map +0 -1
  242. package/dist/esm/components/Scorecard/components/ScorecardTable/index.js +0 -3
  243. package/dist/esm/components/Scorecard/components/ScorecardTable/index.js.map +0 -1
  244. package/dist/esm/components/Scorecard/components/StateProvider.js +0 -57
  245. package/dist/esm/components/Scorecard/components/StateProvider.js.map +0 -1
  246. package/dist/esm/components/Scorecard/components/TableStateProvider.js +0 -39
  247. package/dist/esm/components/Scorecard/components/TableStateProvider.js.map +0 -1
  248. package/dist/esm/components/Scorecard/components/index.js +0 -6
  249. package/dist/esm/components/Scorecard/components/index.js.map +0 -1
  250. package/dist/esm/components/Scorecard/hooks/cellData.js +0 -33
  251. package/dist/esm/components/Scorecard/hooks/cellData.js.map +0 -1
  252. package/dist/esm/components/Scorecard/hooks/columns.js +0 -170
  253. package/dist/esm/components/Scorecard/hooks/columns.js.map +0 -1
  254. package/dist/esm/components/Scorecard/hooks/data.js +0 -197
  255. package/dist/esm/components/Scorecard/hooks/data.js.map +0 -1
  256. package/dist/esm/components/Scorecard/hooks/dataEngine.js +0 -6
  257. package/dist/esm/components/Scorecard/hooks/dataEngine.js.map +0 -1
  258. package/dist/esm/components/Scorecard/hooks/dataItem.js +0 -18
  259. package/dist/esm/components/Scorecard/hooks/dataItem.js.map +0 -1
  260. package/dist/esm/components/Scorecard/hooks/index.js +0 -3
  261. package/dist/esm/components/Scorecard/hooks/index.js.map +0 -1
  262. package/dist/esm/components/Scorecard/hooks/metadata.js +0 -121
  263. package/dist/esm/components/Scorecard/hooks/metadata.js.map +0 -1
  264. package/dist/esm/components/Scorecard/hooks/orgUnit.js +0 -15
  265. package/dist/esm/components/Scorecard/hooks/orgUnit.js.map +0 -1
  266. package/dist/esm/components/Scorecard/hooks/period.js +0 -13
  267. package/dist/esm/components/Scorecard/hooks/period.js.map +0 -1
  268. package/dist/esm/components/Scorecard/hooks/table.js +0 -179
  269. package/dist/esm/components/Scorecard/hooks/table.js.map +0 -1
  270. package/dist/esm/components/Scorecard/hooks/value.js +0 -186
  271. package/dist/esm/components/Scorecard/hooks/value.js.map +0 -1
  272. package/dist/esm/components/Scorecard/index.js +0 -6
  273. package/dist/esm/components/Scorecard/index.js.map +0 -1
  274. package/dist/esm/components/Scorecard/schemas/config.js +0 -193
  275. package/dist/esm/components/Scorecard/schemas/config.js.map +0 -1
  276. package/dist/esm/components/Scorecard/utils/analytics.js +0 -36
  277. package/dist/esm/components/Scorecard/utils/analytics.js.map +0 -1
  278. package/dist/esm/components/Scorecard/utils/columns.js +0 -303
  279. package/dist/esm/components/Scorecard/utils/columns.js.map +0 -1
  280. package/dist/esm/components/Scorecard/utils/data.js +0 -54
  281. package/dist/esm/components/Scorecard/utils/data.js.map +0 -1
  282. package/dist/esm/components/Scorecard/utils/dataEngine.js +0 -33
  283. package/dist/esm/components/Scorecard/utils/dataEngine.js.map +0 -1
  284. package/dist/esm/components/Scorecard/utils/dataSources.js +0 -13
  285. package/dist/esm/components/Scorecard/utils/dataSources.js.map +0 -1
  286. package/dist/esm/components/Scorecard/utils/engine.js +0 -18
  287. package/dist/esm/components/Scorecard/utils/engine.js.map +0 -1
  288. package/dist/esm/components/Scorecard/utils/legends.js +0 -115
  289. package/dist/esm/components/Scorecard/utils/legends.js.map +0 -1
  290. package/dist/esm/components/Scorecard/utils/orgUnits.js +0 -37
  291. package/dist/esm/components/Scorecard/utils/orgUnits.js.map +0 -1
  292. package/dist/esm/components/Scorecard/utils/state.js +0 -13
  293. package/dist/esm/components/Scorecard/utils/state.js.map +0 -1
  294. package/dist/types/components/Scorecard/Scorecard.d.ts +0 -7
  295. package/dist/types/components/Scorecard/Scorecard.d.ts.map +0 -1
  296. package/dist/types/components/Scorecard/components/ConfigProvider.d.ts +0 -142
  297. package/dist/types/components/Scorecard/components/ConfigProvider.d.ts.map +0 -1
  298. package/dist/types/components/Scorecard/components/DataProvider.d.ts +0 -16
  299. package/dist/types/components/Scorecard/components/DataProvider.d.ts.map +0 -1
  300. package/dist/types/components/Scorecard/components/LoadingIndicator.d.ts +0 -5
  301. package/dist/types/components/Scorecard/components/LoadingIndicator.d.ts.map +0 -1
  302. package/dist/types/components/Scorecard/components/MetaProvider.d.ts +0 -19
  303. package/dist/types/components/Scorecard/components/MetaProvider.d.ts.map +0 -1
  304. package/dist/types/components/Scorecard/components/ScorecardContext.d.ts +0 -10
  305. package/dist/types/components/Scorecard/components/ScorecardContext.d.ts.map +0 -1
  306. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.d.ts +0 -6
  307. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.d.ts.map +0 -1
  308. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.d.ts +0 -12
  309. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.d.ts.map +0 -1
  310. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.d.ts +0 -9
  311. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.d.ts.map +0 -1
  312. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.d.ts +0 -2
  313. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.d.ts.map +0 -1
  314. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.d.ts +0 -6
  315. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.d.ts.map +0 -1
  316. package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts +0 -6
  317. package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts.map +0 -1
  318. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageCell.d.ts +0 -12
  319. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageCell.d.ts.map +0 -1
  320. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.d.ts +0 -4
  321. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.d.ts.map +0 -1
  322. package/dist/types/components/Scorecard/components/ScorecardTable/components/CellLoader.d.ts +0 -4
  323. package/dist/types/components/Scorecard/components/ScorecardTable/components/CellLoader.d.ts.map +0 -1
  324. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataContainer.d.ts +0 -91
  325. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataContainer.d.ts.map +0 -1
  326. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataFooterCell.d.ts +0 -4
  327. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataFooterCell.d.ts.map +0 -1
  328. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataRow.d.ts +0 -9
  329. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataRow.d.ts.map +0 -1
  330. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataValue.d.ts +0 -7
  331. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataValue.d.ts.map +0 -1
  332. package/dist/types/components/Scorecard/components/ScorecardTable/components/DraggableCell.d.ts +0 -9
  333. package/dist/types/components/Scorecard/components/ScorecardTable/components/DraggableCell.d.ts.map +0 -1
  334. package/dist/types/components/Scorecard/components/ScorecardTable/components/DroppableCell.d.ts +0 -7
  335. package/dist/types/components/Scorecard/components/ScorecardTable/components/DroppableCell.d.ts.map +0 -1
  336. package/dist/types/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.d.ts +0 -4
  337. package/dist/types/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.d.ts.map +0 -1
  338. package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts +0 -8
  339. package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts.map +0 -1
  340. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts +0 -15
  341. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts.map +0 -1
  342. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.d.ts +0 -13
  343. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.d.ts.map +0 -1
  344. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedCell.d.ts +0 -20
  345. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedCell.d.ts.map +0 -1
  346. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.d.ts +0 -15
  347. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.d.ts.map +0 -1
  348. package/dist/types/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.d.ts +0 -2
  349. package/dist/types/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.d.ts.map +0 -1
  350. package/dist/types/components/Scorecard/components/ScorecardTable/components/PaginatedToolbar.d.ts +0 -2
  351. package/dist/types/components/Scorecard/components/ScorecardTable/components/PaginatedToolbar.d.ts.map +0 -1
  352. package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataCell.d.ts +0 -15
  353. package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataCell.d.ts.map +0 -1
  354. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableBody.d.ts +0 -5
  355. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableBody.d.ts.map +0 -1
  356. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableFoot.d.ts +0 -2
  357. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableFoot.d.ts.map +0 -1
  358. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.d.ts +0 -3
  359. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.d.ts.map +0 -1
  360. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts +0 -4
  361. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts.map +0 -1
  362. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts +0 -6
  363. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts.map +0 -1
  364. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.d.ts +0 -4
  365. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.d.ts.map +0 -1
  366. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts +0 -7
  367. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts.map +0 -1
  368. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts +0 -6
  369. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts.map +0 -1
  370. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts +0 -7
  371. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts.map +0 -1
  372. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.d.ts +0 -7
  373. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.d.ts.map +0 -1
  374. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/index.d.ts +0 -2
  375. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/index.d.ts.map +0 -1
  376. package/dist/types/components/Scorecard/components/ScorecardTable/index.d.ts +0 -2
  377. package/dist/types/components/Scorecard/components/ScorecardTable/index.d.ts.map +0 -1
  378. package/dist/types/components/Scorecard/components/StateProvider.d.ts +0 -44
  379. package/dist/types/components/Scorecard/components/StateProvider.d.ts.map +0 -1
  380. package/dist/types/components/Scorecard/components/TableStateProvider.d.ts +0 -56
  381. package/dist/types/components/Scorecard/components/TableStateProvider.d.ts.map +0 -1
  382. package/dist/types/components/Scorecard/components/index.d.ts +0 -5
  383. package/dist/types/components/Scorecard/components/index.d.ts.map +0 -1
  384. package/dist/types/components/Scorecard/hooks/cellData.d.ts +0 -18
  385. package/dist/types/components/Scorecard/hooks/cellData.d.ts.map +0 -1
  386. package/dist/types/components/Scorecard/hooks/columns.d.ts +0 -50
  387. package/dist/types/components/Scorecard/hooks/columns.d.ts.map +0 -1
  388. package/dist/types/components/Scorecard/hooks/data.d.ts +0 -21
  389. package/dist/types/components/Scorecard/hooks/data.d.ts.map +0 -1
  390. package/dist/types/components/Scorecard/hooks/dataEngine.d.ts +0 -2
  391. package/dist/types/components/Scorecard/hooks/dataEngine.d.ts.map +0 -1
  392. package/dist/types/components/Scorecard/hooks/dataItem.d.ts +0 -3
  393. package/dist/types/components/Scorecard/hooks/dataItem.d.ts.map +0 -1
  394. package/dist/types/components/Scorecard/hooks/index.d.ts +0 -2
  395. package/dist/types/components/Scorecard/hooks/index.d.ts.map +0 -1
  396. package/dist/types/components/Scorecard/hooks/metadata.d.ts +0 -41
  397. package/dist/types/components/Scorecard/hooks/metadata.d.ts.map +0 -1
  398. package/dist/types/components/Scorecard/hooks/orgUnit.d.ts +0 -6
  399. package/dist/types/components/Scorecard/hooks/orgUnit.d.ts.map +0 -1
  400. package/dist/types/components/Scorecard/hooks/period.d.ts +0 -2
  401. package/dist/types/components/Scorecard/hooks/period.d.ts.map +0 -1
  402. package/dist/types/components/Scorecard/hooks/table.d.ts +0 -4
  403. package/dist/types/components/Scorecard/hooks/table.d.ts.map +0 -1
  404. package/dist/types/components/Scorecard/hooks/value.d.ts +0 -87
  405. package/dist/types/components/Scorecard/hooks/value.d.ts.map +0 -1
  406. package/dist/types/components/Scorecard/index.d.ts +0 -5
  407. package/dist/types/components/Scorecard/index.d.ts.map +0 -1
  408. package/dist/types/components/Scorecard/schemas/config.d.ts +0 -3337
  409. package/dist/types/components/Scorecard/schemas/config.d.ts.map +0 -1
  410. package/dist/types/components/Scorecard/utils/analytics.d.ts +0 -19
  411. package/dist/types/components/Scorecard/utils/analytics.d.ts.map +0 -1
  412. package/dist/types/components/Scorecard/utils/columns.d.ts +0 -33
  413. package/dist/types/components/Scorecard/utils/columns.d.ts.map +0 -1
  414. package/dist/types/components/Scorecard/utils/data.d.ts +0 -18
  415. package/dist/types/components/Scorecard/utils/data.d.ts.map +0 -1
  416. package/dist/types/components/Scorecard/utils/dataEngine.d.ts +0 -14
  417. package/dist/types/components/Scorecard/utils/dataEngine.d.ts.map +0 -1
  418. package/dist/types/components/Scorecard/utils/dataSources.d.ts +0 -37
  419. package/dist/types/components/Scorecard/utils/dataSources.d.ts.map +0 -1
  420. package/dist/types/components/Scorecard/utils/engine.d.ts +0 -14
  421. package/dist/types/components/Scorecard/utils/engine.d.ts.map +0 -1
  422. package/dist/types/components/Scorecard/utils/legends.d.ts +0 -22
  423. package/dist/types/components/Scorecard/utils/legends.d.ts.map +0 -1
  424. package/dist/types/components/Scorecard/utils/orgUnits.d.ts +0 -7
  425. package/dist/types/components/Scorecard/utils/orgUnits.d.ts.map +0 -1
  426. package/dist/types/components/Scorecard/utils/state.d.ts +0 -5
  427. package/dist/types/components/Scorecard/utils/state.d.ts.map +0 -1
@@ -1,197 +0,0 @@
1
- import { useScorecardConfig, useScorecardMeta } from '../components';
2
- import { useState, useRef, useMemo, useEffect } from 'react';
3
- import { getDimensionsFromMeta } from '../utils/analytics';
4
- import { useAlert, useDataQuery } from '@dhis2/app-runtime';
5
- import { getAdjacentFixedPeriods, createFixedPeriodFromPeriodId } from '@dhis2/multi-calendar-dates';
6
- import { uniq, maxBy, chunk } from 'lodash';
7
- import { sanitizeAnalyticsData } from '../utils/data';
8
- import { useCalendar } from './metadata';
9
- import { queue } from 'async-es';
10
- import { asyncify } from 'async';
11
- import i18n from '@dhis2/d2-i18n';
12
-
13
- const query = {
14
- data: {
15
- resource: "analytics",
16
- params: ({
17
- periods,
18
- orgUnits,
19
- dataItems
20
- }) => {
21
- return {
22
- skipMeta: true,
23
- dimension: [
24
- `pe:${periods.join(";")}`,
25
- `dx:${dataItems.join(";")}`,
26
- `ou:${orgUnits.join(";")}`
27
- ]
28
- };
29
- }
30
- }
31
- };
32
- const chunkSize = 5;
33
- function useGetScorecardData(dataEngine) {
34
- const [totalRequests, setTotalRequests] = useState(0);
35
- const [noOfCompleteRequests, setNoOfCompleteRequests] = useState(0);
36
- const fetchData = async ({
37
- periods,
38
- dataItems,
39
- orgUnits
40
- }) => {
41
- const rawAnalyticsData = await refetch({
42
- periods,
43
- dataItems,
44
- orgUnits
45
- });
46
- if (!rawAnalyticsData)
47
- return [];
48
- const tableData = getTableData(rawAnalyticsData);
49
- dataEngine.updateData(tableData);
50
- setNoOfCompleteRequests((prev) => prev + 1);
51
- };
52
- const { show } = useAlert(
53
- ({ message }) => message,
54
- ({ type }) => ({ ...type, duration: 3e3 })
55
- );
56
- const dataFetchQueue = useRef(queue(asyncify(fetchData)));
57
- const config = useScorecardConfig();
58
- const meta = useScorecardMeta();
59
- const calendar = useCalendar();
60
- if (!config || !meta) {
61
- throw new Error(
62
- "Invalid scorecard setup. Make sure the valid config and state props are passed."
63
- );
64
- }
65
- const { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(
66
- () => getDimensionsFromMeta({
67
- meta
68
- }),
69
- [meta]
70
- );
71
- const analyticsPeriod = useMemo(() => {
72
- const pastPeriods = periodsIds.map((periodId) => {
73
- const pe = getAdjacentFixedPeriods({
74
- calendar,
75
- steps: -1,
76
- period: createFixedPeriodFromPeriodId({
77
- calendar,
78
- periodId
79
- })
80
- });
81
- return pe.map(({ id }) => id);
82
- }).flat();
83
- return uniq([...periodsIds, ...pastPeriods]);
84
- }, [periodsIds]);
85
- const { refetch } = useDataQuery(query, {
86
- variables: {
87
- periods: analyticsPeriod,
88
- dataItems: dataItemsIds,
89
- orgUnits: orgUnitsIds
90
- },
91
- lazy: true,
92
- onError: (error) => {
93
- setTotalRequests(0);
94
- setNoOfCompleteRequests(0);
95
- dataFetchQueue.current.remove(() => true);
96
- show({
97
- message: `${i18n.t("Error getting scorecard data")}: ${error.message}`,
98
- type: { critical: true }
99
- });
100
- }
101
- });
102
- const progress = useMemo(() => {
103
- return noOfCompleteRequests / totalRequests;
104
- }, [totalRequests, noOfCompleteRequests]);
105
- const getTableData = (rawAnalyticsData) => {
106
- return sanitizeAnalyticsData(rawAnalyticsData);
107
- };
108
- const initializeFetch = async () => {
109
- const getTheLongestDimension = () => {
110
- const dimensions = [
111
- {
112
- dimension: "pe",
113
- length: analyticsPeriod.length
114
- },
115
- {
116
- dimension: "dx",
117
- length: dataItemsIds.length
118
- },
119
- {
120
- dimension: "ou",
121
- length: orgUnitsIds.length
122
- }
123
- ];
124
- return maxBy(dimensions, "length").dimension;
125
- };
126
- const getChunkedData = async (maxItem) => {
127
- switch (maxItem) {
128
- case "dx":
129
- const dataItemChunks = chunk(dataItemsIds, chunkSize);
130
- setTotalRequests(dataItemChunks.length);
131
- for (const dataItemChunk of dataItemChunks) {
132
- dataFetchQueue.current.push({
133
- periods: analyticsPeriod,
134
- dataItems: dataItemChunk,
135
- orgUnits: orgUnitsIds
136
- });
137
- }
138
- break;
139
- case "pe":
140
- const periodChunks = chunk(analyticsPeriod, chunkSize);
141
- setTotalRequests(periodChunks.length);
142
- for (const periodChunk of periodChunks) {
143
- dataFetchQueue.current.push({
144
- periods: periodChunk,
145
- dataItems: dataItemsIds,
146
- orgUnits: orgUnitsIds
147
- });
148
- }
149
- break;
150
- case "ou":
151
- const orgUnitChunks = chunk(orgUnitsIds, chunkSize);
152
- setTotalRequests(orgUnitChunks.length);
153
- for (const orgUnitChunk of orgUnitChunks) {
154
- dataFetchQueue.current.push({
155
- periods: analyticsPeriod,
156
- dataItems: dataItemsIds,
157
- orgUnits: orgUnitChunk
158
- });
159
- }
160
- break;
161
- }
162
- };
163
- setTotalRequests(0);
164
- setNoOfCompleteRequests(0);
165
- dataFetchQueue.current.remove(() => true);
166
- dataFetchQueue.current.drain(() => {
167
- dataEngine.complete();
168
- });
169
- dataEngine.clear();
170
- if (analyticsPeriod.length <= 5 && dataItemsIds.length <= 5 && orgUnitsIds.length <= 5) {
171
- setTotalRequests(1);
172
- setNoOfCompleteRequests(0);
173
- await fetchData({
174
- periods: analyticsPeriod,
175
- dataItems: dataItemsIds,
176
- orgUnits: orgUnitsIds
177
- });
178
- setNoOfCompleteRequests(1);
179
- dataEngine.complete();
180
- return;
181
- }
182
- setNoOfCompleteRequests(0);
183
- const dimensionWithMaxItems = getTheLongestDimension();
184
- await getChunkedData(dimensionWithMaxItems);
185
- };
186
- useEffect(() => {
187
- initializeFetch();
188
- }, []);
189
- return {
190
- rawData: [],
191
- progress
192
- };
193
- }
194
-
195
- export { useGetScorecardData };
196
- //# sourceMappingURL=out.js.map
197
- //# sourceMappingURL=data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/data.ts"],"names":[],"mappings":"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","sourcesContent":["import { useScorecardConfig, useScorecardMeta } from \"../components\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { getDimensionsFromMeta } from \"../utils/analytics\";\nimport { useAlert, useDataQuery } from \"@dhis2/app-runtime\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport { chunk, maxBy, uniq } from \"lodash\";\nimport { sanitizeAnalyticsData } from \"../utils/data\";\nimport { useCalendar } from \"./metadata\";\nimport { queue } from \"async-es\";\nimport { asyncify, type QueueObject } from \"async\";\nimport type { ScorecardDataEngine } from \"../utils/dataEngine\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nconst query: any = {\n\tdata: {\n\t\tresource: \"analytics\",\n\t\tparams: ({\n\t\t\tperiods,\n\t\t\torgUnits,\n\t\t\tdataItems,\n\t\t}: {\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}) => {\n\t\t\treturn {\n\t\t\t\tskipMeta: true,\n\t\t\t\tdimension: [\n\t\t\t\t\t`pe:${periods.join(\";\")}`,\n\t\t\t\t\t`dx:${dataItems.join(\";\")}`,\n\t\t\t\t\t`ou:${orgUnits.join(\";\")}`,\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t},\n};\n\nexport interface ScorecardDataQueryResponse {\n\tdata: {\n\t\theaderWidth: number;\n\t\theaders: Array<{\n\t\t\tname: string;\n\t\t\thidden: boolean;\n\t\t\tmeta: boolean;\n\t\t\tcolumn: string;\n\t\t\tvalueType: string;\n\t\t}>;\n\t\trows: Array<Array<string>>;\n\t\theight: number;\n\t\twidth: number;\n\t};\n}\n\nconst chunkSize = 5;\n\nexport function useGetScorecardData(dataEngine: ScorecardDataEngine) {\n\tconst [totalRequests, setTotalRequests] = useState<number>(0);\n\tconst [noOfCompleteRequests, setNoOfCompleteRequests] = useState<number>(0);\n\tconst fetchData = async ({\n\t\tperiods,\n\t\tdataItems,\n\t\torgUnits,\n\t}: {\n\t\tperiods: string[];\n\t\torgUnits: string[];\n\t\tdataItems: string[];\n\t}) => {\n\t\tconst rawAnalyticsData = (await refetch({\n\t\t\tperiods,\n\t\t\tdataItems,\n\t\t\torgUnits,\n\t\t})) as unknown as ScorecardDataQueryResponse;\n\t\tif (!rawAnalyticsData) return [];\n\t\tconst tableData = getTableData(rawAnalyticsData);\n\t\tdataEngine.updateData(tableData);\n\t\tsetNoOfCompleteRequests((prev) => prev + 1);\n\t};\n\n\tconst { show } = useAlert(\n\t\t({ message }) => message,\n\t\t({ type }) => ({ ...type, duration: 3000 }),\n\t);\n\tconst dataFetchQueue = useRef<QueueObject<any>>(queue(asyncify(fetchData)));\n\tconst config = useScorecardConfig();\n\tconst meta = useScorecardMeta();\n\tconst calendar = useCalendar();\n\tif (!config || !meta) {\n\t\tthrow new Error(\n\t\t\t\"Invalid scorecard setup. Make sure the valid config and state props are passed.\",\n\t\t);\n\t}\n\tconst { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(\n\t\t() =>\n\t\t\tgetDimensionsFromMeta({\n\t\t\t\tmeta,\n\t\t\t}),\n\t\t[meta],\n\t);\n\n\t//We need to make sure each period has a past period\n\tconst analyticsPeriod = useMemo(() => {\n\t\tconst pastPeriods = periodsIds\n\t\t\t.map((periodId) => {\n\t\t\t\tconst pe = getAdjacentFixedPeriods({\n\t\t\t\t\tcalendar,\n\t\t\t\t\tsteps: -1,\n\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiodId,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\treturn pe.map(({ id }) => id);\n\t\t\t})\n\t\t\t.flat();\n\n\t\treturn uniq([...periodsIds, ...pastPeriods]);\n\t}, [periodsIds]);\n\n\tconst { refetch } = useDataQuery<ScorecardDataQueryResponse>(query, {\n\t\tvariables: {\n\t\t\tperiods: analyticsPeriod,\n\t\t\tdataItems: dataItemsIds,\n\t\t\torgUnits: orgUnitsIds,\n\t\t},\n\t\tlazy: true,\n\t\tonError: (error) => {\n\t\t\tsetTotalRequests(0);\n\t\t\tsetNoOfCompleteRequests(0);\n\t\t\tdataFetchQueue.current.remove(() => true);\n\t\t\tshow({\n\t\t\t\tmessage: `${i18n.t(\"Error getting scorecard data\")}: ${\n\t\t\t\t\terror.message\n\t\t\t\t}`,\n\t\t\t\ttype: { critical: true },\n\t\t\t});\n\t\t},\n\t});\n\n\tconst progress = useMemo(() => {\n\t\treturn noOfCompleteRequests / totalRequests;\n\t}, [totalRequests, noOfCompleteRequests]);\n\n\tconst getTableData = (rawAnalyticsData: ScorecardDataQueryResponse) => {\n\t\treturn sanitizeAnalyticsData(rawAnalyticsData);\n\t};\n\n\tconst initializeFetch = async () => {\n\t\tconst getTheLongestDimension = () => {\n\t\t\tconst dimensions = [\n\t\t\t\t{\n\t\t\t\t\tdimension: \"pe\",\n\t\t\t\t\tlength: analyticsPeriod.length,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdimension: \"dx\",\n\t\t\t\t\tlength: dataItemsIds.length,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdimension: \"ou\",\n\t\t\t\t\tlength: orgUnitsIds.length,\n\t\t\t\t},\n\t\t\t] as const;\n\n\t\t\treturn maxBy(dimensions, \"length\")!.dimension;\n\t\t};\n\n\t\tconst getChunkedData = async (maxItem: \"dx\" | \"pe\" | \"ou\") => {\n\t\t\tswitch (maxItem) {\n\t\t\t\tcase \"dx\":\n\t\t\t\t\tconst dataItemChunks = chunk(dataItemsIds, chunkSize);\n\t\t\t\t\tsetTotalRequests(dataItemChunks.length);\n\t\t\t\t\tfor (const dataItemChunk of dataItemChunks) {\n\t\t\t\t\t\tdataFetchQueue.current.push({\n\t\t\t\t\t\t\tperiods: analyticsPeriod,\n\t\t\t\t\t\t\tdataItems: dataItemChunk,\n\t\t\t\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pe\":\n\t\t\t\t\tconst periodChunks = chunk(analyticsPeriod, chunkSize);\n\t\t\t\t\tsetTotalRequests(periodChunks.length);\n\t\t\t\t\tfor (const periodChunk of periodChunks) {\n\t\t\t\t\t\tdataFetchQueue.current.push({\n\t\t\t\t\t\t\tperiods: periodChunk,\n\t\t\t\t\t\t\tdataItems: dataItemsIds,\n\t\t\t\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"ou\":\n\t\t\t\t\tconst orgUnitChunks = chunk(orgUnitsIds, chunkSize);\n\t\t\t\t\tsetTotalRequests(orgUnitChunks.length);\n\t\t\t\t\tfor (const orgUnitChunk of orgUnitChunks) {\n\t\t\t\t\t\tdataFetchQueue.current.push({\n\t\t\t\t\t\t\tperiods: analyticsPeriod,\n\t\t\t\t\t\t\tdataItems: dataItemsIds,\n\t\t\t\t\t\t\torgUnits: orgUnitChunk,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t\t//Here is where we need to paginate the requests.\n\t\t//First, Are there any dimensions greater than 5? if not then we can just call all the data\n\t\tsetTotalRequests(0);\n\t\tsetNoOfCompleteRequests(0);\n\t\tdataFetchQueue.current.remove(() => true);\n\t\tdataFetchQueue.current.drain(() => {\n\t\t\tdataEngine.complete();\n\t\t});\n\n\t\tdataEngine.clear();\n\t\tif (\n\t\t\tanalyticsPeriod.length <= 5 &&\n\t\t\tdataItemsIds.length <= 5 &&\n\t\t\torgUnitsIds.length <= 5\n\t\t) {\n\t\t\tsetTotalRequests(1);\n\t\t\tsetNoOfCompleteRequests(0);\n\t\t\tawait fetchData({\n\t\t\t\tperiods: analyticsPeriod,\n\t\t\t\tdataItems: dataItemsIds,\n\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t});\n\t\t\tsetNoOfCompleteRequests(1);\n\t\t\tdataEngine.complete();\n\t\t\treturn;\n\t\t}\n\t\t//If not then let's figure out how to paginate one of the\n\t\tsetNoOfCompleteRequests(0);\n\t\tconst dimensionWithMaxItems = getTheLongestDimension();\n\t\tawait getChunkedData(dimensionWithMaxItems);\n\t};\n\n\tuseEffect(() => {\n\t\tinitializeFetch();\n\t}, []);\n\n\treturn {\n\t\trawData: [],\n\t\tprogress,\n\t};\n}\n"]}
@@ -1,6 +0,0 @@
1
- function useScorecardDataEngine() {
2
- }
3
-
4
- export { useScorecardDataEngine };
5
- //# sourceMappingURL=out.js.map
6
- //# sourceMappingURL=dataEngine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/dataEngine.ts"],"names":[],"mappings":"AAAO,SAAS,yBAAyB;AAAC","sourcesContent":["export function useScorecardDataEngine() {}\n"]}
@@ -1,18 +0,0 @@
1
- import { useScorecardMeta } from '../components';
2
-
3
- function useGetDataSourceLabel() {
4
- const meta = useScorecardMeta();
5
- return (dataSource) => {
6
- if (dataSource.label) {
7
- return dataSource.label;
8
- }
9
- const itemMeta = meta?.dataItems.find(
10
- (item) => item.uid === dataSource.id
11
- );
12
- return itemMeta?.name ?? "";
13
- };
14
- }
15
-
16
- export { useGetDataSourceLabel };
17
- //# sourceMappingURL=out.js.map
18
- //# sourceMappingURL=dataItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/dataItem.ts"],"names":[],"mappings":"AAAA,SAAS,wBAAwB;AAI1B,SAAS,wBAAwB;AACvC,QAAM,OAAO,iBAAiB;AAC9B,SAAO,CAAC,eAAoC;AAC3C,QAAI,WAAW,OAAO;AACrB,aAAO,WAAW;AAAA,IACnB;AACA,UAAM,WAAiC,MAAM,UAAU;AAAA,MACtD,CAAC,SAAS,KAAK,QAAQ,WAAW;AAAA,IACnC;AAEA,WAAO,UAAU,QAAQ;AAAA,EAC1B;AACD","sourcesContent":["import { useScorecardMeta } from \"../components\";\nimport type { ScorecardDataSource } from \"../schemas/config\";\nimport type { ItemMeta } from \"./metadata\";\n\nexport function useGetDataSourceLabel() {\n\tconst meta = useScorecardMeta();\n\treturn (dataSource: ScorecardDataSource) => {\n\t\tif (dataSource.label) {\n\t\t\treturn dataSource.label;\n\t\t}\n\t\tconst itemMeta: ItemMeta | undefined = meta?.dataItems.find(\n\t\t\t(item) => item.uid === dataSource.id,\n\t\t);\n\n\t\treturn itemMeta?.name ?? \"\";\n\t};\n}\n"]}
@@ -1,3 +0,0 @@
1
- export * from './dataItem';
2
- //# sourceMappingURL=out.js.map
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc","sourcesContent":["export * from \"./dataItem\";\n"]}
@@ -1,121 +0,0 @@
1
- import { useScorecardConfig, useScorecardStateSelector } from '../components';
2
- import { useAlert, useDataQuery, useConfig } from '@dhis2/app-runtime';
3
- import { useMemo, useEffect } from 'react';
4
- import { getDimensions } from '../utils/analytics';
5
- import i18n from '@dhis2/d2-i18n';
6
-
7
- const query = {
8
- meta: {
9
- resource: "analytics",
10
- params: ({
11
- periods,
12
- orgUnits,
13
- dataItems
14
- }) => {
15
- return {
16
- skipData: true,
17
- hierarchyData: true,
18
- showHierarchy: true,
19
- enhancedConditions: true,
20
- includeMetadataDetails: true,
21
- dimension: [
22
- `pe:${periods.join(";")}`,
23
- `dx:${dataItems.join(";")}`,
24
- `ou:${orgUnits.join(";")}`
25
- ]
26
- };
27
- }
28
- },
29
- ouLevel: {
30
- resource: "organisationUnitLevels",
31
- params: {
32
- fields: ["id", "displayName", "level"]
33
- }
34
- }
35
- };
36
- function useGetScorecardMeta() {
37
- const config = useScorecardConfig();
38
- const { show } = useAlert(
39
- ({ message }) => message,
40
- ({ type }) => ({ ...type, duration: 3e3 })
41
- );
42
- const orgUnitSelection = useScorecardStateSelector(
43
- "orgUnitSelection"
44
- );
45
- const periodSelection = useScorecardStateSelector(
46
- "periodSelection"
47
- );
48
- const { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(
49
- () => getDimensions({
50
- config,
51
- orgUnitSelection,
52
- periodSelection
53
- }),
54
- [config, orgUnitSelection, periodSelection]
55
- );
56
- const { loading, data, refetch, called } = useDataQuery(
57
- query,
58
- {
59
- variables: {
60
- periods: periodsIds,
61
- orgUnits: orgUnitsIds,
62
- dataItems: dataItemsIds
63
- },
64
- lazy: true,
65
- onError: (error) => {
66
- show({
67
- message: `${i18n.t("Error getting scorecard data")}: ${error.message}`,
68
- type: { critical: true }
69
- });
70
- }
71
- }
72
- );
73
- const orgUnits = useMemo(() => {
74
- return data?.meta?.metaData.dimensions["ou"].map((ou) => {
75
- return {
76
- ...data?.meta?.metaData.items[ou],
77
- hierarchy: data?.meta?.metaData?.ouNameHierarchy[ou]
78
- };
79
- }).filter(Boolean) ?? [];
80
- }, [data?.meta]);
81
- const periods = useMemo(() => {
82
- return data?.meta?.metaData.dimensions["pe"].map((pe) => {
83
- return data?.meta?.metaData.items[pe];
84
- }).filter(Boolean) ?? [];
85
- }, [data?.meta]);
86
- const dataItems = useMemo(() => {
87
- return data?.meta?.metaData.dimensions["dx"].map((dx) => {
88
- return {
89
- ...data?.meta?.metaData.items[dx],
90
- uid: dx
91
- };
92
- }).filter(Boolean) ?? [];
93
- }, [data?.meta]);
94
- const orgUnitLevels = useMemo(
95
- () => data?.ouLevel?.organisationUnitLevels ?? [],
96
- [data?.ouLevel?.organisationUnitLevels]
97
- );
98
- useEffect(() => {
99
- refetch({
100
- periods: periodsIds,
101
- orgUnits: orgUnitsIds,
102
- dataItems: dataItemsIds
103
- });
104
- }, [periodSelection, orgUnitSelection]);
105
- return {
106
- loading,
107
- orgUnits,
108
- periods,
109
- dataItems,
110
- orgUnitLevels,
111
- called
112
- };
113
- }
114
- function useCalendar() {
115
- const { systemInfo } = useConfig();
116
- return systemInfo?.calendar ?? "iso8601";
117
- }
118
-
119
- export { useCalendar, useGetScorecardMeta };
120
- //# sourceMappingURL=out.js.map
121
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/metadata.ts"],"names":[],"mappings":"AAAA,SAAS,oBAAoB,iCAAiC;AAC9D,SAAS,UAAU,WAAW,oBAAoB;AAClD,SAAS,WAAW,eAAe;AACnC,SAAS,qBAAqB;AAG9B,OAAO,UAAU;AAEjB,MAAM,QAAa;AAAA,EAClB,MAAM;AAAA,IACL,UAAU;AAAA,IACV,QAAQ,CAAC;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACD,MAIM;AACL,aAAO;AAAA,QACN,UAAU;AAAA,QACV,eAAe;AAAA,QACf,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,wBAAwB;AAAA,QACxB,WAAW;AAAA,UACV,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,UACvB,MAAM,UAAU,KAAK,GAAG,CAAC;AAAA,UACzB,MAAM,SAAS,KAAK,GAAG,CAAC;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,MACP,QAAQ,CAAC,MAAM,eAAe,OAAO;AAAA,IACtC;AAAA,EACD;AACD;AA2CO,SAAS,sBAAsB;AACrC,QAAM,SAAS,mBAAmB;AAElC,QAAM,EAAE,KAAK,IAAI;AAAA,IAChB,CAAC,EAAE,QAAQ,MAAM;AAAA,IACjB,CAAC,EAAE,KAAK,OAAO,EAAE,GAAG,MAAM,UAAU,IAAK;AAAA,EAC1C;AAEA,QAAM,mBACL;AAAA,IACC;AAAA,EACD;AACD,QAAM,kBACL;AAAA,IACC;AAAA,EACD;AAED,QAAM,EAAE,cAAc,aAAa,WAAW,IAAI;AAAA,IACjD,MACC,cAAc;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACF,CAAC,QAAQ,kBAAkB,eAAe;AAAA,EAC3C;AAEA,QAAM,EAAE,SAAS,MAAM,SAAS,OAAO,IAAI;AAAA,IAC1C;AAAA,IACA;AAAA,MACC,WAAW;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,WAAW;AAAA,MACZ;AAAA,MACA,MAAM;AAAA,MACN,SAAS,CAAC,UAAU;AACnB,aAAK;AAAA,UACJ,SAAS,GAAG,KAAK,EAAE,8BAA8B,CAAC,KACjD,MAAM,OACP;AAAA,UACA,MAAM,EAAE,UAAU,KAAK;AAAA,QACxB,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAEA,QAAM,WAAW,QAAQ,MAAM;AAC9B,WACC,MAAM,MAAM,SAAS,WAAW,IAAI,EAClC,IAAI,CAAC,OAAO;AACZ,aAAO;AAAA,QACN,GAAG,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,QAChC,WAAW,MAAM,MAAM,UAAU,gBAAgB,EAAE;AAAA,MACpD;AAAA,IACD,CAAC,EACA,OAAO,OAAO,KAAK,CAAC;AAAA,EAExB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,UAAU,QAAQ,MAAM;AAC7B,WACC,MAAM,MAAM,SAAS,WAAW,IAAI,EAClC,IAAI,CAAC,OAAO;AACZ,aAAO,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,IACrC,CAAC,EACA,OAAO,OAAO,KAAK,CAAC;AAAA,EAExB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,YAAY,QAAQ,MAAM;AAC/B,WACC,MAAM,MAAM,SAAS,WAAW,IAAI,EAClC,IAAI,CAAC,OAAO;AACZ,aAAO;AAAA,QACN,GAAG,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,QAChC,KAAK;AAAA,MACN;AAAA,IACD,CAAC,EACA,OAAO,OAAO,KAAK,CAAC;AAAA,EAExB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,gBAAgB;AAAA,IACrB,MAAM,MAAM,SAAS,0BAA0B,CAAC;AAAA,IAChD,CAAC,MAAM,SAAS,sBAAsB;AAAA,EACvC;AAEA,YAAU,MAAM;AACf,YAAQ;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,IACZ,CAAC;AAAA,EACF,GAAG,CAAC,iBAAiB,gBAAgB,CAAC;AAEtC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,cAAc;AAC7B,QAAM,EAAE,WAAW,IAAI,UAAU;AACjC,SACE,YAA4D,YAC7D;AAEF","sourcesContent":["import { useScorecardConfig, useScorecardStateSelector } from \"../components\";\nimport { useAlert, useConfig, useDataQuery } from \"@dhis2/app-runtime\";\nimport { useEffect, useMemo } from \"react\";\nimport { getDimensions } from \"../utils/analytics\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport type { ScorecardState } from \"../schemas/config\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nconst query: any = {\n\tmeta: {\n\t\tresource: \"analytics\",\n\t\tparams: ({\n\t\t\tperiods,\n\t\t\torgUnits,\n\t\t\tdataItems,\n\t\t}: {\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}) => {\n\t\t\treturn {\n\t\t\t\tskipData: true,\n\t\t\t\thierarchyData: true,\n\t\t\t\tshowHierarchy: true,\n\t\t\t\tenhancedConditions: true,\n\t\t\t\tincludeMetadataDetails: true,\n\t\t\t\tdimension: [\n\t\t\t\t\t`pe:${periods.join(\";\")}`,\n\t\t\t\t\t`dx:${dataItems.join(\";\")}`,\n\t\t\t\t\t`ou:${orgUnits.join(\";\")}`,\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t},\n\touLevel: {\n\t\tresource: \"organisationUnitLevels\",\n\t\tparams: {\n\t\t\tfields: [\"id\", \"displayName\", \"level\"],\n\t\t},\n\t},\n};\n\nexport type ItemMeta = {\n\tuid: string;\n\tname: string;\n\tcode?: string;\n\tdescription?: string;\n\tvalueType?: string;\n\ttotalAggregationType?: string;\n\taggregationType?: string;\n\t[key: string]: string | number | undefined;\n};\n\ntype MetaResponse = {\n\tmeta: {\n\t\tcolumns: any[];\n\t\trows: [];\n\t\theaders: [];\n\t\tmetaData: {\n\t\t\tdimensions: {\n\t\t\t\tdx: string[];\n\t\t\t\tou: string[];\n\t\t\t\tpe: string[];\n\t\t\t\tco: string[];\n\t\t\t\t[key: string]: string[];\n\t\t\t};\n\t\t\titems: {\n\t\t\t\t[key: string]: ItemMeta;\n\t\t\t};\n\t\t\touNameHierarchy: {\n\t\t\t\t[key: string]: string;\n\t\t\t};\n\t\t};\n\t};\n\touLevel: {\n\t\torganisationUnitLevels: Array<{\n\t\t\tid: string;\n\t\t\tlevel: number;\n\t\t\tdisplayName: string;\n\t\t}>;\n\t};\n};\n\nexport function useGetScorecardMeta() {\n\tconst config = useScorecardConfig();\n\n\tconst { show } = useAlert(\n\t\t({ message }) => message,\n\t\t({ type }) => ({ ...type, duration: 3000 }),\n\t);\n\n\tconst orgUnitSelection =\n\t\tuseScorecardStateSelector<ScorecardState[\"orgUnitSelection\"]>(\n\t\t\t\"orgUnitSelection\",\n\t\t);\n\tconst periodSelection =\n\t\tuseScorecardStateSelector<ScorecardState[\"periodSelection\"]>(\n\t\t\t\"periodSelection\",\n\t\t);\n\n\tconst { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(\n\t\t() =>\n\t\t\tgetDimensions({\n\t\t\t\tconfig,\n\t\t\t\torgUnitSelection,\n\t\t\t\tperiodSelection,\n\t\t\t}),\n\t\t[config, orgUnitSelection, periodSelection],\n\t);\n\n\tconst { loading, data, refetch, called } = useDataQuery<MetaResponse>(\n\t\tquery,\n\t\t{\n\t\t\tvariables: {\n\t\t\t\tperiods: periodsIds,\n\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t\tdataItems: dataItemsIds,\n\t\t\t},\n\t\t\tlazy: true,\n\t\t\tonError: (error) => {\n\t\t\t\tshow({\n\t\t\t\t\tmessage: `${i18n.t(\"Error getting scorecard data\")}: ${\n\t\t\t\t\t\terror.message\n\t\t\t\t\t}`,\n\t\t\t\t\ttype: { critical: true },\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t);\n\n\tconst orgUnits = useMemo(() => {\n\t\treturn (\n\t\t\tdata?.meta?.metaData.dimensions[\"ou\"]\n\t\t\t\t.map((ou) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...data?.meta?.metaData.items[ou],\n\t\t\t\t\t\thierarchy: data?.meta?.metaData?.ouNameHierarchy[ou],\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.filter(Boolean) ?? []\n\t\t);\n\t}, [data?.meta]);\n\tconst periods = useMemo(() => {\n\t\treturn (\n\t\t\tdata?.meta?.metaData.dimensions[\"pe\"]\n\t\t\t\t.map((pe) => {\n\t\t\t\t\treturn data?.meta?.metaData.items[pe];\n\t\t\t\t})\n\t\t\t\t.filter(Boolean) ?? []\n\t\t);\n\t}, [data?.meta]);\n\tconst dataItems = useMemo(() => {\n\t\treturn (\n\t\t\tdata?.meta?.metaData.dimensions[\"dx\"]\n\t\t\t\t.map((dx) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...data?.meta?.metaData.items[dx],\n\t\t\t\t\t\tuid: dx,\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.filter(Boolean) ?? []\n\t\t);\n\t}, [data?.meta]);\n\tconst orgUnitLevels = useMemo(\n\t\t() => data?.ouLevel?.organisationUnitLevels ?? [],\n\t\t[data?.ouLevel?.organisationUnitLevels],\n\t);\n\n\tuseEffect(() => {\n\t\trefetch({\n\t\t\tperiods: periodsIds,\n\t\t\torgUnits: orgUnitsIds,\n\t\t\tdataItems: dataItemsIds,\n\t\t});\n\t}, [periodSelection, orgUnitSelection]);\n\n\treturn {\n\t\tloading,\n\t\torgUnits,\n\t\tperiods,\n\t\tdataItems,\n\t\torgUnitLevels,\n\t\tcalled,\n\t};\n}\n\nexport function useCalendar() {\n\tconst { systemInfo } = useConfig();\n\treturn (\n\t\t(systemInfo as unknown as { calendar?: SupportedCalendar })?.calendar ??\n\t\t\"iso8601\"\n\t);\n}\n"]}
@@ -1,15 +0,0 @@
1
- import { useScorecardMeta } from '../components/MetaProvider';
2
- import { useMemo } from 'react';
3
- import { sortBy, last } from 'lodash';
4
-
5
- function useLowestOrgUnitLevel() {
6
- const meta = useScorecardMeta();
7
- return useMemo(() => {
8
- const sortedOrgUnitLevels = sortBy(meta?.orgUnitLevels ?? [], "level");
9
- return last(sortedOrgUnitLevels);
10
- }, [meta?.orgUnitLevels]);
11
- }
12
-
13
- export { useLowestOrgUnitLevel };
14
- //# sourceMappingURL=out.js.map
15
- //# sourceMappingURL=orgUnit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/orgUnit.ts"],"names":[],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,eAAe;AACxB,SAAS,MAAM,cAAc;AAEtB,SAAS,wBAAwB;AACvC,QAAM,OAAO,iBAAiB;AAE9B,SAAO,QAAQ,MAAM;AACpB,UAAM,sBAAsB,OAAO,MAAM,iBAAiB,CAAC,GAAG,OAAO;AACrE,WAAO,KAAK,mBAAmB;AAAA,EAChC,GAAG,CAAC,MAAM,aAAa,CAAC;AACzB","sourcesContent":["import { useScorecardMeta } from \"../components/MetaProvider\";\nimport { useMemo } from \"react\";\nimport { last, sortBy } from \"lodash\";\n\nexport function useLowestOrgUnitLevel() {\n\tconst meta = useScorecardMeta();\n\n\treturn useMemo(() => {\n\t\tconst sortedOrgUnitLevels = sortBy(meta?.orgUnitLevels ?? [], \"level\");\n\t\treturn last(sortedOrgUnitLevels);\n\t}, [meta?.orgUnitLevels]);\n}\n"]}
@@ -1,13 +0,0 @@
1
- import { useScorecardConfig } from '../components/ConfigProvider';
2
-
3
- function usePeriodSelection() {
4
- const config = useScorecardConfig();
5
- if (!config) {
6
- return null;
7
- }
8
- config.periodSelection;
9
- }
10
-
11
- export { usePeriodSelection };
12
- //# sourceMappingURL=out.js.map
13
- //# sourceMappingURL=period.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/period.ts"],"names":[],"mappings":"AAAA,SAAS,0BAA0B;AAE5B,SAAS,qBAAqB;AACpC,QAAM,SAAS,mBAAmB;AAElC,MAAI,CAAC,QAAQ;AACZ,WAAO;AAAA,EACR;AACA,QAAM,kBAAkB,OAAO;AAChC","sourcesContent":["import { useScorecardConfig } from \"../components/ConfigProvider\";\n\nexport function usePeriodSelection() {\n\tconst config = useScorecardConfig();\n\n\tif (!config) {\n\t\treturn null;\n\t}\n\tconst periodSelection = config.periodSelection;\n}\n"]}
@@ -1,179 +0,0 @@
1
- import { getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel } from '@tanstack/react-table';
2
- import { useTableColumns } from './columns';
3
- import { useState, useMemo, useEffect } from 'react';
4
- import { useScorecardStateSelector, useScorecardMeta, useScorecardConfig } from '../components';
5
- import { getRowsFromMeta } from '../utils/data';
6
- import { isEmpty, meanBy } from 'lodash';
7
- import { getAverageValue } from '../utils/columns';
8
- import { useScorecardData } from '../components/DataProvider';
9
-
10
- function getRowValues({
11
- data,
12
- showDataInRows,
13
- row
14
- }) {
15
- return data.filter((datum) => {
16
- if (showDataInRows) {
17
- return row.dataHolder.dataSources.map(({ id }) => id).includes(datum.dx);
18
- }
19
- return datum.ou === row.orgUnit.uid;
20
- });
21
- }
22
- function filterRows({
23
- rows,
24
- emptyRows,
25
- dataEngine,
26
- showDataInRows,
27
- averageDisplayType,
28
- meta
29
- }) {
30
- if (!dataEngine.isDone) {
31
- return [];
32
- }
33
- const hiddenRows = [];
34
- const rowsWithDataValues = rows.map((row, index) => {
35
- const values = getRowValues({
36
- row,
37
- data: dataEngine.data,
38
- showDataInRows
39
- });
40
- const average = meanBy(values, ({ value }) => parseFloat(value));
41
- return {
42
- row,
43
- index,
44
- values,
45
- average
46
- };
47
- });
48
- if (!emptyRows) {
49
- const emptyRows2 = rowsWithDataValues.filter(({ values }) => isEmpty(values)).map(({ index }) => index);
50
- hiddenRows.push(...emptyRows2);
51
- }
52
- if (averageDisplayType !== "ALL") {
53
- const average = getAverageValue({
54
- dataValues: dataEngine.data,
55
- meta
56
- });
57
- if (averageDisplayType === "BELOW_AVERAGE") {
58
- const aboveAverageRows = rowsWithDataValues.filter(({ average: rowAverage }) => rowAverage > average).map(({ index }) => index);
59
- hiddenRows.push(...aboveAverageRows);
60
- } else {
61
- const belowAverageRows = rowsWithDataValues.filter(({ average: rowAverage }) => rowAverage < average).map(({ index }) => index);
62
- hiddenRows.push(...belowAverageRows);
63
- }
64
- }
65
- return hiddenRows;
66
- }
67
- function useTableRows() {
68
- const meta = useScorecardMeta();
69
- const { data: dataEngine } = useScorecardData();
70
- const showDataInRows = useScorecardStateSelector([
71
- "options",
72
- "showDataInRows"
73
- ]);
74
- const showHierarchy = useScorecardStateSelector([
75
- "options",
76
- "showHierarchy"
77
- ]);
78
- const emptyRows = useScorecardStateSelector([
79
- "options",
80
- "emptyRows"
81
- ]);
82
- const averageDisplayType = useScorecardStateSelector(["options", "averageDisplayType"]);
83
- const config = useScorecardConfig();
84
- const [hiddenRowIndexes, setHiddenRowIndexes] = useState([]);
85
- if (meta == null)
86
- return [];
87
- const rows = useMemo(() => {
88
- const rows2 = getRowsFromMeta({
89
- meta,
90
- showDataInRows,
91
- showHierarchy,
92
- config
93
- });
94
- if (isEmpty(hiddenRowIndexes)) {
95
- return rows2;
96
- }
97
- return rows2.filter((_, index) => !hiddenRowIndexes.includes(index));
98
- }, [meta, showDataInRows, showHierarchy, config, hiddenRowIndexes]);
99
- useEffect(() => {
100
- const listener = (data) => {
101
- if (data === "done") {
102
- setHiddenRowIndexes(
103
- filterRows({
104
- meta,
105
- dataEngine,
106
- showDataInRows,
107
- rows,
108
- averageDisplayType,
109
- emptyRows
110
- })
111
- );
112
- }
113
- };
114
- if (dataEngine.isDone) {
115
- setHiddenRowIndexes(
116
- filterRows({
117
- meta,
118
- dataEngine,
119
- showDataInRows,
120
- rows,
121
- averageDisplayType,
122
- emptyRows
123
- })
124
- );
125
- } else {
126
- dataEngine.addListener(listener);
127
- }
128
- return () => {
129
- dataEngine.removeListener(listener);
130
- };
131
- }, [averageDisplayType, emptyRows, showDataInRows]);
132
- return rows;
133
- }
134
- function useTableSetup() {
135
- const showAverageColumn = useScorecardStateSelector([
136
- "options",
137
- "averageColumn"
138
- ]);
139
- const showItemNumber = useScorecardStateSelector([
140
- "options",
141
- "itemNumber"
142
- ]);
143
- const [columnFilters, setColumnFilters] = useState([]);
144
- const [columnVisibility, setColumnVisibility] = useState({
145
- average: showAverageColumn,
146
- count: showItemNumber
147
- });
148
- const [pagination, setPagination] = useState({
149
- pageSize: 50,
150
- pageIndex: 0
151
- });
152
- const [sorting, setSorting] = useState([]);
153
- const columns = useTableColumns();
154
- const data = useTableRows();
155
- return {
156
- columns,
157
- data,
158
- state: {
159
- columnFilters,
160
- sorting,
161
- columnVisibility,
162
- pagination
163
- },
164
- autoResetPageIndex: true,
165
- rowCount: data.length,
166
- onColumnFiltersChange: setColumnFilters,
167
- onSortingChange: setSorting,
168
- getCoreRowModel: getCoreRowModel(),
169
- getFilteredRowModel: getFilteredRowModel(),
170
- getPaginationRowModel: getPaginationRowModel(),
171
- getSortedRowModel: getSortedRowModel(),
172
- onColumnVisibilityChange: setColumnVisibility,
173
- onPaginationChange: setPagination
174
- };
175
- }
176
-
177
- export { useTableSetup };
178
- //# sourceMappingURL=out.js.map
179
- //# sourceMappingURL=table.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/components/Scorecard/hooks/table.ts"],"names":["emptyRows","rows"],"mappings":"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","sourcesContent":["import {\n\ttype ColumnFiltersState,\n\tgetCoreRowModel,\n\tgetFilteredRowModel,\n\tgetPaginationRowModel,\n\tgetSortedRowModel,\n\ttype PaginationState,\n\ttype SortingState,\n\ttype TableOptions,\n\ttype VisibilityState,\n} from \"@tanstack/react-table\";\nimport { useTableColumns } from \"./columns\";\nimport type {\n\tScorecardTableData,\n\tScorecardViewOptions,\n} from \"../schemas/config\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n\ttype ScorecardMeta,\n\tuseScorecardConfig,\n\tuseScorecardMeta,\n\tuseScorecardStateSelector,\n} from \"../components\";\nimport { type AnalyticsData, getRowsFromMeta } from \"../utils/data\";\nimport { isEmpty, meanBy } from \"lodash\";\nimport type { ScorecardDataEngine } from \"../utils/dataEngine\";\nimport { getAverageValue } from \"../utils/columns\";\nimport { useScorecardData } from \"../components/DataProvider\";\n\nfunction getRowValues({\n\tdata,\n\tshowDataInRows,\n\trow,\n}: {\n\trow: ScorecardTableData;\n\tdata: AnalyticsData[];\n\tshowDataInRows: boolean;\n}): AnalyticsData[] {\n\treturn data.filter((datum) => {\n\t\tif (showDataInRows) {\n\t\t\treturn row\n\t\t\t\t.dataHolder!.dataSources.map(({ id }) => id)\n\t\t\t\t.includes(datum.dx!);\n\t\t}\n\t\treturn datum.ou === row.orgUnit!.uid;\n\t});\n}\n\nfunction filterRows({\n\trows,\n\temptyRows,\n\tdataEngine,\n\tshowDataInRows,\n\taverageDisplayType,\n\tmeta,\n}: {\n\temptyRows: ScorecardViewOptions[\"emptyRows\"];\n\tshowDataInRows: boolean;\n\taverageDisplayType: ScorecardViewOptions[\"averageDisplayType\"];\n\tdataEngine: ScorecardDataEngine;\n\trows: ScorecardTableData[];\n\tmeta: ScorecardMeta;\n}) {\n\tif (!dataEngine.isDone) {\n\t\treturn [];\n\t}\n\tconst hiddenRows: number[] = [];\n\tconst rowsWithDataValues = rows.map((row, index) => {\n\t\tconst values = getRowValues({\n\t\t\trow,\n\t\t\tdata: dataEngine.data,\n\t\t\tshowDataInRows,\n\t\t});\n\t\tconst average = meanBy(values, ({ value }) => parseFloat(value!));\n\t\treturn {\n\t\t\trow,\n\t\t\tindex,\n\t\t\tvalues,\n\t\t\taverage,\n\t\t};\n\t});\n\tif (!emptyRows) {\n\t\t//Filter out all e\n\t\tconst emptyRows = rowsWithDataValues\n\t\t\t.filter(({ values }) => isEmpty(values))\n\t\t\t.map(({ index }) => index);\n\t\thiddenRows.push(...emptyRows);\n\t}\n\n\tif (averageDisplayType !== \"ALL\") {\n\t\tconst average = getAverageValue({\n\t\t\tdataValues: dataEngine.data,\n\t\t\tmeta,\n\t\t});\n\t\tif (averageDisplayType === \"BELOW_AVERAGE\") {\n\t\t\tconst aboveAverageRows = rowsWithDataValues\n\t\t\t\t.filter(({ average: rowAverage }) => rowAverage > average)\n\t\t\t\t.map(({ index }) => index);\n\t\t\thiddenRows.push(...aboveAverageRows);\n\t\t} else {\n\t\t\tconst belowAverageRows = rowsWithDataValues\n\t\t\t\t.filter(({ average: rowAverage }) => rowAverage < average)\n\t\t\t\t.map(({ index }) => index);\n\t\t\thiddenRows.push(...belowAverageRows);\n\t\t}\n\t}\n\n\treturn hiddenRows;\n}\n\nfunction useTableRows(): ScorecardTableData[] {\n\tconst meta = useScorecardMeta();\n\tconst { data: dataEngine } = useScorecardData();\n\tconst showDataInRows = useScorecardStateSelector<boolean>([\n\t\t\"options\",\n\t\t\"showDataInRows\",\n\t]);\n\tconst showHierarchy = useScorecardStateSelector<boolean>([\n\t\t\"options\",\n\t\t\"showHierarchy\",\n\t]);\n\tconst emptyRows = useScorecardStateSelector<boolean>([\n\t\t\"options\",\n\t\t\"emptyRows\",\n\t]);\n\tconst averageDisplayType = useScorecardStateSelector<\n\t\tScorecardViewOptions[\"averageDisplayType\"]\n\t>([\"options\", \"averageDisplayType\"]);\n\n\tconst config = useScorecardConfig();\n\n\tconst [hiddenRowIndexes, setHiddenRowIndexes] = useState<number[]>([]);\n\n\tif (meta == null) return [];\n\n\tconst rows = useMemo(() => {\n\t\tconst rows = getRowsFromMeta({\n\t\t\tmeta,\n\t\t\tshowDataInRows,\n\t\t\tshowHierarchy,\n\t\t\tconfig,\n\t\t});\n\n\t\tif (isEmpty(hiddenRowIndexes)) {\n\t\t\treturn rows;\n\t\t}\n\n\t\treturn rows.filter((_, index) => !hiddenRowIndexes.includes(index));\n\t}, [meta, showDataInRows, showHierarchy, config, hiddenRowIndexes]);\n\n\tuseEffect(() => {\n\t\tconst listener = (data: AnalyticsData[] | \"done\") => {\n\t\t\tif (data === \"done\") {\n\t\t\t\tsetHiddenRowIndexes(\n\t\t\t\t\tfilterRows({\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tdataEngine,\n\t\t\t\t\t\tshowDataInRows,\n\t\t\t\t\t\trows,\n\t\t\t\t\t\taverageDisplayType,\n\t\t\t\t\t\temptyRows,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t\tif (dataEngine.isDone) {\n\t\t\tsetHiddenRowIndexes(\n\t\t\t\tfilterRows({\n\t\t\t\t\tmeta,\n\t\t\t\t\tdataEngine,\n\t\t\t\t\tshowDataInRows,\n\t\t\t\t\trows,\n\t\t\t\t\taverageDisplayType,\n\t\t\t\t\temptyRows,\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tdataEngine.addListener(listener);\n\t\t}\n\t\treturn () => {\n\t\t\tdataEngine.removeListener(listener);\n\t\t};\n\t}, [averageDisplayType, emptyRows, showDataInRows]);\n\n\treturn rows;\n}\n\nexport function useTableSetup(): TableOptions<ScorecardTableData> {\n\tconst showAverageColumn = useScorecardStateSelector<boolean>([\n\t\t\"options\",\n\t\t\"averageColumn\",\n\t]);\n\tconst showItemNumber = useScorecardStateSelector<boolean>([\n\t\t\"options\",\n\t\t\"itemNumber\",\n\t]);\n\tconst [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\tconst [columnVisibility, setColumnVisibility] = useState<VisibilityState>({\n\t\taverage: showAverageColumn,\n\t\tcount: showItemNumber,\n\t});\n\tconst [pagination, setPagination] = useState<PaginationState>({\n\t\tpageSize: 50,\n\t\tpageIndex: 0,\n\t});\n\n\tconst [sorting, setSorting] = useState<SortingState>([]);\n\tconst columns = useTableColumns();\n\tconst data = useTableRows();\n\n\treturn {\n\t\tcolumns,\n\t\tdata,\n\t\tstate: {\n\t\t\tcolumnFilters,\n\t\t\tsorting,\n\t\t\tcolumnVisibility,\n\t\t\tpagination,\n\t\t},\n\t\tautoResetPageIndex: true,\n\t\trowCount: data.length,\n\t\tonColumnFiltersChange: setColumnFilters,\n\t\tonSortingChange: setSorting,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetFilteredRowModel: getFilteredRowModel(),\n\t\tgetPaginationRowModel: getPaginationRowModel(),\n\t\tgetSortedRowModel: getSortedRowModel(),\n\t\tonColumnVisibilityChange: setColumnVisibility,\n\t\tonPaginationChange: setPagination,\n\t};\n}\n"]}