@hisptz/dhis2-analytics 2.0.13 → 2.0.15

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 (387) hide show
  1. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +1 -1
  2. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
  3. package/dist/components/Map/utils/map.js +1 -1
  4. package/dist/components/Map/utils/map.js.map +1 -1
  5. package/dist/components/Scorecard/Scorecard.js +22 -0
  6. package/dist/components/Scorecard/Scorecard.js.map +1 -0
  7. package/dist/components/Scorecard/Scorecard.stories.js +1188 -0
  8. package/dist/components/Scorecard/Scorecard.stories.js.map +1 -0
  9. package/dist/components/Scorecard/components/ConfigProvider.js +17 -0
  10. package/dist/components/Scorecard/components/ConfigProvider.js.map +1 -0
  11. package/dist/components/Scorecard/components/DataProvider.js +39 -0
  12. package/dist/components/Scorecard/components/DataProvider.js.map +1 -0
  13. package/dist/components/Scorecard/components/MetaProvider.js +45 -0
  14. package/dist/components/Scorecard/components/MetaProvider.js.map +1 -0
  15. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js +29 -0
  16. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +1 -0
  17. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js +30 -0
  18. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +1 -0
  19. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js +62 -0
  20. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +1 -0
  21. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js +14 -0
  22. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js.map +1 -0
  23. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js +77 -0
  24. package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -0
  25. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js +42 -0
  26. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +1 -0
  27. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css +11 -0
  28. package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css.map +1 -0
  29. package/dist/components/Scorecard/components/ScorecardTable/components/AverageCell.js +102 -0
  30. package/dist/components/Scorecard/components/ScorecardTable/components/AverageCell.js.map +1 -0
  31. package/dist/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js +24 -0
  32. package/dist/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js.map +1 -0
  33. package/dist/components/Scorecard/components/ScorecardTable/components/DataContainer.js +27 -0
  34. package/dist/components/Scorecard/components/ScorecardTable/components/DataContainer.js.map +1 -0
  35. package/dist/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js +50 -0
  36. package/dist/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js.map +1 -0
  37. package/dist/components/Scorecard/components/ScorecardTable/components/DataRow.js +50 -0
  38. package/dist/components/Scorecard/components/ScorecardTable/components/DataRow.js.map +1 -0
  39. package/dist/components/Scorecard/components/ScorecardTable/components/DataValue.js +66 -0
  40. package/dist/components/Scorecard/components/ScorecardTable/components/DataValue.js.map +1 -0
  41. package/dist/components/Scorecard/components/ScorecardTable/components/DraggableCell.js +47 -0
  42. package/dist/components/Scorecard/components/ScorecardTable/components/DraggableCell.js.map +1 -0
  43. package/dist/components/Scorecard/components/ScorecardTable/components/DroppableCell.js +38 -0
  44. package/dist/components/Scorecard/components/ScorecardTable/components/DroppableCell.js.map +1 -0
  45. package/dist/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js +12 -0
  46. package/dist/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js.map +1 -0
  47. package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +56 -0
  48. package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -0
  49. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js +152 -0
  50. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -0
  51. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js +58 -0
  52. package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -0
  53. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedCell.js +100 -0
  54. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedCell.js.map +1 -0
  55. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js +95 -0
  56. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js.map +1 -0
  57. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js +45 -0
  58. package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js.map +1 -0
  59. package/dist/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js +20 -0
  60. package/dist/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js.map +1 -0
  61. package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js +98 -0
  62. package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js.map +1 -0
  63. package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js +38 -0
  64. package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js.map +1 -0
  65. package/dist/components/Scorecard/components/ScorecardTable/components/TableBody.js +15 -0
  66. package/dist/components/Scorecard/components/ScorecardTable/components/TableBody.js.map +1 -0
  67. package/dist/components/Scorecard/components/ScorecardTable/components/TableFoot.js +28 -0
  68. package/dist/components/Scorecard/components/ScorecardTable/components/TableFoot.js.map +1 -0
  69. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js +20 -0
  70. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js.map +1 -0
  71. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css +12 -0
  72. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css.map +1 -0
  73. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +40 -0
  74. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -0
  75. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +62 -0
  76. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -0
  77. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js +16 -0
  78. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +1 -0
  79. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js +37 -0
  80. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -0
  81. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js +49 -0
  82. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -0
  83. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +63 -0
  84. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -0
  85. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js +24 -0
  86. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +1 -0
  87. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js +14 -0
  88. package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js.map +1 -0
  89. package/dist/components/Scorecard/components/ScorecardTable/index.js +14 -0
  90. package/dist/components/Scorecard/components/ScorecardTable/index.js.map +1 -0
  91. package/dist/components/Scorecard/components/StateProvider.js +26 -0
  92. package/dist/components/Scorecard/components/StateProvider.js.map +1 -0
  93. package/dist/components/Scorecard/components/StateSetProvider.js +17 -0
  94. package/dist/components/Scorecard/components/StateSetProvider.js.map +1 -0
  95. package/dist/components/Scorecard/components/TableStateProvider.js +26 -0
  96. package/dist/components/Scorecard/components/TableStateProvider.js.map +1 -0
  97. package/dist/components/Scorecard/hooks/average.js +50 -0
  98. package/dist/components/Scorecard/hooks/average.js.map +1 -0
  99. package/dist/components/Scorecard/hooks/cellData.js +36 -0
  100. package/dist/components/Scorecard/hooks/cellData.js.map +1 -0
  101. package/dist/components/Scorecard/hooks/columns.js +150 -0
  102. package/dist/components/Scorecard/hooks/columns.js.map +1 -0
  103. package/dist/components/Scorecard/hooks/data.js +97 -0
  104. package/dist/components/Scorecard/hooks/data.js.map +1 -0
  105. package/dist/components/Scorecard/hooks/metadata.js +95 -0
  106. package/dist/components/Scorecard/hooks/metadata.js.map +1 -0
  107. package/dist/components/Scorecard/hooks/orgUnit.js +17 -0
  108. package/dist/components/Scorecard/hooks/orgUnit.js.map +1 -0
  109. package/dist/components/Scorecard/hooks/period.js +15 -0
  110. package/dist/components/Scorecard/hooks/period.js.map +1 -0
  111. package/dist/components/Scorecard/hooks/table.js +40 -0
  112. package/dist/components/Scorecard/hooks/table.js.map +1 -0
  113. package/dist/components/Scorecard/index.js +21 -0
  114. package/dist/components/Scorecard/index.js.map +1 -0
  115. package/dist/components/Scorecard/schemas/config.js +181 -0
  116. package/dist/components/Scorecard/schemas/config.js.map +1 -0
  117. package/dist/components/Scorecard/utils/analytics.js +27 -0
  118. package/dist/components/Scorecard/utils/analytics.js.map +1 -0
  119. package/dist/components/Scorecard/utils/columns.js +331 -0
  120. package/dist/components/Scorecard/utils/columns.js.map +1 -0
  121. package/dist/components/Scorecard/utils/data.js +147 -0
  122. package/dist/components/Scorecard/utils/data.js.map +1 -0
  123. package/dist/components/Scorecard/utils/dataSources.js +16 -0
  124. package/dist/components/Scorecard/utils/dataSources.js.map +1 -0
  125. package/dist/components/Scorecard/utils/engine.js +20 -0
  126. package/dist/components/Scorecard/utils/engine.js.map +1 -0
  127. package/dist/components/Scorecard/utils/legends.js +118 -0
  128. package/dist/components/Scorecard/utils/legends.js.map +1 -0
  129. package/dist/components/Scorecard/utils/orgUnits.js +40 -0
  130. package/dist/components/Scorecard/utils/orgUnits.js.map +1 -0
  131. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +1 -1
  132. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
  133. package/dist/esm/components/Map/utils/map.js +1 -1
  134. package/dist/esm/components/Map/utils/map.js.map +1 -1
  135. package/dist/esm/components/Scorecard/Scorecard.js +20 -0
  136. package/dist/esm/components/Scorecard/Scorecard.js.map +1 -0
  137. package/dist/esm/components/Scorecard/Scorecard.stories.js +1178 -0
  138. package/dist/esm/components/Scorecard/Scorecard.stories.js.map +1 -0
  139. package/dist/esm/components/Scorecard/components/ConfigProvider.js +14 -0
  140. package/dist/esm/components/Scorecard/components/ConfigProvider.js.map +1 -0
  141. package/dist/esm/components/Scorecard/components/DataProvider.js +36 -0
  142. package/dist/esm/components/Scorecard/components/DataProvider.js.map +1 -0
  143. package/dist/esm/components/Scorecard/components/MetaProvider.js +42 -0
  144. package/dist/esm/components/Scorecard/components/MetaProvider.js.map +1 -0
  145. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js +23 -0
  146. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +1 -0
  147. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js +27 -0
  148. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +1 -0
  149. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js +55 -0
  150. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +1 -0
  151. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js +3 -0
  152. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js.map +1 -0
  153. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js +75 -0
  154. package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -0
  155. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js +40 -0
  156. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +1 -0
  157. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css +11 -0
  158. package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css.map +1 -0
  159. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageCell.js +98 -0
  160. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageCell.js.map +1 -0
  161. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js +22 -0
  162. package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js.map +1 -0
  163. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataContainer.js +25 -0
  164. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataContainer.js.map +1 -0
  165. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js +48 -0
  166. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js.map +1 -0
  167. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataRow.js +44 -0
  168. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataRow.js.map +1 -0
  169. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataValue.js +64 -0
  170. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataValue.js.map +1 -0
  171. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DraggableCell.js +45 -0
  172. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DraggableCell.js.map +1 -0
  173. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DroppableCell.js +36 -0
  174. package/dist/esm/components/Scorecard/components/ScorecardTable/components/DroppableCell.js.map +1 -0
  175. package/dist/esm/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js +10 -0
  176. package/dist/esm/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js.map +1 -0
  177. package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +54 -0
  178. package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -0
  179. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js +146 -0
  180. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -0
  181. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js +52 -0
  182. package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -0
  183. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedCell.js +94 -0
  184. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedCell.js.map +1 -0
  185. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js +93 -0
  186. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js.map +1 -0
  187. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js +43 -0
  188. package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js.map +1 -0
  189. package/dist/esm/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js +14 -0
  190. package/dist/esm/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js.map +1 -0
  191. package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js +96 -0
  192. package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js.map +1 -0
  193. package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js +36 -0
  194. package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js.map +1 -0
  195. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableBody.js +13 -0
  196. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableBody.js.map +1 -0
  197. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableFoot.js +26 -0
  198. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableFoot.js.map +1 -0
  199. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js +18 -0
  200. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js.map +1 -0
  201. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css +12 -0
  202. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css.map +1 -0
  203. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +33 -0
  204. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -0
  205. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +54 -0
  206. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -0
  207. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js +14 -0
  208. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +1 -0
  209. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js +31 -0
  210. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -0
  211. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js +42 -0
  212. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -0
  213. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +56 -0
  214. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -0
  215. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js +22 -0
  216. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +1 -0
  217. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js +3 -0
  218. package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js.map +1 -0
  219. package/dist/esm/components/Scorecard/components/ScorecardTable/index.js +3 -0
  220. package/dist/esm/components/Scorecard/components/ScorecardTable/index.js.map +1 -0
  221. package/dist/esm/components/Scorecard/components/StateProvider.js +23 -0
  222. package/dist/esm/components/Scorecard/components/StateProvider.js.map +1 -0
  223. package/dist/esm/components/Scorecard/components/StateSetProvider.js +14 -0
  224. package/dist/esm/components/Scorecard/components/StateSetProvider.js.map +1 -0
  225. package/dist/esm/components/Scorecard/components/TableStateProvider.js +23 -0
  226. package/dist/esm/components/Scorecard/components/TableStateProvider.js.map +1 -0
  227. package/dist/esm/components/Scorecard/hooks/average.js +48 -0
  228. package/dist/esm/components/Scorecard/hooks/average.js.map +1 -0
  229. package/dist/esm/components/Scorecard/hooks/cellData.js +34 -0
  230. package/dist/esm/components/Scorecard/hooks/cellData.js.map +1 -0
  231. package/dist/esm/components/Scorecard/hooks/columns.js +147 -0
  232. package/dist/esm/components/Scorecard/hooks/columns.js.map +1 -0
  233. package/dist/esm/components/Scorecard/hooks/data.js +95 -0
  234. package/dist/esm/components/Scorecard/hooks/data.js.map +1 -0
  235. package/dist/esm/components/Scorecard/hooks/metadata.js +92 -0
  236. package/dist/esm/components/Scorecard/hooks/metadata.js.map +1 -0
  237. package/dist/esm/components/Scorecard/hooks/orgUnit.js +15 -0
  238. package/dist/esm/components/Scorecard/hooks/orgUnit.js.map +1 -0
  239. package/dist/esm/components/Scorecard/hooks/period.js +13 -0
  240. package/dist/esm/components/Scorecard/hooks/period.js.map +1 -0
  241. package/dist/esm/components/Scorecard/hooks/table.js +38 -0
  242. package/dist/esm/components/Scorecard/hooks/table.js.map +1 -0
  243. package/dist/esm/components/Scorecard/index.js +4 -0
  244. package/dist/esm/components/Scorecard/index.js.map +1 -0
  245. package/dist/esm/components/Scorecard/schemas/config.js +163 -0
  246. package/dist/esm/components/Scorecard/schemas/config.js.map +1 -0
  247. package/dist/esm/components/Scorecard/utils/analytics.js +25 -0
  248. package/dist/esm/components/Scorecard/utils/analytics.js.map +1 -0
  249. package/dist/esm/components/Scorecard/utils/columns.js +326 -0
  250. package/dist/esm/components/Scorecard/utils/columns.js.map +1 -0
  251. package/dist/esm/components/Scorecard/utils/data.js +144 -0
  252. package/dist/esm/components/Scorecard/utils/data.js.map +1 -0
  253. package/dist/esm/components/Scorecard/utils/dataSources.js +13 -0
  254. package/dist/esm/components/Scorecard/utils/dataSources.js.map +1 -0
  255. package/dist/esm/components/Scorecard/utils/engine.js +18 -0
  256. package/dist/esm/components/Scorecard/utils/engine.js.map +1 -0
  257. package/dist/esm/components/Scorecard/utils/legends.js +115 -0
  258. package/dist/esm/components/Scorecard/utils/legends.js.map +1 -0
  259. package/dist/esm/components/Scorecard/utils/orgUnits.js +37 -0
  260. package/dist/esm/components/Scorecard/utils/orgUnits.js.map +1 -0
  261. package/dist/esm/index.js +1 -0
  262. package/dist/esm/index.js.map +1 -1
  263. package/dist/index.js +7 -0
  264. package/dist/index.js.map +1 -1
  265. package/dist/types/components/Scorecard/Scorecard.d.ts +10 -0
  266. package/dist/types/components/Scorecard/Scorecard.d.ts.map +1 -0
  267. package/dist/types/components/Scorecard/components/ConfigProvider.d.ts +125 -0
  268. package/dist/types/components/Scorecard/components/ConfigProvider.d.ts.map +1 -0
  269. package/dist/types/components/Scorecard/components/DataProvider.d.ts +13 -0
  270. package/dist/types/components/Scorecard/components/DataProvider.d.ts.map +1 -0
  271. package/dist/types/components/Scorecard/components/MetaProvider.d.ts +18 -0
  272. package/dist/types/components/Scorecard/components/MetaProvider.d.ts.map +1 -0
  273. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.d.ts +6 -0
  274. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.d.ts.map +1 -0
  275. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.d.ts +12 -0
  276. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.d.ts.map +1 -0
  277. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.d.ts +9 -0
  278. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.d.ts.map +1 -0
  279. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.d.ts +2 -0
  280. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.d.ts.map +1 -0
  281. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.d.ts +6 -0
  282. package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.d.ts.map +1 -0
  283. package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts +2 -0
  284. package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts.map +1 -0
  285. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageCell.d.ts +19 -0
  286. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageCell.d.ts.map +1 -0
  287. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.d.ts +4 -0
  288. package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.d.ts.map +1 -0
  289. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataContainer.d.ts +7 -0
  290. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataContainer.d.ts.map +1 -0
  291. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataFooterCell.d.ts +4 -0
  292. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataFooterCell.d.ts.map +1 -0
  293. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataRow.d.ts +8 -0
  294. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataRow.d.ts.map +1 -0
  295. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataValue.d.ts +6 -0
  296. package/dist/types/components/Scorecard/components/ScorecardTable/components/DataValue.d.ts.map +1 -0
  297. package/dist/types/components/Scorecard/components/ScorecardTable/components/DraggableCell.d.ts +8 -0
  298. package/dist/types/components/Scorecard/components/ScorecardTable/components/DraggableCell.d.ts.map +1 -0
  299. package/dist/types/components/Scorecard/components/ScorecardTable/components/DroppableCell.d.ts +7 -0
  300. package/dist/types/components/Scorecard/components/ScorecardTable/components/DroppableCell.d.ts.map +1 -0
  301. package/dist/types/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.d.ts +4 -0
  302. package/dist/types/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.d.ts.map +1 -0
  303. package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts +7 -0
  304. package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts.map +1 -0
  305. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts +15 -0
  306. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts.map +1 -0
  307. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.d.ts +13 -0
  308. package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.d.ts.map +1 -0
  309. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedCell.d.ts +19 -0
  310. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedCell.d.ts.map +1 -0
  311. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.d.ts +14 -0
  312. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.d.ts.map +1 -0
  313. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.d.ts +6 -0
  314. package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.d.ts.map +1 -0
  315. package/dist/types/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.d.ts +4 -0
  316. package/dist/types/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.d.ts.map +1 -0
  317. package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataCell.d.ts +14 -0
  318. package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataCell.d.ts.map +1 -0
  319. package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.d.ts +6 -0
  320. package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.d.ts.map +1 -0
  321. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableBody.d.ts +2 -0
  322. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableBody.d.ts.map +1 -0
  323. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableFoot.d.ts +2 -0
  324. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableFoot.d.ts.map +1 -0
  325. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.d.ts +2 -0
  326. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.d.ts.map +1 -0
  327. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts +4 -0
  328. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts.map +1 -0
  329. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts +5 -0
  330. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts.map +1 -0
  331. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.d.ts +4 -0
  332. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.d.ts.map +1 -0
  333. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts +7 -0
  334. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts.map +1 -0
  335. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts +6 -0
  336. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts.map +1 -0
  337. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts +7 -0
  338. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts.map +1 -0
  339. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.d.ts +7 -0
  340. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.d.ts.map +1 -0
  341. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/index.d.ts +2 -0
  342. package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/index.d.ts.map +1 -0
  343. package/dist/types/components/Scorecard/components/ScorecardTable/index.d.ts +2 -0
  344. package/dist/types/components/Scorecard/components/ScorecardTable/index.d.ts.map +1 -0
  345. package/dist/types/components/Scorecard/components/StateProvider.d.ts +41 -0
  346. package/dist/types/components/Scorecard/components/StateProvider.d.ts.map +1 -0
  347. package/dist/types/components/Scorecard/components/StateSetProvider.d.ts +9 -0
  348. package/dist/types/components/Scorecard/components/StateSetProvider.d.ts.map +1 -0
  349. package/dist/types/components/Scorecard/components/TableStateProvider.d.ts +55 -0
  350. package/dist/types/components/Scorecard/components/TableStateProvider.d.ts.map +1 -0
  351. package/dist/types/components/Scorecard/hooks/average.d.ts +14 -0
  352. package/dist/types/components/Scorecard/hooks/average.d.ts.map +1 -0
  353. package/dist/types/components/Scorecard/hooks/cellData.d.ts +18 -0
  354. package/dist/types/components/Scorecard/hooks/cellData.d.ts.map +1 -0
  355. package/dist/types/components/Scorecard/hooks/columns.d.ts +54 -0
  356. package/dist/types/components/Scorecard/hooks/columns.d.ts.map +1 -0
  357. package/dist/types/components/Scorecard/hooks/data.d.ts +70 -0
  358. package/dist/types/components/Scorecard/hooks/data.d.ts.map +1 -0
  359. package/dist/types/components/Scorecard/hooks/metadata.d.ts +34 -0
  360. package/dist/types/components/Scorecard/hooks/metadata.d.ts.map +1 -0
  361. package/dist/types/components/Scorecard/hooks/orgUnit.d.ts +5 -0
  362. package/dist/types/components/Scorecard/hooks/orgUnit.d.ts.map +1 -0
  363. package/dist/types/components/Scorecard/hooks/period.d.ts +2 -0
  364. package/dist/types/components/Scorecard/hooks/period.d.ts.map +1 -0
  365. package/dist/types/components/Scorecard/hooks/table.d.ts +4 -0
  366. package/dist/types/components/Scorecard/hooks/table.d.ts.map +1 -0
  367. package/dist/types/components/Scorecard/index.d.ts +3 -0
  368. package/dist/types/components/Scorecard/index.d.ts.map +1 -0
  369. package/dist/types/components/Scorecard/schemas/config.d.ts +2522 -0
  370. package/dist/types/components/Scorecard/schemas/config.d.ts.map +1 -0
  371. package/dist/types/components/Scorecard/utils/analytics.d.ts +10 -0
  372. package/dist/types/components/Scorecard/utils/analytics.d.ts.map +1 -0
  373. package/dist/types/components/Scorecard/utils/columns.d.ts +71 -0
  374. package/dist/types/components/Scorecard/utils/columns.d.ts.map +1 -0
  375. package/dist/types/components/Scorecard/utils/data.d.ts +16 -0
  376. package/dist/types/components/Scorecard/utils/data.d.ts.map +1 -0
  377. package/dist/types/components/Scorecard/utils/dataSources.d.ts +35 -0
  378. package/dist/types/components/Scorecard/utils/dataSources.d.ts.map +1 -0
  379. package/dist/types/components/Scorecard/utils/engine.d.ts +14 -0
  380. package/dist/types/components/Scorecard/utils/engine.d.ts.map +1 -0
  381. package/dist/types/components/Scorecard/utils/legends.d.ts +22 -0
  382. package/dist/types/components/Scorecard/utils/legends.d.ts.map +1 -0
  383. package/dist/types/components/Scorecard/utils/orgUnits.d.ts +7 -0
  384. package/dist/types/components/Scorecard/utils/orgUnits.d.ts.map +1 -0
  385. package/dist/types/index.d.ts +1 -0
  386. package/dist/types/index.d.ts.map +1 -1
  387. package/package.json +8 -1
