@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,181 @@
1
+ 'use strict';
2
+
3
+ var zod = require('zod');
4
+
5
+ const supportedDataSources = zod.z.enum([
6
+ "indicator",
7
+ "dataElement",
8
+ "dataSet",
9
+ ""
10
+ ]);
11
+ const legendDefinitionSchema = zod.z.object({
12
+ id: zod.z.string(),
13
+ color: zod.z.string(),
14
+ name: zod.z.string(),
15
+ isDefault: zod.z.boolean().optional()
16
+ });
17
+ const scorecardViewOptionsSchema = zod.z.object({
18
+ averageColumn: zod.z.boolean(),
19
+ averageDisplayType: zod.z.enum(["ALL", "ABOVE_AVERAGE", "BELOW_AVERAGE"]),
20
+ averageRow: zod.z.boolean(),
21
+ emptyRows: zod.z.boolean(),
22
+ highlightedIndicators: zod.z.boolean(),
23
+ itemNumber: zod.z.boolean(),
24
+ legend: zod.z.boolean(),
25
+ showHierarchy: zod.z.boolean(),
26
+ title: zod.z.boolean(),
27
+ arrows: zod.z.boolean(),
28
+ showDataInRows: zod.z.boolean(),
29
+ disableExpanding: zod.z.boolean().optional()
30
+ });
31
+ const organisationUnitSelectionSchema = zod.z.object({
32
+ userOrgUnit: zod.z.boolean().optional(),
33
+ userSubUnit: zod.z.boolean().optional(),
34
+ userSubX2Unit: zod.z.boolean().optional(),
35
+ orgUnits: zod.z.array(
36
+ zod.z.object({
37
+ id: zod.z.string()
38
+ })
39
+ ),
40
+ groups: zod.z.array(zod.z.string()),
41
+ levels: zod.z.array(zod.z.string())
42
+ });
43
+ const periodSelectionSchema = zod.z.object({
44
+ periods: zod.z.array(
45
+ zod.z.object({
46
+ id: zod.z.string()
47
+ })
48
+ ),
49
+ type: zod.z.string().optional()
50
+ });
51
+ const legendSchema = zod.z.object({
52
+ legendDefinitionId: zod.z.string(),
53
+ id: zod.z.string(),
54
+ startValue: zod.z.union([zod.z.string(), zod.z.number()]),
55
+ endValue: zod.z.union([zod.z.string(), zod.z.number()])
56
+ });
57
+ const specificTargetSchema = zod.z.object({
58
+ type: zod.z.enum(["period", "orgUnit"]),
59
+ items: zod.z.array(zod.z.string()),
60
+ legends: zod.z.array(legendSchema)
61
+ });
62
+ const orgUnitLevelLegendSchema = zod.z.record(
63
+ zod.z.string(),
64
+ zod.z.array(legendSchema)
65
+ );
66
+ const dataSourceSchema = zod.z.object({
67
+ id: zod.z.string(),
68
+ label: zod.z.string().optional(),
69
+ type: supportedDataSources,
70
+ displayArrows: zod.z.boolean(),
71
+ highIsGood: zod.z.boolean(),
72
+ effectiveGap: zod.z.number(),
73
+ showColors: zod.z.boolean(),
74
+ weight: zod.z.number(),
75
+ legends: zod.z.union([zod.z.array(legendSchema), orgUnitLevelLegendSchema]),
76
+ specificTargets: zod.z.array(specificTargetSchema),
77
+ description: zod.z.string().optional()
78
+ });
79
+ const dataHolderSchema = zod.z.object({
80
+ id: zod.z.union([zod.z.number(), zod.z.string()]),
81
+ dataSources: zod.z.array(dataSourceSchema)
82
+ });
83
+ const dataGroupSchema = zod.z.object({
84
+ id: zod.z.union([zod.z.number(), zod.z.string()]),
85
+ dataHolders: zod.z.array(dataHolderSchema),
86
+ style: zod.z.object({}),
87
+ title: zod.z.string()
88
+ });
89
+ zod.z.object({
90
+ id: zod.z.string(),
91
+ title: zod.z.string(),
92
+ subtitle: zod.z.string(),
93
+ customHeader: zod.z.string(),
94
+ description: zod.z.string().optional(),
95
+ legendDefinitions: zod.z.array(legendDefinitionSchema),
96
+ options: scorecardViewOptionsSchema,
97
+ orgUnitSelection: organisationUnitSelectionSchema,
98
+ periodSelection: periodSelectionSchema,
99
+ dataSelection: zod.z.object({
100
+ dataGroups: zod.z.array(dataGroupSchema)
101
+ }),
102
+ highlightedIndicators: zod.z.array(dataSourceSchema),
103
+ additionalLabels: zod.z.array(zod.z.string())
104
+ });
105
+ zod.z.object({
106
+ orgUnitSelection: organisationUnitSelectionSchema,
107
+ periodSelection: periodSelectionSchema,
108
+ options: scorecardViewOptionsSchema,
109
+ nested: zod.z.boolean().optional(),
110
+ hasOnePeriod: zod.z.boolean().optional()
111
+ });
112
+ const scorecardAnalyticsData = zod.z.object({
113
+ dx: zod.z.string().optional(),
114
+ pe: zod.z.string().optional(),
115
+ ou: zod.z.string().optional(),
116
+ value: zod.z.string().optional()
117
+ });
118
+ const scorecardTableData = zod.z.object({
119
+ label: zod.z.string(),
120
+ dataValues: zod.z.array(scorecardAnalyticsData),
121
+ dataHolder: dataHolderSchema.optional(),
122
+ orgUnit: zod.z.object({
123
+ uid: zod.z.string(),
124
+ name: zod.z.string(),
125
+ hierarchy: zod.z.string()
126
+ }).optional(),
127
+ expand: zod.z.boolean().optional()
128
+ });
129
+ const scorecardTableCellData = zod.z.object({
130
+ dataSources: zod.z.array(
131
+ dataSourceSchema.extend({
132
+ data: zod.z.object({
133
+ previous: zod.z.number().optional(),
134
+ current: zod.z.number().optional()
135
+ })
136
+ })
137
+ ),
138
+ orgUnit: zod.z.object({
139
+ uid: zod.z.string(),
140
+ name: zod.z.string(),
141
+ hierarchy: zod.z.string()
142
+ }),
143
+ period: zod.z.string()
144
+ });
145
+ var ScorecardTableOrientation = /* @__PURE__ */ ((ScorecardTableOrientation2) => {
146
+ ScorecardTableOrientation2["ORG_UNIT_VS_DATA"] = "orgUnitsVsData";
147
+ ScorecardTableOrientation2["DATA_VS_ORG_UNIT"] = "dataVsOrgUnits";
148
+ return ScorecardTableOrientation2;
149
+ })(ScorecardTableOrientation || {});
150
+ var ScorecardTableDimension = /* @__PURE__ */ ((ScorecardTableDimension2) => {
151
+ ScorecardTableDimension2["GROUP"] = "group";
152
+ ScorecardTableDimension2["ORG_UNITS"] = "orgUnits";
153
+ ScorecardTableDimension2["PERIODS"] = "periods";
154
+ ScorecardTableDimension2["DATA"] = "data";
155
+ return ScorecardTableDimension2;
156
+ })(ScorecardTableDimension || {});
157
+ var ScorecardDraggableItems = /* @__PURE__ */ ((ScorecardDraggableItems2) => {
158
+ ScorecardDraggableItems2["ou"] = "ou";
159
+ ScorecardDraggableItems2["data"] = "data";
160
+ return ScorecardDraggableItems2;
161
+ })(ScorecardDraggableItems || {});
162
+
163
+ exports.ScorecardDraggableItems = ScorecardDraggableItems;
164
+ exports.ScorecardTableDimension = ScorecardTableDimension;
165
+ exports.ScorecardTableOrientation = ScorecardTableOrientation;
166
+ exports.dataGroupSchema = dataGroupSchema;
167
+ exports.dataHolderSchema = dataHolderSchema;
168
+ exports.dataSourceSchema = dataSourceSchema;
169
+ exports.legendDefinitionSchema = legendDefinitionSchema;
170
+ exports.legendSchema = legendSchema;
171
+ exports.orgUnitLevelLegendSchema = orgUnitLevelLegendSchema;
172
+ exports.organisationUnitSelectionSchema = organisationUnitSelectionSchema;
173
+ exports.periodSelectionSchema = periodSelectionSchema;
174
+ exports.scorecardAnalyticsData = scorecardAnalyticsData;
175
+ exports.scorecardTableCellData = scorecardTableCellData;
176
+ exports.scorecardTableData = scorecardTableData;
177
+ exports.scorecardViewOptionsSchema = scorecardViewOptionsSchema;
178
+ exports.specificTargetSchema = specificTargetSchema;
179
+ exports.supportedDataSources = supportedDataSources;
180
+ //# sourceMappingURL=out.js.map
181
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/Scorecard/schemas/config.ts"],"names":["ScorecardTableOrientation","ScorecardTableDimension","ScorecardDraggableItems"],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport const supportedDataSources = z.enum([\n\t\"indicator\",\n\t\"dataElement\",\n\t\"dataSet\",\n\t\"\",\n]);\n\nexport type SupportedDataSources = z.infer<typeof supportedDataSources>;\n\nexport const legendDefinitionSchema = z.object({\n\tid: z.string(),\n\tcolor: z.string(),\n\tname: z.string(),\n\tisDefault: z.boolean().optional(),\n});\n\nexport type LegendDefinition = z.infer<typeof legendDefinitionSchema>;\n\nexport const scorecardViewOptionsSchema = z.object({\n\taverageColumn: z.boolean(),\n\taverageDisplayType: z.enum([\"ALL\", \"ABOVE_AVERAGE\", \"BELOW_AVERAGE\"]),\n\taverageRow: z.boolean(),\n\temptyRows: z.boolean(),\n\thighlightedIndicators: z.boolean(),\n\titemNumber: z.boolean(),\n\tlegend: z.boolean(),\n\tshowHierarchy: z.boolean(),\n\ttitle: z.boolean(),\n\tarrows: z.boolean(),\n\tshowDataInRows: z.boolean(),\n\tdisableExpanding: z.boolean().optional(),\n});\n\nexport type ScorecardViewOptions = z.infer<typeof scorecardViewOptionsSchema>;\n\nexport const organisationUnitSelectionSchema = z.object({\n\tuserOrgUnit: z.boolean().optional(),\n\tuserSubUnit: z.boolean().optional(),\n\tuserSubX2Unit: z.boolean().optional(),\n\torgUnits: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\tgroups: z.array(z.string()),\n\tlevels: z.array(z.string()),\n});\n\nexport type OrgUnitSelection = z.infer<typeof organisationUnitSelectionSchema>;\n\nexport const periodSelectionSchema = z.object({\n\tperiods: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\ttype: z.string().optional(),\n});\n\nexport type PeriodSelection = z.infer<typeof periodSelectionSchema>;\n\nexport const legendSchema = z.object({\n\tlegendDefinitionId: z.string(),\n\tid: z.string(),\n\tstartValue: z.union([z.string(), z.number()]),\n\tendValue: z.union([z.string(), z.number()]),\n});\n\nexport type ScorecardLegend = z.infer<typeof legendSchema>;\n\nexport const specificTargetSchema = z.object({\n\ttype: z.enum([\"period\", \"orgUnit\"]),\n\titems: z.array(z.string()),\n\tlegends: z.array(legendSchema),\n});\n\nexport type SpecificTarget = z.infer<typeof specificTargetSchema>;\n\nexport const orgUnitLevelLegendSchema = z.record(\n\tz.string(),\n\tz.array(legendSchema),\n);\n\nexport type OrgUnitLevelLegend = z.infer<typeof orgUnitLevelLegendSchema>;\n\nexport const dataSourceSchema = z.object({\n\tid: z.string(),\n\tlabel: z.string().optional(),\n\ttype: supportedDataSources,\n\tdisplayArrows: z.boolean(),\n\thighIsGood: z.boolean(),\n\teffectiveGap: z.number(),\n\tshowColors: z.boolean(),\n\tweight: z.number(),\n\tlegends: z.union([z.array(legendSchema), orgUnitLevelLegendSchema]),\n\tspecificTargets: z.array(specificTargetSchema),\n\tdescription: z.string().optional(),\n});\n\nexport type ScorecardDataSource = z.infer<typeof dataSourceSchema>;\n\nexport const dataHolderSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataSources: z.array(dataSourceSchema),\n});\n\nexport type ScorecardDataHolder = z.infer<typeof dataHolderSchema>;\n\nexport const dataGroupSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataHolders: z.array(dataHolderSchema),\n\tstyle: z.object({}),\n\ttitle: z.string(),\n});\n\nexport type ScorecardDataGroup = z.infer<typeof dataGroupSchema>;\n\nconst scorecardConfig = z.object({\n\tid: z.string(),\n\ttitle: z.string(),\n\tsubtitle: z.string(),\n\tcustomHeader: z.string(),\n\tdescription: z.string().optional(),\n\tlegendDefinitions: z.array(legendDefinitionSchema),\n\toptions: scorecardViewOptionsSchema,\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\tdataSelection: z.object({\n\t\tdataGroups: z.array(dataGroupSchema),\n\t}),\n\thighlightedIndicators: z.array(dataSourceSchema),\n\tadditionalLabels: z.array(z.string()),\n});\n\nexport type ScorecardConfig = z.infer<typeof scorecardConfig>;\n\nconst scorecardStateSchema = z.object({\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\toptions: scorecardViewOptionsSchema,\n\tnested: z.boolean().optional(),\n\thasOnePeriod: z.boolean().optional(),\n});\n\nexport type ScorecardState = z.infer<typeof scorecardStateSchema>;\n\nexport const scorecardAnalyticsData = z.object({\n\tdx: z.string().optional(),\n\tpe: z.string().optional(),\n\tou: z.string().optional(),\n\tvalue: z.string().optional(),\n});\n\nexport type ScorecardAnalyticsData = z.infer<typeof scorecardAnalyticsData>;\n\nexport const scorecardTableData = z.object({\n\tlabel: z.string(),\n\tdataValues: z.array(scorecardAnalyticsData),\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n\texpand: z.boolean().optional(),\n});\n\nexport type ScorecardTableData = z.infer<typeof scorecardTableData> & RowData;\n\nexport const scorecardTableCellData = z.object({\n\tdataSources: z.array(\n\t\tdataSourceSchema.extend({\n\t\t\tdata: z.object({\n\t\t\t\tprevious: z.number().optional(),\n\t\t\t\tcurrent: z.number().optional(),\n\t\t\t}),\n\t\t}),\n\t),\n\torgUnit: z.object({\n\t\tuid: z.string(),\n\t\tname: z.string(),\n\t\thierarchy: z.string(),\n\t}),\n\tperiod: z.string(),\n});\n\nexport type ScorecardTableCellData = z.infer<typeof scorecardTableCellData>;\n\nexport type SanitizedScorecardTableData = z.infer<typeof scorecardTableData>;\n\nexport enum ScorecardTableOrientation {\n\tORG_UNIT_VS_DATA = \"orgUnitsVsData\",\n\tDATA_VS_ORG_UNIT = \"dataVsOrgUnits\",\n}\n\nexport enum ScorecardTableDimension {\n\tGROUP = \"group\",\n\tORG_UNITS = \"orgUnits\",\n\tPERIODS = \"periods\",\n\tDATA = \"data\",\n}\n\nexport enum ScorecardDraggableItems {\n\tou = \"ou\",\n\tdata = \"data\",\n}\n"]}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var dataSources = require('./dataSources');
4
+ var orgUnits = require('./orgUnits');
5
+
6
+ function getDimensions({
7
+ config,
8
+ state
9
+ }) {
10
+ const dataItemObjects = dataSources.getDataSourcesFromGroups(
11
+ config?.dataSelection?.dataGroups ?? []
12
+ );
13
+ const dataItemsIds = dataItemObjects?.map((item) => item?.id);
14
+ const orgUnitsIds = orgUnits.getOrgUnitsForAnalytics(
15
+ state?.orgUnitSelection ?? config?.orgUnitSelection
16
+ );
17
+ const periodsIds = state.periodSelection.periods.map(({ id }) => id);
18
+ return {
19
+ dataItemsIds,
20
+ orgUnitsIds,
21
+ periodsIds
22
+ };
23
+ }
24
+
25
+ exports.getDimensions = getDimensions;
26
+ //# sourceMappingURL=out.js.map
27
+ //# 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,331 @@
1
+ 'use strict';
2
+
3
+ var reactTable = require('@tanstack/react-table');
4
+ var lodash = require('lodash');
5
+ var DataContainer = require('../components/ScorecardTable/components/DataContainer');
6
+ var DataHeaderCell = require('../components/ScorecardTable/components/TableHeader/components/DataHeaderCell');
7
+ var multiCalendarDates = require('@dhis2/multi-calendar-dates');
8
+ var AverageCell = require('../components/ScorecardTable/components/AverageCell');
9
+ var AverageHeaderCell = require('../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell');
10
+ var DataFooterCell = require('../components/ScorecardTable/components/DataFooterCell');
11
+ var AverageFooterCell = require('../components/ScorecardTable/components/AverageFooterCell');
12
+
13
+ const columnHelper = reactTable.createColumnHelper();
14
+ function sortingFunction(rowA, rowB, columnId) {
15
+ const dataA = rowA.getValue(columnId);
16
+ const dataB = rowB.getValue(columnId);
17
+ const valueA = lodash.head(dataA.dataSources)?.data.current ?? 0;
18
+ const valueB = lodash.head(dataB.dataSources)?.data.current ?? 0;
19
+ if (valueA === valueB) {
20
+ return 0;
21
+ }
22
+ return valueA > valueB ? 1 : -1;
23
+ }
24
+ function getAverageValue({
25
+ dataValues,
26
+ meta
27
+ }) {
28
+ const currentPeriodValues = dataValues.filter(({ pe }) => {
29
+ return !!meta.periods.find(({ uid }) => uid === pe);
30
+ });
31
+ const values = currentPeriodValues.map(({ value }) => value ? +value : 0);
32
+ return Math.round(lodash.sum(values) / values.length * 100) / 100;
33
+ }
34
+ function getValues({
35
+ values,
36
+ currentPeriod,
37
+ previousPeriod
38
+ }) {
39
+ const currentValueData = values.find(({ pe }) => {
40
+ return pe === currentPeriod;
41
+ });
42
+ const previousValueData = values.find(({ pe }) => {
43
+ return pe === previousPeriod;
44
+ });
45
+ const previousValue = parseFloat(previousValueData?.value ?? "");
46
+ const currentValue = parseFloat(currentValueData?.value ?? "");
47
+ return {
48
+ previous: isNaN(previousValue) ? void 0 : previousValue,
49
+ current: isNaN(currentValue) ? void 0 : currentValue
50
+ };
51
+ }
52
+ function getOrgUnitColumnHeaders({
53
+ meta,
54
+ calendar
55
+ }) {
56
+ const orgUnits = meta.orgUnits ?? [];
57
+ const periods = meta.periods ?? [];
58
+ return orgUnits.map((orgUnit) => {
59
+ return columnHelper.group({
60
+ id: orgUnit.uid,
61
+ header: DataHeaderCell.DataHeaderCell,
62
+ meta: {
63
+ label: orgUnit.name
64
+ },
65
+ columns: periods.map(
66
+ ({ name, uid }) => columnHelper.accessor(
67
+ (rowData) => {
68
+ const currentPeriod = uid;
69
+ const previousPeriod = lodash.head(
70
+ multiCalendarDates.getAdjacentFixedPeriods({
71
+ calendar,
72
+ period: multiCalendarDates.createFixedPeriodFromPeriodId({
73
+ calendar,
74
+ periodId: currentPeriod
75
+ }),
76
+ steps: -1
77
+ })
78
+ )?.id;
79
+ const values = rowData.dataValues.filter(({ ou }) => {
80
+ return ou === orgUnit.uid;
81
+ });
82
+ const dataSources = rowData.dataHolder?.dataSources?.map(
83
+ (dataSource) => {
84
+ const dataSourceValues = values.filter(
85
+ (value) => {
86
+ return value.dx === dataSource.id;
87
+ }
88
+ );
89
+ const data = getValues({
90
+ currentPeriod,
91
+ previousPeriod,
92
+ values: dataSourceValues
93
+ });
94
+ return {
95
+ ...dataSource,
96
+ data
97
+ };
98
+ }
99
+ );
100
+ return {
101
+ ...rowData,
102
+ period: uid,
103
+ dataSources,
104
+ orgUnit
105
+ };
106
+ },
107
+ {
108
+ header: DataHeaderCell.DataHeaderCell,
109
+ meta: {
110
+ label: name
111
+ },
112
+ cell: DataContainer.DataContainer,
113
+ id: `${orgUnit.uid}-${uid}`,
114
+ enableSorting: true,
115
+ sortingFn: sortingFunction,
116
+ footer: DataFooterCell.DataFooterCell
117
+ }
118
+ )
119
+ )
120
+ });
121
+ });
122
+ }
123
+ function getAverageColumn({
124
+ meta
125
+ }) {
126
+ return columnHelper.group({
127
+ id: "average-header",
128
+ header: AverageHeaderCell.AverageHeaderCell,
129
+ columns: [
130
+ columnHelper.accessor(
131
+ (rowData) => {
132
+ return {
133
+ ...rowData,
134
+ dataSources: rowData.dataHolder?.dataSources?.map(
135
+ (dataSource) => {
136
+ const dataValues = rowData.dataValues.filter(
137
+ ({ dx }) => dx === dataSource.id
138
+ );
139
+ return {
140
+ ...dataSource,
141
+ average: getAverageValue({
142
+ dataValues,
143
+ meta
144
+ })
145
+ };
146
+ }
147
+ ),
148
+ average: getAverageValue({
149
+ dataValues: rowData.dataValues,
150
+ meta
151
+ })
152
+ };
153
+ },
154
+ {
155
+ id: `average`,
156
+ header: () => null,
157
+ cell: AverageCell.AverageCell,
158
+ enableHiding: true,
159
+ footer: AverageFooterCell.AverageFooterCell
160
+ }
161
+ )
162
+ ]
163
+ });
164
+ }
165
+ function getDataHolderColumn({
166
+ hasOnePeriod,
167
+ dataHolder,
168
+ periods,
169
+ calendar
170
+ }) {
171
+ const { id, dataSources } = dataHolder;
172
+ const header = dataSources.length === 1 ? lodash.head(dataSources)?.label : dataSources.reduce(
173
+ (acc, { label, id: id2 }) => `${acc} / ${label}`,
174
+ ""
175
+ );
176
+ if (hasOnePeriod) {
177
+ return columnHelper.accessor(
178
+ (rowData) => {
179
+ const currentPeriod = lodash.head(periods).uid;
180
+ const previousPeriod = lodash.head(
181
+ multiCalendarDates.getAdjacentFixedPeriods({
182
+ calendar,
183
+ period: multiCalendarDates.createFixedPeriodFromPeriodId({
184
+ calendar,
185
+ periodId: currentPeriod
186
+ }),
187
+ steps: -1
188
+ })
189
+ )?.id;
190
+ const dataSourceWithValues = dataSources.map((dataSource) => {
191
+ const values = rowData.dataValues.filter(({ dx }) => {
192
+ return dx === dataSource.id;
193
+ });
194
+ const data = getValues({
195
+ currentPeriod,
196
+ previousPeriod,
197
+ values
198
+ });
199
+ return {
200
+ ...dataSource,
201
+ data
202
+ };
203
+ });
204
+ return {
205
+ ...rowData,
206
+ dataSources: dataSourceWithValues,
207
+ period: lodash.head(periods)?.uid
208
+ };
209
+ },
210
+ {
211
+ header: DataHeaderCell.DataHeaderCell,
212
+ meta: {
213
+ label: header
214
+ },
215
+ id: id.toString(),
216
+ cell: DataContainer.DataContainer,
217
+ enableSorting: true,
218
+ sortingFn: sortingFunction,
219
+ footer: DataFooterCell.DataFooterCell
220
+ }
221
+ );
222
+ }
223
+ return columnHelper.group({
224
+ id: id.toString(),
225
+ columns: periods.map(
226
+ ({ name, uid }) => columnHelper.accessor(
227
+ (rowData) => {
228
+ const currentPeriod = uid;
229
+ const previousPeriod = lodash.head(
230
+ multiCalendarDates.getAdjacentFixedPeriods({
231
+ calendar,
232
+ period: multiCalendarDates.createFixedPeriodFromPeriodId({
233
+ calendar,
234
+ periodId: currentPeriod
235
+ }),
236
+ steps: -1
237
+ })
238
+ )?.id;
239
+ const dataSourceWithValues = dataSources.map(
240
+ (dataSource) => {
241
+ const values = rowData.dataValues.filter(
242
+ ({ dx }) => {
243
+ return dx === dataSource.id;
244
+ }
245
+ );
246
+ const data = getValues({
247
+ currentPeriod,
248
+ previousPeriod,
249
+ values
250
+ });
251
+ return {
252
+ ...dataSource,
253
+ data
254
+ };
255
+ }
256
+ );
257
+ return {
258
+ ...rowData,
259
+ dataSources: dataSourceWithValues,
260
+ period: uid
261
+ };
262
+ },
263
+ {
264
+ header: DataHeaderCell.DataHeaderCell,
265
+ meta: {
266
+ label: name
267
+ },
268
+ cell: DataContainer.DataContainer,
269
+ id: `${id.toString()}-${uid}`,
270
+ enableSorting: true,
271
+ sortingFn: sortingFunction,
272
+ footer: DataFooterCell.DataFooterCell
273
+ }
274
+ )
275
+ ),
276
+ meta: {
277
+ label: header
278
+ },
279
+ header: DataHeaderCell.DataHeaderCell,
280
+ enableSorting: true,
281
+ sortingFn: sortingFunction
282
+ });
283
+ }
284
+ function getDataColumnHeaders({
285
+ meta,
286
+ config,
287
+ calendar
288
+ }) {
289
+ const dataGroups = config.dataSelection.dataGroups ?? [];
290
+ const hasOneGroup = dataGroups.length === 1;
291
+ const periods = meta.periods ?? [];
292
+ const hasOnePeriod = periods.length === 1;
293
+ if (hasOneGroup) {
294
+ return lodash.head(dataGroups).dataHolders.map((dataHolder) => {
295
+ return getDataHolderColumn({
296
+ hasOnePeriod,
297
+ dataHolder,
298
+ periods,
299
+ calendar
300
+ });
301
+ });
302
+ } else {
303
+ return dataGroups.map(({ title, dataHolders, id }) => {
304
+ return columnHelper.group({
305
+ id: id.toString(),
306
+ header: DataHeaderCell.DataHeaderCell,
307
+ meta: {
308
+ label: title,
309
+ bold: true
310
+ },
311
+ columns: dataHolders.map((dataHolder) => {
312
+ return getDataHolderColumn({
313
+ hasOnePeriod,
314
+ dataHolder,
315
+ periods,
316
+ calendar
317
+ });
318
+ }),
319
+ enableSorting: false,
320
+ footer: () => null
321
+ });
322
+ });
323
+ }
324
+ }
325
+
326
+ exports.getAverageColumn = getAverageColumn;
327
+ exports.getAverageValue = getAverageValue;
328
+ exports.getDataColumnHeaders = getDataColumnHeaders;
329
+ exports.getOrgUnitColumnHeaders = getOrgUnitColumnHeaders;
330
+ //# sourceMappingURL=out.js.map
331
+ //# 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"]}