@@ -0,0 +1,25 @@
1
+ import { getDataSourcesFromGroups } from './dataSources';
2
+ import { getOrgUnitsForAnalytics } from './orgUnits';
3
+
4
+ function getDimensions({
5
+ config,
6
+ state
7
+ }) {
8
+ const dataItemObjects = getDataSourcesFromGroups(
9
+ config?.dataSelection?.dataGroups ?? []
10
+ );
11
+ const dataItemsIds = dataItemObjects?.map((item) => item?.id);
12
+ const orgUnitsIds = getOrgUnitsForAnalytics(
13
+ state?.orgUnitSelection ?? config?.orgUnitSelection
14
+ );
15
+ const periodsIds = state.periodSelection.periods.map(({ id }) => id);
16
+ return {
17
+ dataItemsIds,
18
+ orgUnitsIds,
19
+ periodsIds
20
+ };
21
+ }
22
+
23
+ export { getDimensions };
24
+ //# sourceMappingURL=out.js.map
25
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/Scorecard/utils/analytics.ts"],"names":[],"mappings":"AACA,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AAEjC,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AACD,GAGG;AACF,QAAM,kBAAkB;AAAA,IACvB,QAAQ,eAAe,cAAc,CAAC;AAAA,EACvC;AAEA,QAAM,eAAe,iBAAiB,IAAI,CAAC,SAAS,MAAM,EAAE;AAC5D,QAAM,cAAc;AAAA,IACnB,OAAO,oBAAoB,QAAQ;AAAA,EACpC;AACA,QAAM,aAAa,MAAM,gBAAgB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;AAEnE,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\nimport { getDataSourcesFromGroups } from \"./dataSources\";\nimport { getOrgUnitsForAnalytics } from \"./orgUnits\";\n\nexport function getDimensions({\n\tconfig,\n\tstate,\n}: {\n\tconfig: ScorecardConfig;\n\tstate: ScorecardState;\n}) {\n\tconst dataItemObjects = getDataSourcesFromGroups(\n\t\tconfig?.dataSelection?.dataGroups ?? [],\n\t);\n\n\tconst dataItemsIds = dataItemObjects?.map((item) => item?.id);\n\tconst orgUnitsIds = getOrgUnitsForAnalytics(\n\t\tstate?.orgUnitSelection ?? config?.orgUnitSelection,\n\t);\n\tconst periodsIds = state.periodSelection.periods.map(({ id }) => id);\n\n\treturn {\n\t\tdataItemsIds,\n\t\torgUnitsIds,\n\t\tperiodsIds,\n\t};\n}\n"]}
@@ -0,0 +1,326 @@
1
+ import { createColumnHelper } from '@tanstack/react-table';
2
+ import { sum, head } from 'lodash';
3
+ import { DataContainer } from '../components/ScorecardTable/components/DataContainer';
4
+ import { DataHeaderCell } from '../components/ScorecardTable/components/TableHeader/components/DataHeaderCell';
5
+ import { getAdjacentFixedPeriods, createFixedPeriodFromPeriodId } from '@dhis2/multi-calendar-dates';
6
+ import { AverageCell } from '../components/ScorecardTable/components/AverageCell';
7
+ import { AverageHeaderCell } from '../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell';
8
+ import { DataFooterCell } from '../components/ScorecardTable/components/DataFooterCell';
9
+ import { AverageFooterCell } from '../components/ScorecardTable/components/AverageFooterCell';
10
+
11
+ const columnHelper = createColumnHelper();
12
+ function sortingFunction(rowA, rowB, columnId) {
13
+ const dataA = rowA.getValue(columnId);
14
+ const dataB = rowB.getValue(columnId);
15
+ const valueA = head(dataA.dataSources)?.data.current ?? 0;
16
+ const valueB = head(dataB.dataSources)?.data.current ?? 0;
17
+ if (valueA === valueB) {
18
+ return 0;
19
+ }
20
+ return valueA > valueB ? 1 : -1;
21
+ }
22
+ function getAverageValue({
23
+ dataValues,
24
+ meta
25
+ }) {
26
+ const currentPeriodValues = dataValues.filter(({ pe }) => {
27
+ return !!meta.periods.find(({ uid }) => uid === pe);
28
+ });
29
+ const values = currentPeriodValues.map(({ value }) => value ? +value : 0);
30
+ return Math.round(sum(values) / values.length * 100) / 100;
31
+ }
32
+ function getValues({
33
+ values,
34
+ currentPeriod,
35
+ previousPeriod
36
+ }) {
37
+ const currentValueData = values.find(({ pe }) => {
38
+ return pe === currentPeriod;
39
+ });
40
+ const previousValueData = values.find(({ pe }) => {
41
+ return pe === previousPeriod;
42
+ });
43
+ const previousValue = parseFloat(previousValueData?.value ?? "");
44
+ const currentValue = parseFloat(currentValueData?.value ?? "");
45
+ return {
46
+ previous: isNaN(previousValue) ? void 0 : previousValue,
47
+ current: isNaN(currentValue) ? void 0 : currentValue
48
+ };
49
+ }
50
+ function getOrgUnitColumnHeaders({
51
+ meta,
52
+ calendar
53
+ }) {
54
+ const orgUnits = meta.orgUnits ?? [];
55
+ const periods = meta.periods ?? [];
56
+ return orgUnits.map((orgUnit) => {
57
+ return columnHelper.group({
58
+ id: orgUnit.uid,
59
+ header: DataHeaderCell,
60
+ meta: {
61
+ label: orgUnit.name
62
+ },
63
+ columns: periods.map(
64
+ ({ name, uid }) => columnHelper.accessor(
65
+ (rowData) => {
66
+ const currentPeriod = uid;
67
+ const previousPeriod = head(
68
+ getAdjacentFixedPeriods({
69
+ calendar,
70
+ period: createFixedPeriodFromPeriodId({
71
+ calendar,
72
+ periodId: currentPeriod
73
+ }),
74
+ steps: -1
75
+ })
76
+ )?.id;
77
+ const values = rowData.dataValues.filter(({ ou }) => {
78
+ return ou === orgUnit.uid;
79
+ });
80
+ const dataSources = rowData.dataHolder?.dataSources?.map(
81
+ (dataSource) => {
82
+ const dataSourceValues = values.filter(
83
+ (value) => {
84
+ return value.dx === dataSource.id;
85
+ }
86
+ );
87
+ const data = getValues({
88
+ currentPeriod,
89
+ previousPeriod,
90
+ values: dataSourceValues
91
+ });
92
+ return {
93
+ ...dataSource,
94
+ data
95
+ };
96
+ }
97
+ );
98
+ return {
99
+ ...rowData,
100
+ period: uid,
101
+ dataSources,
102
+ orgUnit
103
+ };
104
+ },
105
+ {
106
+ header: DataHeaderCell,
107
+ meta: {
108
+ label: name
109
+ },
110
+ cell: DataContainer,
111
+ id: `${orgUnit.uid}-${uid}`,
112
+ enableSorting: true,
113
+ sortingFn: sortingFunction,
114
+ footer: DataFooterCell
115
+ }
116
+ )
117
+ )
118
+ });
119
+ });
120
+ }
121
+ function getAverageColumn({
122
+ meta
123
+ }) {
124
+ return columnHelper.group({
125
+ id: "average-header",
126
+ header: AverageHeaderCell,
127
+ columns: [
128
+ columnHelper.accessor(
129
+ (rowData) => {
130
+ return {
131
+ ...rowData,
132
+ dataSources: rowData.dataHolder?.dataSources?.map(
133
+ (dataSource) => {
134
+ const dataValues = rowData.dataValues.filter(
135
+ ({ dx }) => dx === dataSource.id
136
+ );
137
+ return {
138
+ ...dataSource,
139
+ average: getAverageValue({
140
+ dataValues,
141
+ meta
142
+ })
143
+ };
144
+ }
145
+ ),
146
+ average: getAverageValue({
147
+ dataValues: rowData.dataValues,
148
+ meta
149
+ })
150
+ };
151
+ },
152
+ {
153
+ id: `average`,
154
+ header: () => null,
155
+ cell: AverageCell,
156
+ enableHiding: true,
157
+ footer: AverageFooterCell
158
+ }
159
+ )
160
+ ]
161
+ });
162
+ }
163
+ function getDataHolderColumn({
164
+ hasOnePeriod,
165
+ dataHolder,
166
+ periods,
167
+ calendar
168
+ }) {
169
+ const { id, dataSources } = dataHolder;
170
+ const header = dataSources.length === 1 ? head(dataSources)?.label : dataSources.reduce(
171
+ (acc, { label, id: id2 }) => `${acc} / ${label}`,
172
+ ""
173
+ );
174
+ if (hasOnePeriod) {
175
+ return columnHelper.accessor(
176
+ (rowData) => {
177
+ const currentPeriod = head(periods).uid;
178
+ const previousPeriod = head(
179
+ getAdjacentFixedPeriods({
180
+ calendar,
181
+ period: createFixedPeriodFromPeriodId({
182
+ calendar,
183
+ periodId: currentPeriod
184
+ }),
185
+ steps: -1
186
+ })
187
+ )?.id;
188
+ const dataSourceWithValues = dataSources.map((dataSource) => {
189
+ const values = rowData.dataValues.filter(({ dx }) => {
190
+ return dx === dataSource.id;
191
+ });
192
+ const data = getValues({
193
+ currentPeriod,
194
+ previousPeriod,
195
+ values
196
+ });
197
+ return {
198
+ ...dataSource,
199
+ data
200
+ };
201
+ });
202
+ return {
203
+ ...rowData,
204
+ dataSources: dataSourceWithValues,
205
+ period: head(periods)?.uid
206
+ };
207
+ },
208
+ {
209
+ header: DataHeaderCell,
210
+ meta: {
211
+ label: header
212
+ },
213
+ id: id.toString(),
214
+ cell: DataContainer,
215
+ enableSorting: true,
216
+ sortingFn: sortingFunction,
217
+ footer: DataFooterCell
218
+ }
219
+ );
220
+ }
221
+ return columnHelper.group({
222
+ id: id.toString(),
223
+ columns: periods.map(
224
+ ({ name, uid }) => columnHelper.accessor(
225
+ (rowData) => {
226
+ const currentPeriod = uid;
227
+ const previousPeriod = head(
228
+ getAdjacentFixedPeriods({
229
+ calendar,
230
+ period: createFixedPeriodFromPeriodId({
231
+ calendar,
232
+ periodId: currentPeriod
233
+ }),
234
+ steps: -1
235
+ })
236
+ )?.id;
237
+ const dataSourceWithValues = dataSources.map(
238
+ (dataSource) => {
239
+ const values = rowData.dataValues.filter(
240
+ ({ dx }) => {
241
+ return dx === dataSource.id;
242
+ }
243
+ );
244
+ const data = getValues({
245
+ currentPeriod,
246
+ previousPeriod,
247
+ values
248
+ });
249
+ return {
250
+ ...dataSource,
251
+ data
252
+ };
253
+ }
254
+ );
255
+ return {
256
+ ...rowData,
257
+ dataSources: dataSourceWithValues,
258
+ period: uid
259
+ };
260
+ },
261
+ {
262
+ header: DataHeaderCell,
263
+ meta: {
264
+ label: name
265
+ },
266
+ cell: DataContainer,
267
+ id: `${id.toString()}-${uid}`,
268
+ enableSorting: true,
269
+ sortingFn: sortingFunction,
270
+ footer: DataFooterCell
271
+ }
272
+ )
273
+ ),
274
+ meta: {
275
+ label: header
276
+ },
277
+ header: DataHeaderCell,
278
+ enableSorting: true,
279
+ sortingFn: sortingFunction
280
+ });
281
+ }
282
+ function getDataColumnHeaders({
283
+ meta,
284
+ config,
285
+ calendar
286
+ }) {
287
+ const dataGroups = config.dataSelection.dataGroups ?? [];
288
+ const hasOneGroup = dataGroups.length === 1;
289
+ const periods = meta.periods ?? [];
290
+ const hasOnePeriod = periods.length === 1;
291
+ if (hasOneGroup) {
292
+ return head(dataGroups).dataHolders.map((dataHolder) => {
293
+ return getDataHolderColumn({
294
+ hasOnePeriod,
295
+ dataHolder,
296
+ periods,
297
+ calendar
298
+ });
299
+ });
300
+ } else {
301
+ return dataGroups.map(({ title, dataHolders, id }) => {
302
+ return columnHelper.group({
303
+ id: id.toString(),
304
+ header: DataHeaderCell,
305
+ meta: {
306
+ label: title,
307
+ bold: true
308
+ },
309
+ columns: dataHolders.map((dataHolder) => {
310
+ return getDataHolderColumn({
311
+ hasOnePeriod,
312
+ dataHolder,
313
+ periods,
314
+ calendar
315
+ });
316
+ }),
317
+ enableSorting: false,
318
+ footer: () => null
319
+ });
320
+ });
321
+ }
322
+ }
323
+
324
+ export { getAverageColumn, getAverageValue, getDataColumnHeaders, getOrgUnitColumnHeaders };
325
+ //# sourceMappingURL=out.js.map
326
+ //# sourceMappingURL=columns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/Scorecard/utils/columns.ts"],"names":["id"],"mappings":"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","sourcesContent":["import type { ScorecardMeta } from \"../components/MetaProvider\";\nimport type {\n\tScorecardAnalyticsData,\n\tScorecardConfig,\n\tScorecardDataHolder,\n\tScorecardTableCellData,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\ttype Row,\n} from \"@tanstack/react-table\";\nimport { head, sum } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\nimport { DataContainer } from \"../components/ScorecardTable/components/DataContainer\";\nimport { DataHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/DataHeaderCell\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport { AverageCell } from \"../components/ScorecardTable/components/AverageCell\";\nimport { AverageHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell\";\nimport { DataFooterCell } from \"../components/ScorecardTable/components/DataFooterCell\";\nimport { AverageFooterCell } from \"../components/ScorecardTable/components/AverageFooterCell\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nfunction sortingFunction(\n\trowA: Row<ScorecardTableData>,\n\trowB: Row<ScorecardTableData>,\n\tcolumnId: string,\n) {\n\tconst dataA = rowA.getValue(columnId) as ScorecardTableCellData;\n\tconst dataB = rowB.getValue(columnId) as ScorecardTableCellData;\n\n\tconst valueA = head(dataA.dataSources)?.data.current ?? 0;\n\tconst valueB = head(dataB.dataSources)?.data.current ?? 0;\n\n\tif (valueA === valueB) {\n\t\treturn 0;\n\t}\n\n\treturn valueA > valueB ? 1 : -1;\n}\n\nexport function getAverageValue({\n\tdataValues,\n\tmeta,\n}: {\n\tdataValues: ScorecardAnalyticsData[];\n\tmeta: ScorecardMeta;\n}) {\n\tconst currentPeriodValues = dataValues.filter(({ pe }) => {\n\t\treturn !!meta.periods.find(({ uid }) => uid === pe);\n\t});\n\tconst values = currentPeriodValues.map(({ value }) => (value ? +value : 0));\n\n\treturn Math.round((sum(values) / values.length) * 100) / 100;\n}\n\nfunction getValues({\n\tvalues,\n\tcurrentPeriod,\n\tpreviousPeriod,\n}: {\n\tvalues: ScorecardAnalyticsData[];\n\tcurrentPeriod: string;\n\tpreviousPeriod?: string;\n}) {\n\tconst currentValueData = values.find(({ pe }) => {\n\t\treturn pe === currentPeriod;\n\t});\n\n\tconst previousValueData = values.find(({ pe }) => {\n\t\treturn pe === previousPeriod;\n\t});\n\n\tconst previousValue = parseFloat(previousValueData?.value ?? \"\");\n\tconst currentValue = parseFloat(currentValueData?.value ?? \"\");\n\n\treturn {\n\t\tprevious: isNaN(previousValue) ? undefined : previousValue,\n\t\tcurrent: isNaN(currentValue) ? undefined : currentValue,\n\t};\n}\n\nexport function getOrgUnitColumnHeaders({\n\tmeta,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst orgUnits = meta.orgUnits ?? [];\n\tconst periods = meta.periods ?? [];\n\treturn orgUnits.map((orgUnit) => {\n\t\treturn columnHelper.group({\n\t\t\tid: orgUnit.uid,\n\t\t\theader: DataHeaderCell,\n\t\t\tmeta: {\n\t\t\t\tlabel: orgUnit.name,\n\t\t\t},\n\t\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)?.id;\n\n\t\t\t\t\t\tconst values = rowData.dataValues.filter(({ ou }) => {\n\t\t\t\t\t\t\treturn ou === orgUnit.uid;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst dataSources =\n\t\t\t\t\t\t\trowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\t\tconst dataSourceValues = values.filter(\n\t\t\t\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\t\t\t\treturn value.dx === dataSource.id;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\t\t\tvalues: dataSourceValues,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\t\torgUnit: orgUnit,\n\t\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\t\tid: `${orgUnit.uid}-${uid}`,\n\t\t\t\t\t\tenableSorting: true,\n\t\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\t});\n}\n\nexport function getAverageColumn({\n\tmeta,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n}) {\n\treturn columnHelper.group({\n\t\tid: \"average-header\",\n\t\theader: AverageHeaderCell,\n\t\tcolumns: [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: rowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\tconst dataValues = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t\t({ dx }) => dx === dataSource.id,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\tdataValues: rowData.dataValues,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: `average`,\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tcell: AverageCell,\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tfooter: AverageFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t],\n\t});\n}\n\nfunction getDataHolderColumn({\n\thasOnePeriod,\n\tdataHolder,\n\tperiods,\n\tcalendar,\n}: {\n\thasOnePeriod: boolean;\n\tdataHolder: ScorecardDataHolder;\n\tperiods: ItemMeta[];\n\tcalendar: SupportedCalendar;\n}) {\n\tconst { id, dataSources } = dataHolder;\n\n\tconst header =\n\t\tdataSources.length === 1\n\t\t\t? head(dataSources)?.label\n\t\t\t: dataSources.reduce(\n\t\t\t\t\t(acc, { label, id }) => `${acc} / ${label}`,\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\n\tif (hasOnePeriod) {\n\t\treturn columnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tconst currentPeriod = head(periods)!.uid;\n\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t}),\n\t\t\t\t)?.id;\n\n\t\t\t\tconst dataSourceWithValues = dataSources.map((dataSource) => {\n\t\t\t\t\tconst values = rowData.dataValues.filter(({ dx }) => {\n\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\tvalues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\t...rowData,\n\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\tperiod: head(periods)?.uid,\n\t\t\t\t} as ScorecardTableCellData;\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: header,\n\t\t\t\t},\n\t\t\t\tid: id.toString(),\n\t\t\t\tcell: DataContainer,\n\t\t\t\tenableSorting: true,\n\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\tfooter: DataFooterCell,\n\t\t\t},\n\t\t);\n\t}\n\n\treturn columnHelper.group({\n\t\tid: id.toString(),\n\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)?.id;\n\t\t\t\t\tconst dataSourceWithValues = dataSources.map(\n\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\tconst values = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t({ dx }) => {\n\t\t\t\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t},\n\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\tid: `${id.toString()}-${uid}`,\n\t\t\t\t\tenableSorting: true,\n\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tmeta: {\n\t\t\tlabel: header,\n\t\t},\n\t\theader: DataHeaderCell,\n\t\tenableSorting: true,\n\t\tsortingFn: sortingFunction,\n\t});\n}\n\nexport function getDataColumnHeaders({\n\tmeta,\n\tconfig,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst dataGroups = config.dataSelection.dataGroups ?? [];\n\tconst hasOneGroup = dataGroups.length === 1;\n\tconst periods = meta.periods ?? [];\n\tconst hasOnePeriod = periods.length === 1;\n\n\tif (hasOneGroup) {\n\t\treturn head(dataGroups)!.dataHolders.map((dataHolder) => {\n\t\t\treturn getDataHolderColumn({\n\t\t\t\thasOnePeriod,\n\t\t\t\tdataHolder,\n\t\t\t\tperiods,\n\t\t\t\tcalendar,\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t}\n}\n"]}
@@ -0,0 +1,144 @@
1
+ import { fromPairs, compact, head } from 'lodash';
2
+ import { getAverageValue } from './columns';
3
+
4
+ function sanitizeAnalyticsData(data) {
5
+ const { headers, rows } = data.data;
6
+ return rows.map((row) => {
7
+ return fromPairs(
8
+ row.map((value, index) => {
9
+ const key = headers[index].name;
10
+ return [key, value];
11
+ })
12
+ );
13
+ });
14
+ }
15
+ function getTableDataFromAnalytics(data, {
16
+ meta,
17
+ state,
18
+ config
19
+ }) {
20
+ const dataInRows = state.options.showDataInRows;
21
+ const showHierarchy = state.options.showHierarchy;
22
+ const sanitizedAnalyticsData = sanitizeAnalyticsData(data);
23
+ const averageFilter = state.options.averageDisplayType;
24
+ function getOrgUnitData() {
25
+ return meta.orgUnits.map((orgUnit, i) => {
26
+ const dataValues = sanitizedAnalyticsData.filter((value) => {
27
+ return orgUnit.uid === value.ou;
28
+ });
29
+ const label = showHierarchy ? orgUnit.hierarchy.replace("/", "") ?? "" : orgUnit.name ?? "";
30
+ return {
31
+ dataValues,
32
+ label,
33
+ orgUnit
34
+ };
35
+ }).flat();
36
+ }
37
+ function getDataGroupsData(dataGroups) {
38
+ return dataGroups.map(({ dataHolders }) => {
39
+ return dataHolders.map((dataHolder) => {
40
+ const { dataSources, id } = dataHolder;
41
+ const dataItemIds = dataSources.map(({ id: id2 }) => id2);
42
+ const dataValues = sanitizedAnalyticsData.filter(
43
+ (value) => {
44
+ return dataItemIds.includes(value.dx);
45
+ }
46
+ );
47
+ const label = (dataSources.length === 1 ? head(dataSources)?.label : dataSources.reduce(
48
+ (acc, { label: label2 }) => `${acc} / ${label2}`,
49
+ ""
50
+ )) ?? "";
51
+ return {
52
+ id,
53
+ label,
54
+ dataValues,
55
+ dataHolder
56
+ };
57
+ });
58
+ }).flat();
59
+ }
60
+ if (averageFilter !== "ABOVE_AVERAGE" && averageFilter !== "BELOW_AVERAGE") {
61
+ if (dataInRows) {
62
+ const dataGroups = config.dataSelection.dataGroups;
63
+ return getDataGroupsData(dataGroups);
64
+ }
65
+ return getOrgUnitData();
66
+ }
67
+ const totalAverage = getAverageValue({
68
+ dataValues: sanitizedAnalyticsData,
69
+ meta
70
+ });
71
+ if (averageFilter === "BELOW_AVERAGE") {
72
+ if (dataInRows) {
73
+ const dataGroups = config.dataSelection.dataGroups;
74
+ return getDataGroupsData(dataGroups).filter((data2) => {
75
+ const average = getAverageValue({
76
+ meta,
77
+ dataValues: data2.dataValues
78
+ });
79
+ return average <= totalAverage;
80
+ }).map((data2, index) => ({ ...data2, count: index + 1 }));
81
+ }
82
+ return getOrgUnitData().filter((data2) => {
83
+ const average = getAverageValue({
84
+ meta,
85
+ dataValues: data2.dataValues
86
+ });
87
+ return average <= totalAverage;
88
+ }).map((data2, index) => ({ ...data2, count: index + 1 }));
89
+ } else {
90
+ if (dataInRows) {
91
+ const dataGroups = config.dataSelection.dataGroups;
92
+ return compact(
93
+ dataGroups.map(({ dataHolders }) => {
94
+ return dataHolders.map((dataHolder) => {
95
+ const { dataSources, id } = dataHolder;
96
+ const dataItemIds = dataSources.map(({ id: id2 }) => id2);
97
+ const dataValues = sanitizedAnalyticsData.filter(
98
+ (value) => {
99
+ return dataItemIds.includes(value.dx);
100
+ }
101
+ );
102
+ const label = (dataSources.length === 1 ? head(dataSources)?.label : dataSources.reduce(
103
+ (acc, { label: label2 }) => `${acc} / ${label2}`,
104
+ ""
105
+ )) ?? "";
106
+ return {
107
+ id,
108
+ label,
109
+ dataValues,
110
+ dataHolder
111
+ };
112
+ });
113
+ })
114
+ ).flat().filter((data2) => {
115
+ const average = getAverageValue({
116
+ meta,
117
+ dataValues: data2.dataValues
118
+ });
119
+ return average >= totalAverage;
120
+ }).map((data2, index) => ({ ...data2, count: index + 1 }));
121
+ }
122
+ return meta.orgUnits.map((orgUnit, i) => {
123
+ const dataValues = sanitizedAnalyticsData.filter((value) => {
124
+ return orgUnit.uid === value.ou;
125
+ });
126
+ const label = showHierarchy ? orgUnit.hierarchy.replace("/", "") ?? "" : orgUnit.name ?? "";
127
+ return {
128
+ dataValues,
129
+ label,
130
+ orgUnit
131
+ };
132
+ }).flat().filter((data2) => {
133
+ const average = getAverageValue({
134
+ meta,
135
+ dataValues: data2.dataValues
136
+ });
137
+ return average >= totalAverage;
138
+ }).map((data2, index) => ({ ...data2, count: index + 1 }));
139
+ }
140
+ }
141
+
142
+ export { getTableDataFromAnalytics, sanitizeAnalyticsData };
143
+ //# sourceMappingURL=out.js.map
144
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/Scorecard/utils/data.ts"],"names":["id","label","data"],"mappings":"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","sourcesContent":["import type { ScorecardDataQueryResponse } from \"../hooks/data\";\nimport type { ScorecardMeta } from \"../components/MetaProvider\";\nimport type {\n\tScorecardConfig,\n\tScorecardDataGroup,\n\tScorecardState,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport { compact, fromPairs, head } from \"lodash\";\nimport { getAverageValue } from \"./columns\";\n\nexport interface AnalyticsData {\n\tdx?: string;\n\tpe?: string;\n\tou?: string;\n\n\t[key: string]: string | undefined;\n}\n\nexport function sanitizeAnalyticsData(data: ScorecardDataQueryResponse) {\n\tconst { headers, rows } = data.data;\n\treturn rows.map((row) => {\n\t\treturn fromPairs(\n\t\t\trow.map((value, index) => {\n\t\t\t\tconst key = headers[index].name as \"dx\" | \"ou\" | \"pe\";\n\t\t\t\treturn [key, value];\n\t\t\t}),\n\t\t) as AnalyticsData;\n\t});\n}\n\nexport function getTableDataFromAnalytics(\n\tdata: ScorecardDataQueryResponse,\n\t{\n\t\tmeta,\n\t\tstate,\n\t\tconfig,\n\t}: { meta: ScorecardMeta; state: ScorecardState; config: ScorecardConfig },\n): ScorecardTableData[] {\n\tconst dataInRows = state.options.showDataInRows;\n\tconst showHierarchy = state.options.showHierarchy;\n\tconst sanitizedAnalyticsData = sanitizeAnalyticsData(data);\n\tconst averageFilter = state.options.averageDisplayType;\n\n\tfunction getOrgUnitData() {\n\t\treturn meta.orgUnits\n\t\t\t.map((orgUnit, i) => {\n\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter((value) => {\n\t\t\t\t\treturn orgUnit.uid === value.ou;\n\t\t\t\t});\n\n\t\t\t\tconst label = showHierarchy\n\t\t\t\t\t? orgUnit.hierarchy.replace(\"/\", \"\") ?? \"\"\n\t\t\t\t\t: orgUnit.name ?? \"\";\n\n\t\t\t\treturn {\n\t\t\t\t\tdataValues,\n\t\t\t\t\tlabel,\n\t\t\t\t\torgUnit,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.flat();\n\t}\n\n\tfunction getDataGroupsData(dataGroups: ScorecardDataGroup[]) {\n\t\treturn dataGroups\n\t\t\t.map(({ dataHolders }) => {\n\t\t\t\treturn dataHolders.map((dataHolder) => {\n\t\t\t\t\tconst { dataSources, id } = dataHolder;\n\t\t\t\t\tconst dataItemIds = dataSources.map(({ id }) => id);\n\t\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter(\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\treturn dataItemIds.includes(value.dx as string);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\t(dataSources.length === 1\n\t\t\t\t\t\t\t? head(dataSources)?.label\n\t\t\t\t\t\t\t: dataSources.reduce(\n\t\t\t\t\t\t\t\t\t(acc, { label }) => `${acc} / ${label}`,\n\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t)) ?? \"\";\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t})\n\t\t\t.flat();\n\t}\n\n\tif (\n\t\taverageFilter !== \"ABOVE_AVERAGE\" &&\n\t\taverageFilter !== \"BELOW_AVERAGE\"\n\t) {\n\t\t//No need of computing the average of each row\n\t\tif (dataInRows) {\n\t\t\t//Rows are derived from groups\n\t\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\t\treturn getDataGroupsData(dataGroups);\n\t\t}\n\t\treturn getOrgUnitData();\n\t}\n\n\tconst totalAverage = getAverageValue({\n\t\tdataValues: sanitizedAnalyticsData,\n\t\tmeta,\n\t});\n\n\tif (averageFilter === \"BELOW_AVERAGE\") {\n\t\tif (dataInRows) {\n\t\t\t//Rows are derived from groups\n\t\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\t\treturn getDataGroupsData(dataGroups)\n\t\t\t\t.filter((data) => {\n\t\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn average <= totalAverage;\n\t\t\t\t})\n\t\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t\t}\n\n\t\treturn getOrgUnitData()\n\t\t\t.filter((data) => {\n\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\tmeta,\n\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t});\n\n\t\t\t\treturn average <= totalAverage;\n\t\t\t})\n\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t} else {\n\t\tif (dataInRows) {\n\t\t\t//Rows are derived from groups\n\t\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\t\treturn compact(\n\t\t\t\tdataGroups.map(({ dataHolders }) => {\n\t\t\t\t\treturn dataHolders.map((dataHolder) => {\n\t\t\t\t\t\tconst { dataSources, id } = dataHolder;\n\t\t\t\t\t\tconst dataItemIds = dataSources.map(({ id }) => id);\n\t\t\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter(\n\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\treturn dataItemIds.includes(value.dx as string);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst label =\n\t\t\t\t\t\t\t(dataSources.length === 1\n\t\t\t\t\t\t\t\t? head(dataSources)?.label\n\t\t\t\t\t\t\t\t: dataSources.reduce(\n\t\t\t\t\t\t\t\t\t\t(acc, { label }) => `${acc} / ${label}`,\n\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t)) ?? \"\";\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t)\n\t\t\t\t.flat()\n\t\t\t\t.filter((data) => {\n\t\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn average >= totalAverage;\n\t\t\t\t})\n\t\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t\t}\n\n\t\treturn meta.orgUnits\n\t\t\t.map((orgUnit, i) => {\n\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter((value) => {\n\t\t\t\t\treturn orgUnit.uid === value.ou;\n\t\t\t\t});\n\n\t\t\t\tconst label = showHierarchy\n\t\t\t\t\t? orgUnit.hierarchy.replace(\"/\", \"\") ?? \"\"\n\t\t\t\t\t: orgUnit.name ?? \"\";\n\n\t\t\t\treturn {\n\t\t\t\t\tdataValues,\n\t\t\t\t\tlabel,\n\t\t\t\t\torgUnit,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.flat()\n\t\t\t.filter((data) => {\n\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\tmeta,\n\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t});\n\n\t\t\t\treturn average >= totalAverage;\n\t\t\t})\n\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { flattenDeep, compact } from 'lodash';
2
+
3
+ function getHoldersFromGroups(dataGroups) {
4
+ return flattenDeep(dataGroups?.map(({ dataHolders }) => dataHolders) ?? []);
5
+ }
6
+ function getDataSourcesFromGroups(dataGroups) {
7
+ const dataHolders = compact(getHoldersFromGroups(dataGroups));
8
+ return flattenDeep(dataHolders?.map(({ dataSources }) => dataSources));
9
+ }
10
+
11
+ export { getDataSourcesFromGroups, getHoldersFromGroups };
12
+ //# sourceMappingURL=out.js.map
13
+ //# sourceMappingURL=dataSources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/Scorecard/utils/dataSources.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,mBAAmB;AAM9B,SAAS,qBACf,YACwB;AACxB,SAAO,YAAY,YAAY,IAAI,CAAC,EAAE,YAAY,MAAM,WAAW,KAAK,CAAC,CAAC;AAC3E;AAEO,SAAS,yBAAyB,YAAkC;AAC1E,QAAM,cAAc,QAAQ,qBAAqB,UAAU,CAAC;AAC5D,SAAO,YAAY,aAAa,IAAI,CAAC,EAAE,YAAY,MAAM,WAAW,CAAC;AACtE","sourcesContent":["import { compact, flattenDeep } from \"lodash\";\nimport type {\n\tScorecardDataGroup,\n\tScorecardDataHolder,\n} from \"../schemas/config\";\n\nexport function getHoldersFromGroups(\n\tdataGroups: ScorecardDataGroup[],\n): ScorecardDataHolder[] {\n\treturn flattenDeep(dataGroups?.map(({ dataHolders }) => dataHolders) ?? []);\n}\n\nexport function getDataSourcesFromGroups(dataGroups: ScorecardDataGroup[]) {\n\tconst dataHolders = compact(getHoldersFromGroups(dataGroups));\n\treturn flattenDeep(dataHolders?.map(({ dataSources }) => dataSources));\n}\n"]}
@@ -0,0 +1,18 @@
1
+ class ScorecardEngine {
2
+ constructor({
3
+ config,
4
+ meta,
5
+ state
6
+ }) {
7
+ this.config = config;
8
+ this.meta = meta;
9
+ this.state = state;
10
+ }
11
+ getRows() {
12
+ return [];
13
+ }
14
+ }
15
+
16
+ export { ScorecardEngine };
17
+ //# sourceMappingURL=out.js.map
18
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/Scorecard/utils/engine.ts"],"names":[],"mappings":"AAOO,MAAM,gBAAgB;AAAA,EAK5B,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACD,GAIG;AACF,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACd;AAAA,EAEA,UAAgC;AAC/B,WAAO,CAAC;AAAA,EACT;AACD","sourcesContent":["import type {\n\tScorecardConfig,\n\tScorecardState,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport type { ScorecardMeta } from \"../components/MetaProvider\";\n\nexport class ScorecardEngine {\n\tconfig: ScorecardConfig;\n\tstate: ScorecardState;\n\tmeta: ScorecardMeta;\n\n\tconstructor({\n\t\tconfig,\n\t\tmeta,\n\t\tstate,\n\t}: {\n\t\tconfig: ScorecardConfig;\n\t\tstate: ScorecardState;\n\t\tmeta: ScorecardMeta;\n\t}) {\n\t\tthis.config = config;\n\t\tthis.meta = meta;\n\t\tthis.state = state;\n\t}\n\n\tgetRows(): ScorecardTableData[] {\n\t\treturn [];\n\t}\n}\n"]}