@dhis2/analytics 28.0.4 → 28.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/build/cjs/__demo__/OpenFileDialog.stories.js +19 -1
  2. package/build/cjs/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
  3. package/build/cjs/__demo__/PivotTable.event.stories.js +440 -0
  4. package/build/cjs/__demo__/data/event/boolean.data.hidena.json +115 -0
  5. package/build/cjs/__demo__/data/event/boolean.data.json +125 -0
  6. package/build/cjs/__demo__/data/event/boolean.data.org.json +106 -0
  7. package/build/cjs/__demo__/data/event/boolean.visualization.json +160 -0
  8. package/build/cjs/__demo__/data/event/date.data.hidena.json +205 -0
  9. package/build/cjs/__demo__/data/event/date.data.json +215 -0
  10. package/build/cjs/__demo__/data/event/date.data.org.json +123 -0
  11. package/build/cjs/__demo__/data/event/date.visualization.json +160 -0
  12. package/build/cjs/__demo__/data/event/datetime.data.hidena.json +215 -0
  13. package/build/cjs/__demo__/data/event/datetime.data.json +225 -0
  14. package/build/cjs/__demo__/data/event/datetime.data.org.json +124 -0
  15. package/build/cjs/__demo__/data/event/datetime.visualization.json +148 -0
  16. package/build/cjs/__demo__/data/event/email.data.hidena.json +192 -0
  17. package/build/cjs/__demo__/data/event/email.data.json +202 -0
  18. package/build/cjs/__demo__/data/event/email.data.org.json +123 -0
  19. package/build/cjs/__demo__/data/event/email.visualization.json +148 -0
  20. package/build/cjs/__demo__/data/event/integer.data.hidena.json +165 -0
  21. package/build/cjs/__demo__/data/event/integer.data.json +175 -0
  22. package/build/cjs/__demo__/data/event/integer.data.org.json +120 -0
  23. package/build/cjs/__demo__/data/event/integer.visualization.json +163 -0
  24. package/build/cjs/__demo__/data/event/legendset.data.hidena.json +154 -0
  25. package/build/cjs/__demo__/data/event/legendset.data.json +164 -0
  26. package/build/cjs/__demo__/data/event/legendset.visualization.json +166 -0
  27. package/build/cjs/__demo__/data/event/optionset.data.hidena.json +125 -0
  28. package/build/cjs/__demo__/data/event/optionset.data.json +134 -0
  29. package/build/cjs/__demo__/data/event/optionset.data.org.json +125 -0
  30. package/build/cjs/__demo__/data/event/optionset.visualization.json +158 -0
  31. package/build/cjs/__demo__/data/event/time.data.hidena.json +165 -0
  32. package/build/cjs/__demo__/data/event/time.data.json +175 -0
  33. package/build/cjs/__demo__/data/event/time.data.org.json +128 -0
  34. package/build/cjs/__demo__/data/event/time.visualization.json +148 -0
  35. package/build/cjs/__demo__/data/event/yesonly.data.hidena.json +127 -0
  36. package/build/cjs/__demo__/data/event/yesonly.data.json +136 -0
  37. package/build/cjs/__demo__/data/event/yesonly.data.org.json +124 -0
  38. package/build/cjs/__demo__/data/event/yesonly.visualization.json +161 -0
  39. package/build/cjs/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
  40. package/build/cjs/components/DimensionsPanel/List/DimensionList.js +3 -1
  41. package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +48 -41
  42. package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
  43. package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +36 -33
  44. package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +24 -27
  45. package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +51 -31
  46. package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +28 -31
  47. package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +17 -11
  48. package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +44 -37
  49. package/build/cjs/components/Filter/__tests__/Filter.spec.js +29 -34
  50. package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +9 -1
  51. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +14 -34
  52. package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +39 -1
  53. package/build/cjs/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +51 -0
  54. package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +78 -44
  55. package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +1 -0
  56. package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +3 -2
  57. package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +14 -21
  58. package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +27 -23
  59. package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
  60. package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
  61. package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +6 -7
  62. package/build/cjs/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
  63. package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +22 -23
  64. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +52 -42
  65. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +8 -8
  66. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
  67. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +23 -17
  68. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
  69. package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
  70. package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +19 -18
  71. package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +8 -8
  72. package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +14 -11
  73. package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +16 -14
  74. package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
  75. package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +25 -16
  76. package/build/cjs/index.js +8 -0
  77. package/build/cjs/locales/en/translations.json +1 -0
  78. package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +2 -1
  79. package/build/cjs/modules/pivotTable/getHeaderForDisplay.js +4 -1
  80. package/build/cjs/modules/pivotTable/measureText.js +7 -6
  81. package/build/cjs/modules/response/event/__tests__/default.spec.js +77 -0
  82. package/build/cjs/modules/response/event/__tests__/optionSet.spec.js +35 -0
  83. package/build/cjs/modules/response/event/__tests__/response.spec.js +125 -0
  84. package/build/cjs/modules/response/event/default.js +65 -0
  85. package/build/cjs/modules/response/event/optionSet.js +36 -0
  86. package/build/cjs/modules/response/event/response.js +95 -0
  87. package/build/es/__demo__/OpenFileDialog.stories.js +17 -0
  88. package/build/es/__demo__/{PivotTable.stories.js → PivotTable.aggregate.stories.js} +38 -38
  89. package/build/es/__demo__/PivotTable.event.stories.js +414 -0
  90. package/build/es/__demo__/data/event/boolean.data.hidena.json +115 -0
  91. package/build/es/__demo__/data/event/boolean.data.json +125 -0
  92. package/build/es/__demo__/data/event/boolean.data.org.json +106 -0
  93. package/build/es/__demo__/data/event/boolean.visualization.json +160 -0
  94. package/build/es/__demo__/data/event/date.data.hidena.json +205 -0
  95. package/build/es/__demo__/data/event/date.data.json +215 -0
  96. package/build/es/__demo__/data/event/date.data.org.json +123 -0
  97. package/build/es/__demo__/data/event/date.visualization.json +160 -0
  98. package/build/es/__demo__/data/event/datetime.data.hidena.json +215 -0
  99. package/build/es/__demo__/data/event/datetime.data.json +225 -0
  100. package/build/es/__demo__/data/event/datetime.data.org.json +124 -0
  101. package/build/es/__demo__/data/event/datetime.visualization.json +148 -0
  102. package/build/es/__demo__/data/event/email.data.hidena.json +192 -0
  103. package/build/es/__demo__/data/event/email.data.json +202 -0
  104. package/build/es/__demo__/data/event/email.data.org.json +123 -0
  105. package/build/es/__demo__/data/event/email.visualization.json +148 -0
  106. package/build/es/__demo__/data/event/integer.data.hidena.json +165 -0
  107. package/build/es/__demo__/data/event/integer.data.json +175 -0
  108. package/build/es/__demo__/data/event/integer.data.org.json +120 -0
  109. package/build/es/__demo__/data/event/integer.visualization.json +163 -0
  110. package/build/es/__demo__/data/event/legendset.data.hidena.json +154 -0
  111. package/build/es/__demo__/data/event/legendset.data.json +164 -0
  112. package/build/es/__demo__/data/event/legendset.visualization.json +166 -0
  113. package/build/es/__demo__/data/event/optionset.data.hidena.json +125 -0
  114. package/build/es/__demo__/data/event/optionset.data.json +134 -0
  115. package/build/es/__demo__/data/event/optionset.data.org.json +125 -0
  116. package/build/es/__demo__/data/event/optionset.visualization.json +158 -0
  117. package/build/es/__demo__/data/event/time.data.hidena.json +165 -0
  118. package/build/es/__demo__/data/event/time.data.json +175 -0
  119. package/build/es/__demo__/data/event/time.data.org.json +128 -0
  120. package/build/es/__demo__/data/event/time.visualization.json +148 -0
  121. package/build/es/__demo__/data/event/yesonly.data.hidena.json +127 -0
  122. package/build/es/__demo__/data/event/yesonly.data.json +136 -0
  123. package/build/es/__demo__/data/event/yesonly.data.org.json +124 -0
  124. package/build/es/__demo__/data/event/yesonly.visualization.json +161 -0
  125. package/build/es/components/DataDimension/ItemSelector/ItemSelector.js +19 -22
  126. package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -1
  127. package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +47 -40
  128. package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
  129. package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +35 -32
  130. package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +23 -26
  131. package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +52 -32
  132. package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +27 -30
  133. package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +18 -12
  134. package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +43 -36
  135. package/build/es/components/Filter/__tests__/Filter.spec.js +28 -33
  136. package/build/es/components/OpenFileDialog/CreatedByFilter.js +7 -0
  137. package/build/es/components/OpenFileDialog/OpenFileDialog.js +14 -35
  138. package/build/es/components/OpenFileDialog/VisTypeFilter.js +38 -1
  139. package/build/es/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +49 -0
  140. package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +77 -43
  141. package/build/es/components/PeriodDimension/FixedPeriodFilter.js +1 -0
  142. package/build/es/components/PeriodDimension/RelativePeriodFilter.js +3 -2
  143. package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +13 -20
  144. package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +26 -22
  145. package/build/es/components/PivotTable/PivotTableColumnHeaderCell.js +3 -0
  146. package/build/es/components/PivotTable/PivotTableRowHeaderCell.js +2 -1
  147. package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +7 -8
  148. package/build/es/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
  149. package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +21 -22
  150. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +53 -43
  151. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +7 -7
  152. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
  153. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +21 -15
  154. package/build/es/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
  155. package/build/es/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
  156. package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +18 -17
  157. package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +7 -7
  158. package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +13 -10
  159. package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +15 -13
  160. package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
  161. package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +24 -15
  162. package/build/es/index.js +4 -0
  163. package/build/es/locales/en/translations.json +1 -0
  164. package/build/es/modules/pivotTable/AdaptiveClippingController.js +2 -1
  165. package/build/es/modules/pivotTable/getHeaderForDisplay.js +4 -1
  166. package/build/es/modules/pivotTable/measureText.js +7 -6
  167. package/build/es/modules/response/event/__tests__/default.spec.js +75 -0
  168. package/build/es/modules/response/event/__tests__/optionSet.spec.js +32 -0
  169. package/build/es/modules/response/event/__tests__/response.spec.js +122 -0
  170. package/build/es/modules/response/event/default.js +52 -0
  171. package/build/es/modules/response/event/optionSet.js +27 -0
  172. package/build/es/modules/response/event/response.js +86 -0
  173. package/package.json +2 -4
  174. package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
  175. package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -29
  176. package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
  177. package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
  178. package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
  179. package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
  180. package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -26
  181. package/build/es/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
  182. package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
  183. package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
  184. /package/build/cjs/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
  185. /package/build/cjs/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
  186. /package/build/cjs/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
  187. /package/build/cjs/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
  188. /package/build/cjs/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
  189. /package/build/cjs/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
  190. /package/build/cjs/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
  191. /package/build/cjs/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
  192. /package/build/cjs/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
  193. /package/build/cjs/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
  194. /package/build/cjs/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
  195. /package/build/cjs/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
  196. /package/build/cjs/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
  197. /package/build/cjs/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
  198. /package/build/cjs/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
  199. /package/build/cjs/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
  200. /package/build/cjs/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
  201. /package/build/cjs/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
  202. /package/build/cjs/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
  203. /package/build/cjs/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
  204. /package/build/cjs/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
  205. /package/build/cjs/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
  206. /package/build/cjs/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
  207. /package/build/cjs/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
  208. /package/build/cjs/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
  209. /package/build/cjs/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
  210. /package/build/cjs/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
  211. /package/build/cjs/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
  212. /package/build/cjs/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
  213. /package/build/cjs/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
  214. /package/build/cjs/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
  215. /package/build/cjs/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
  216. /package/build/cjs/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
  217. /package/build/cjs/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
  218. /package/build/cjs/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
  219. /package/build/cjs/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
  220. /package/build/cjs/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
  221. /package/build/es/__demo__/data/{avgTotalAggregationType.data.json → aggregate/avgTotalAggregationType.data.json} +0 -0
  222. /package/build/es/__demo__/data/{avgTotalAggregationType.metadata.json → aggregate/avgTotalAggregationType.metadata.json} +0 -0
  223. /package/build/es/__demo__/data/{avgTotalAggregationType.visualization.json → aggregate/avgTotalAggregationType.visualization.json} +0 -0
  224. /package/build/es/__demo__/data/{deep.data.json → aggregate/deep.data.json} +0 -0
  225. /package/build/es/__demo__/data/{deep.visualization.json → aggregate/deep.visualization.json} +0 -0
  226. /package/build/es/__demo__/data/{deepWithFilters.data.json → aggregate/deepWithFilters.data.json} +0 -0
  227. /package/build/es/__demo__/data/{deepWithFilters.visualization.json → aggregate/deepWithFilters.visualization.json} +0 -0
  228. /package/build/es/__demo__/data/{degs.data.json → aggregate/degs.data.json} +0 -0
  229. /package/build/es/__demo__/data/{degs.metadata.json → aggregate/degs.metadata.json} +0 -0
  230. /package/build/es/__demo__/data/{degs.visualization.json → aggregate/degs.visualization.json} +0 -0
  231. /package/build/es/__demo__/data/{diseaseWeeks.data.json → aggregate/diseaseWeeks.data.json} +0 -0
  232. /package/build/es/__demo__/data/{diseaseWeeks.metadata.json → aggregate/diseaseWeeks.metadata.json} +0 -0
  233. /package/build/es/__demo__/data/{diseaseWeeks.visualization.json → aggregate/diseaseWeeks.visualization.json} +0 -0
  234. /package/build/es/__demo__/data/{emptyColumns.data.json → aggregate/emptyColumns.data.json} +0 -0
  235. /package/build/es/__demo__/data/{emptyColumns.metadata.json → aggregate/emptyColumns.metadata.json} +0 -0
  236. /package/build/es/__demo__/data/{emptyColumns.visualization.json → aggregate/emptyColumns.visualization.json} +0 -0
  237. /package/build/es/__demo__/data/{emptyRows.data.json → aggregate/emptyRows.data.json} +0 -0
  238. /package/build/es/__demo__/data/{emptyRows.visualization.json → aggregate/emptyRows.visualization.json} +0 -0
  239. /package/build/es/__demo__/data/{hierarchy.data.json → aggregate/hierarchy.data.json} +0 -0
  240. /package/build/es/__demo__/data/{hierarchy.metadata.json → aggregate/hierarchy.metadata.json} +0 -0
  241. /package/build/es/__demo__/data/{hierarchy.visualization.json → aggregate/hierarchy.visualization.json} +0 -0
  242. /package/build/es/__demo__/data/{lastFiveYears.data.json → aggregate/lastFiveYears.data.json} +0 -0
  243. /package/build/es/__demo__/data/{lastFiveYears.metadata.json → aggregate/lastFiveYears.metadata.json} +0 -0
  244. /package/build/es/__demo__/data/{lastFiveYears.visualization.json → aggregate/lastFiveYears.visualization.json} +0 -0
  245. /package/build/es/__demo__/data/{narrative.data.json → aggregate/narrative.data.json} +0 -0
  246. /package/build/es/__demo__/data/{narrative.metadata.json → aggregate/narrative.metadata.json} +0 -0
  247. /package/build/es/__demo__/data/{narrative.visualization.json → aggregate/narrative.visualization.json} +0 -0
  248. /package/build/es/__demo__/data/{simple.data.json → aggregate/simple.data.json} +0 -0
  249. /package/build/es/__demo__/data/{simple.metadata.json → aggregate/simple.metadata.json} +0 -0
  250. /package/build/es/__demo__/data/{simple.visualization.json → aggregate/simple.visualization.json} +0 -0
  251. /package/build/es/__demo__/data/{target-with-legend.data.json → aggregate/target-with-legend.data.json} +0 -0
  252. /package/build/es/__demo__/data/{target-with-legend.metadata.json → aggregate/target-with-legend.metadata.json} +0 -0
  253. /package/build/es/__demo__/data/{target-with-legend.visualization.json → aggregate/target-with-legend.visualization.json} +0 -0
  254. /package/build/es/__demo__/data/{under-above-100.legendSet.json → aggregate/under-above-100.legendSet.json} +0 -0
  255. /package/build/es/__demo__/data/{weeklyColumns.data.json → aggregate/weeklyColumns.data.json} +0 -0
  256. /package/build/es/__demo__/data/{weeklyColumns.metadata.json → aggregate/weeklyColumns.metadata.json} +0 -0
  257. /package/build/es/__demo__/data/{weeklyColumns.visualization.json → aggregate/weeklyColumns.visualization.json} +0 -0
@@ -0,0 +1,75 @@
1
+ import { VALUE_TYPE_NUMBER } from '../../../valueTypes.js';
2
+ import { getDimensions, getItems, getRows, getPrefixedValue, getUnique, getValuesUniqueSortedAsc } from '../default.js';
3
+ import { PREFIX_SEPARATOR } from '../response.js';
4
+ const testId = 'Zj7UnCAulEk.qrur9Dvnyt5';
5
+ describe('default', () => {
6
+ // applyDefaultHandler is tested by response.spec.js
7
+
8
+ describe('getUnique', () => {
9
+ it('removes duplicate string numbers', () => {
10
+ const arr = ['2', '10', '2', '01', '1', '-1', '-1', '1', '10'];
11
+ expect(getUnique(arr)).toEqual(['2', '10', '01', '1', '-1']);
12
+ });
13
+ it('treats "01" and "1" as different strings', () => {
14
+ const arr = ['01', '1', '01'];
15
+ expect(getUnique(arr)).toEqual(['01', '1']);
16
+ });
17
+ it('handles empty array', () => {
18
+ expect(getUnique([])).toEqual([]);
19
+ });
20
+ it('preserves order of first occurrence', () => {
21
+ const arr = ['2', '1', '2', '1'];
22
+ expect(getUnique(arr)).toEqual(['2', '1']);
23
+ });
24
+ });
25
+ describe('getValuesUniqueSortedAsc', () => {
26
+ it('sorts string numbers numerically', () => {
27
+ expect(getValuesUniqueSortedAsc(['1', '10', '-1', '5', '5', '3'], VALUE_TYPE_NUMBER)).toEqual(['-1', '1', '3', '5', '10']);
28
+ });
29
+ it('sorts non-numeric strings as strings', () => {
30
+ expect(getValuesUniqueSortedAsc(['1995-04-18 13:54:00.0', '1991-12-03 12:02:00.0', '1992-01-05 12:51:00.0', '1991-05-21 14:46:00.0', '1998-03-01 11:21:00.0', '1991-09-02 10:21:00.0', '1992-01-04 12:02:00.0', '1991-12-02 12:01:00.0', '1990-01-25 14:51:00.0', '1991-05-22 14:47:00.0'])).toEqual(['1990-01-25 14:51:00.0', '1991-05-21 14:46:00.0', '1991-05-22 14:47:00.0', '1991-09-02 10:21:00.0', '1991-12-02 12:01:00.0', '1991-12-03 12:02:00.0', '1992-01-04 12:02:00.0', '1992-01-05 12:51:00.0', '1995-04-18 13:54:00.0', '1998-03-01 11:21:00.0']);
31
+ });
32
+ });
33
+ describe('getPrefixedValue', () => {
34
+ it('returns prefix and value separated by a colon', () => {
35
+ expect(getPrefixedValue('123', 'id')).toBe(`id${PREFIX_SEPARATOR}123`);
36
+ });
37
+ });
38
+ describe('getItems', () => {
39
+ it('returns an object with prefixed keys and correct names', () => {
40
+ expect(getItems(['1', '2'], testId)).toEqual({
41
+ [testId + `${PREFIX_SEPARATOR}1`]: {
42
+ name: '1'
43
+ },
44
+ [testId + `${PREFIX_SEPARATOR}2`]: {
45
+ name: '2'
46
+ }
47
+ });
48
+ });
49
+ it('uses the formatter if one is provided', () => {
50
+ expect(getItems(['world'], 'hello', {
51
+ itemFormatter: str => str.toUpperCase()
52
+ })).toEqual({
53
+ [`hello${PREFIX_SEPARATOR}world`]: {
54
+ name: 'WORLD'
55
+ }
56
+ });
57
+ });
58
+ });
59
+ describe('getDimensions', () => {
60
+ it('returns an object with dimensionId as key and correctly prefixed values', () => {
61
+ expect(getDimensions(['1', '2'], testId)).toEqual({
62
+ [testId]: [testId + `${PREFIX_SEPARATOR}1`, testId + `${PREFIX_SEPARATOR}2`]
63
+ });
64
+ });
65
+ });
66
+ describe('getRows', () => {
67
+ it('prefixes value at headerIndex for each row', () => {
68
+ const rows = [['a', '1', 'x'], ['b', '2', 'y']];
69
+ expect(getRows(rows, 1, testId)).toEqual([['a', `${testId}${PREFIX_SEPARATOR}1`, 'x'], ['b', `${testId}${PREFIX_SEPARATOR}2`, 'y']]);
70
+ });
71
+ it('handles empty rows array', () => {
72
+ expect(getRows([], 1, 'a')).toEqual([]);
73
+ });
74
+ });
75
+ });
@@ -0,0 +1,32 @@
1
+ import responseHideNa from '../../../../__demo__/data/event/optionset.data.hidena.json';
2
+ import responseOrg from '../../../../__demo__/data/event/optionset.data.org.json';
3
+ import { getOptionCodeIdMap, getOptionIdRows } from '../optionSet.js';
4
+ const testOptionCodeIdMap1 = {
5
+ ONE: 'optionId1',
6
+ TWO: 'optionId2'
7
+ };
8
+ const testOptionCodeIdMap2 = {
9
+ ONE: 'optionId3',
10
+ TWO: 'optionId4'
11
+ };
12
+ describe('optionSet', () => {
13
+ // applyOptionSetHandler is tested by response.spec.js
14
+
15
+ describe('getOptionCodeIdMap', () => {
16
+ it('should create an option code:id object', () => {
17
+ const testId = responseHideNa.headers[0].name;
18
+ const testOptionIds = responseHideNa.metaData.dimensions[testId];
19
+ const testOptionItems = responseHideNa.metaData.items;
20
+ expect(getOptionCodeIdMap(testOptionIds, testOptionItems)).toEqual(testOptionCodeIdMap1);
21
+ });
22
+ });
23
+
24
+ // Test the solution for two option sets with shared option codes
25
+ describe('getOptionIdRows', () => {
26
+ it('should replace option codes with ids in the right index', () => {
27
+ const optionSet1Rows = getOptionIdRows(responseOrg.rows, testOptionCodeIdMap1, 0);
28
+ const optionSet1And2Rows = getOptionIdRows(optionSet1Rows, testOptionCodeIdMap2, 1);
29
+ expect(optionSet1And2Rows).toEqual(responseHideNa.rows);
30
+ });
31
+ });
32
+ });
@@ -0,0 +1,122 @@
1
+ import responseBooleanHideNa from '../../../../__demo__/data/event/boolean.data.hidena.json';
2
+ import responseBoolean from '../../../../__demo__/data/event/boolean.data.json';
3
+ import responseBooleanOrg from '../../../../__demo__/data/event/boolean.data.org.json';
4
+ import responseDateHideNa from '../../../../__demo__/data/event/date.data.hidena.json';
5
+ import responseDate from '../../../../__demo__/data/event/date.data.json';
6
+ import responseDateOrg from '../../../../__demo__/data/event/date.data.org.json';
7
+ import responseDatetimeHideNa from '../../../../__demo__/data/event/datetime.data.hidena.json';
8
+ import responseDatetime from '../../../../__demo__/data/event/datetime.data.json';
9
+ import responseDatetimeOrg from '../../../../__demo__/data/event/datetime.data.org.json';
10
+ import responseTextHideNa from '../../../../__demo__/data/event/email.data.hidena.json';
11
+ import responseText from '../../../../__demo__/data/event/email.data.json';
12
+ import responseTextOrg from '../../../../__demo__/data/event/email.data.org.json';
13
+ import responseNumericHideNa from '../../../../__demo__/data/event/integer.data.hidena.json';
14
+ import responseNumeric from '../../../../__demo__/data/event/integer.data.json';
15
+ import responseNumericOrg from '../../../../__demo__/data/event/integer.data.org.json';
16
+ import responseOptionSetHideNa from '../../../../__demo__/data/event/optionset.data.hidena.json';
17
+ import responseOptionSet from '../../../../__demo__/data/event/optionset.data.json';
18
+ import responseOptionSetOrg from '../../../../__demo__/data/event/optionset.data.org.json';
19
+ import responseTimeHideNa from '../../../../__demo__/data/event/time.data.hidena.json';
20
+ import responseTime from '../../../../__demo__/data/event/time.data.json';
21
+ import responseTimeOrg from '../../../../__demo__/data/event/time.data.org.json';
22
+ import responseYesOnlyHideNa from '../../../../__demo__/data/event/yesonly.data.hidena.json';
23
+ import responseYesOnly from '../../../../__demo__/data/event/yesonly.data.json';
24
+ import responseYesOnlyOrg from '../../../../__demo__/data/event/yesonly.data.org.json';
25
+ import { VALUE_TYPE_AGE, VALUE_TYPE_BOOLEAN, VALUE_TYPE_DATE, VALUE_TYPE_DATETIME, VALUE_TYPE_PERCENTAGE, VALUE_TYPE_TRUE_ONLY } from '../../../valueTypes.js';
26
+ import { getItemFormatterByValueType, transformResponse } from '../response.js';
27
+ describe('response', () => {
28
+ describe('getItemFormatterByValueType', () => {
29
+ it('should return the correct formatter and format correctly', () => {
30
+ expect(getItemFormatterByValueType(VALUE_TYPE_BOOLEAN)('1')).toBe('Yes');
31
+ expect(getItemFormatterByValueType(VALUE_TYPE_BOOLEAN)('0')).toBe('No');
32
+ expect(getItemFormatterByValueType(VALUE_TYPE_TRUE_ONLY)('1')).toBe('Yes');
33
+ expect(getItemFormatterByValueType(VALUE_TYPE_AGE)('1985-01-01 00:00:00.0')).toBe('1985-01-01');
34
+ expect(getItemFormatterByValueType(VALUE_TYPE_DATE)('2023-01-01 00:00:00.0')).toBe('2023-01-01');
35
+ expect(getItemFormatterByValueType(VALUE_TYPE_DATETIME)('2023-01-01 12:00:00.0')).toBe('2023-01-01 12:00');
36
+ expect(getItemFormatterByValueType(VALUE_TYPE_PERCENTAGE)('50.0')).toBe('50');
37
+ expect(getItemFormatterByValueType('NOT_A_TYPE')).toBe(undefined);
38
+ });
39
+ });
40
+ describe('transformResponse', () => {
41
+ describe('boolean', () => {
42
+ it('transforms response', () => {
43
+ expect(transformResponse(responseBooleanOrg)).toEqual(responseBoolean);
44
+ });
45
+ it('transforms response and hides N/A data', () => {
46
+ expect(transformResponse(responseBooleanOrg, {
47
+ hideNaData: true
48
+ })).toEqual(responseBooleanHideNa);
49
+ });
50
+ });
51
+ describe('date', () => {
52
+ it('transforms response', () => {
53
+ expect(transformResponse(responseDateOrg)).toEqual(responseDate);
54
+ });
55
+ it('transforms response and hides N/A data', () => {
56
+ expect(transformResponse(responseDateOrg, {
57
+ hideNaData: true
58
+ })).toEqual(responseDateHideNa);
59
+ });
60
+ });
61
+ describe('datetime', () => {
62
+ it('transforms response', () => {
63
+ expect(transformResponse(responseDatetimeOrg)).toEqual(responseDatetime);
64
+ });
65
+ it('transforms response and hides N/A data', () => {
66
+ expect(transformResponse(responseDatetimeOrg, {
67
+ hideNaData: true
68
+ })).toEqual(responseDatetimeHideNa);
69
+ });
70
+ });
71
+ describe('numeric', () => {
72
+ it('transforms response', () => {
73
+ expect(transformResponse(responseNumericOrg)).toEqual(responseNumeric);
74
+ });
75
+ it('transforms response and hides N/A data', () => {
76
+ expect(transformResponse(responseNumericOrg, {
77
+ hideNaData: true
78
+ })).toEqual(responseNumericHideNa);
79
+ });
80
+ });
81
+ describe('option set', () => {
82
+ it('transforms response with non-unique codes across two option sets', () => {
83
+ expect(transformResponse(responseOptionSetOrg)).toEqual(responseOptionSet);
84
+ });
85
+ it('transforms response with non-unique codes across two option sets and hides N/A data', () => {
86
+ expect(transformResponse(responseOptionSetOrg, {
87
+ hideNaData: true
88
+ })).toEqual(responseOptionSetHideNa);
89
+ });
90
+ });
91
+ describe('text', () => {
92
+ it('transforms response', () => {
93
+ expect(transformResponse(responseTextOrg)).toEqual(responseText);
94
+ });
95
+ it('transforms response and hides N/A data', () => {
96
+ expect(transformResponse(responseTextOrg, {
97
+ hideNaData: true
98
+ })).toEqual(responseTextHideNa);
99
+ });
100
+ });
101
+ describe('time', () => {
102
+ it('transforms response', () => {
103
+ expect(transformResponse(responseTimeOrg)).toEqual(responseTime);
104
+ });
105
+ it('transforms response and hides N/A data', () => {
106
+ expect(transformResponse(responseTimeOrg, {
107
+ hideNaData: true
108
+ })).toEqual(responseTimeHideNa);
109
+ });
110
+ });
111
+ describe('yes only', () => {
112
+ it('transforms response', () => {
113
+ expect(transformResponse(responseYesOnlyOrg)).toEqual(responseYesOnly);
114
+ });
115
+ it('transforms response and hides N/A data', () => {
116
+ expect(transformResponse(responseYesOnlyOrg, {
117
+ hideNaData: true
118
+ })).toEqual(responseYesOnlyHideNa);
119
+ });
120
+ });
121
+ });
122
+ });
@@ -0,0 +1,52 @@
1
+ import { isBooleanValueType, isNumericValueType, VALUE_TYPE_TEXT } from '../../valueTypes.js';
2
+ import { NA_VALUE, PREFIX_SEPARATOR } from './response.js';
3
+ export const getUnique = array => [...new Set(array)];
4
+ export const getValuesUniqueSortedAsc = (values, valueType = VALUE_TYPE_TEXT) => isNumericValueType(valueType) || isBooleanValueType(valueType) ? getUnique(values).map(x => [Number(x), x]).sort((a, b) => a[0] - b[0]).map(arr => arr[1]) : getUnique(values).slice().sort((a, b) => a.localeCompare(b));
5
+ export const getPrefixedValue = (value, prefix) => `${prefix}${PREFIX_SEPARATOR}${value}`;
6
+ export const getItems = (values, dimensionId, {
7
+ itemFormatter
8
+ } = {}) => values.reduce((items, value) => {
9
+ items[getPrefixedValue(value, dimensionId)] = {
10
+ name: itemFormatter ? itemFormatter(value) : value
11
+ };
12
+ return items;
13
+ }, {});
14
+ export const getDimensions = (values, dimensionId) => ({
15
+ [dimensionId]: values.map(value => getPrefixedValue(value, dimensionId))
16
+ });
17
+ export const getRows = (rows, headerIndex, dimensionId) => {
18
+ let row;
19
+ let value;
20
+ return rows.map(r => {
21
+ value = r[headerIndex];
22
+ if (value !== NA_VALUE) {
23
+ row = [...r];
24
+ row[headerIndex] = getPrefixedValue(row[headerIndex], dimensionId);
25
+ return row;
26
+ }
27
+ return r;
28
+ });
29
+ };
30
+ export const applyDefaultHandler = (response, headerIndex, {
31
+ itemFormatter
32
+ } = {}) => {
33
+ const header = response.headers[headerIndex];
34
+ const uniqueSortedValuesAsc = getValuesUniqueSortedAsc(response.rows.map(row => row[headerIndex]).filter(value => value !== NA_VALUE), header.valueType);
35
+ return {
36
+ ...response,
37
+ metaData: {
38
+ ...response.metaData,
39
+ items: {
40
+ ...response.metaData.items,
41
+ ...getItems(uniqueSortedValuesAsc, header.name, {
42
+ itemFormatter
43
+ })
44
+ },
45
+ dimensions: {
46
+ ...response.metaData.dimensions,
47
+ ...getDimensions(uniqueSortedValuesAsc, header.name)
48
+ }
49
+ },
50
+ rows: [...getRows(response.rows, headerIndex, header.name)]
51
+ };
52
+ };
@@ -0,0 +1,27 @@
1
+ import { NA_VALUE } from './response.js';
2
+ export const getOptionCodeIdMap = (optionIds, items) => optionIds.reduce((map, optionId) => {
3
+ map[items[optionId].code] = optionId;
4
+ return map;
5
+ }, {});
6
+ export const getOptionIdRows = (rows, optionCodeIdMap, headerIndex) => {
7
+ let value;
8
+ let row;
9
+ return rows.map(r => {
10
+ value = r[headerIndex];
11
+ if (value !== NA_VALUE) {
12
+ row = [...r];
13
+ row[headerIndex] = optionCodeIdMap[value];
14
+ return row;
15
+ }
16
+ return r;
17
+ });
18
+ };
19
+ export const applyOptionSetHandler = (response, headerIndex) => {
20
+ const header = response.headers[headerIndex];
21
+ const optionIds = response.metaData.dimensions[header.name];
22
+ const optionCodeIdMap = getOptionCodeIdMap(optionIds, response.metaData.items);
23
+ return {
24
+ ...response,
25
+ rows: getOptionIdRows(response.rows, optionCodeIdMap, headerIndex)
26
+ };
27
+ };
@@ -0,0 +1,86 @@
1
+ import i18n from '@dhis2/d2-i18n';
2
+ import { DIMENSION_ID_ORGUNIT, DIMENSION_ID_PERIOD } from '../../predefinedDimensions.js';
3
+ import { VALUE_TYPE_AGE, VALUE_TYPE_BOOLEAN, VALUE_TYPE_COORDINATE, VALUE_TYPE_DATE, VALUE_TYPE_DATETIME, VALUE_TYPE_FILE_RESOURCE, VALUE_TYPE_GEOJSON, VALUE_TYPE_IMAGE, VALUE_TYPE_MULTI_TEXT, VALUE_TYPE_PERCENTAGE, VALUE_TYPE_REFERENCE, VALUE_TYPE_TRUE_ONLY } from '../../valueTypes.js';
4
+ import { applyDefaultHandler } from './default.js';
5
+ import { applyOptionSetHandler } from './optionSet.js';
6
+ export const PREFIX_SEPARATOR = '_';
7
+ export const NA_VALUE = '';
8
+ export const NA_VALUE_ITEM = {
9
+ name: i18n.t('No value'),
10
+ style: {
11
+ fontStyle: 'italic',
12
+ color: '#6C7787',
13
+ fontFamily: 'monospace',
14
+ letterSpacing: '-0.3px'
15
+ }
16
+ };
17
+ export const UNSUPPORTED_VALUE_TYPES = [VALUE_TYPE_COORDINATE, VALUE_TYPE_GEOJSON, VALUE_TYPE_FILE_RESOURCE, VALUE_TYPE_IMAGE, VALUE_TYPE_MULTI_TEXT, VALUE_TYPE_REFERENCE];
18
+ export const getItemFormatterByValueType = valueType => {
19
+ switch (valueType) {
20
+ case VALUE_TYPE_AGE:
21
+ case VALUE_TYPE_DATE:
22
+ return name => name.replace(/ 00:00:00\.0$/, '');
23
+ case VALUE_TYPE_BOOLEAN:
24
+ case VALUE_TYPE_TRUE_ONLY:
25
+ return name => name === '1' ? i18n.t('Yes') : i18n.t('No');
26
+ case VALUE_TYPE_DATETIME:
27
+ return name => name.replace(/:00\.0$/, '');
28
+ case VALUE_TYPE_PERCENTAGE:
29
+ return name => name.endsWith('.0') ? name.slice(0, -2) : name;
30
+ default:
31
+ return undefined;
32
+ }
33
+ };
34
+ export const transformResponse = (response, {
35
+ hideNaData = false
36
+ } = {}) => {
37
+ // Do not modify the original response
38
+ // Rows is mapped by the handlers
39
+ let transformedResponse = {
40
+ ...response,
41
+ metaData: {
42
+ ...response.metaData,
43
+ items: {
44
+ ...response.metaData.items
45
+ },
46
+ dimensions: {
47
+ ...response.metaData.dimensions
48
+ }
49
+ }
50
+ };
51
+
52
+ // Add index to all headers
53
+ // Include only headers that are "meta" and skip "pe" and "ou"
54
+ const metaHeaders = response.headers.map((header, index) => ({
55
+ ...header,
56
+ index
57
+ })).filter(header => Boolean(header.meta) && ![DIMENSION_ID_PERIOD, DIMENSION_ID_ORGUNIT].includes(header.name));
58
+
59
+ // Legendsets use uids and do not need transformation
60
+ // Skip unsupported value types
61
+ // Option set and Boolean have separate handlers
62
+ // All other types use default handler with specific item formatter
63
+ metaHeaders.forEach(header => {
64
+ if (!(header.legendSet || UNSUPPORTED_VALUE_TYPES.includes(header.valueType))) {
65
+ if (header.optionSet) {
66
+ transformedResponse = applyOptionSetHandler(transformedResponse, header.index);
67
+ } else {
68
+ transformedResponse = applyDefaultHandler(transformedResponse, header.index, {
69
+ itemFormatter: getItemFormatterByValueType(header.valueType)
70
+ });
71
+ }
72
+ }
73
+ });
74
+
75
+ // Add "No value" dimension item if "Hide NA data" option is disabled
76
+ // Only add if there is at least one empty value
77
+ if (!hideNaData) {
78
+ metaHeaders.forEach(header => {
79
+ if (response.rows.map(row => row[header.index]).includes(NA_VALUE)) {
80
+ transformedResponse.metaData.dimensions[header.name] = [...transformedResponse.metaData.dimensions[header.name], NA_VALUE];
81
+ transformedResponse.metaData.items[NA_VALUE] = NA_VALUE_ITEM;
82
+ }
83
+ });
84
+ }
85
+ return transformedResponse;
86
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhis2/analytics",
3
- "version": "28.0.4",
3
+ "version": "28.1.0",
4
4
  "main": "./build/cjs/index.js",
5
5
  "module": "./build/es/index.js",
6
6
  "exports": {
@@ -42,10 +42,8 @@
42
42
  "@testing-library/dom": "^10.4.0",
43
43
  "@testing-library/jest-dom": "^6.6.3",
44
44
  "@testing-library/react": "^16.3.0",
45
- "enzyme": "^3.9.0",
46
- "enzyme-adapter-react-16": "^1.15.6",
45
+ "@testing-library/user-event": "^14.6.1",
47
46
  "fs-extra": "^10.1.0",
48
- "jest-enzyme": "^7.0.2",
49
47
  "prop-types": "^15",
50
48
  "react": "^18.3.1",
51
49
  "react-dom": "^18.3.1",
@@ -1,89 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`The OrgUnitDimension component matches the snapshot 1`] = `
4
- <div
5
- className="container"
6
- >
7
- <div
8
- className="userOrgUnitsWrapper"
9
- >
10
- <Checkbox
11
- checked={false}
12
- dataTest="dhis2-uicore-checkbox"
13
- dense={true}
14
- indeterminate={false}
15
- label="User organisation unit"
16
- onChange={[Function]}
17
- />
18
- <Checkbox
19
- checked={false}
20
- dataTest="dhis2-uicore-checkbox"
21
- dense={true}
22
- indeterminate={false}
23
- label="User sub-units"
24
- onChange={[Function]}
25
- />
26
- <Checkbox
27
- checked={false}
28
- dataTest="dhis2-uicore-checkbox"
29
- dense={true}
30
- indeterminate={false}
31
- label="User sub-x2-units"
32
- onChange={[Function]}
33
- />
34
- </div>
35
- <div
36
- className="orgUnitTreeWrapper"
37
- >
38
- <OrganisationUnitTree
39
- dataTest="org-unit-tree"
40
- initiallyExpanded={Array []}
41
- onChange={[Function]}
42
- roots={Array []}
43
- selected={Array []}
44
- />
45
- </div>
46
- <div
47
- className="selectsWrapper"
48
- >
49
- <MultiSelect
50
- dataTest="org-unit-level-select"
51
- dense={true}
52
- loading={true}
53
- onChange={[Function]}
54
- placeholder="Select a level"
55
- selected={Array []}
56
- />
57
- <MultiSelect
58
- dataTest="org-unit-group-select"
59
- dense={true}
60
- loading={true}
61
- onChange={[Function]}
62
- placeholder="Select a group"
63
- selected={Array []}
64
- />
65
- </div>
66
- <div
67
- className="summaryWrapper"
68
- >
69
- <span
70
- className="summaryText"
71
- >
72
- Nothing selected
73
- </span>
74
- <div
75
- className="deselectButton"
76
- >
77
- <Button
78
- disabled={true}
79
- onClick={[Function]}
80
- secondary={true}
81
- small={true}
82
- >
83
- Deselect all
84
- </Button>
85
- </div>
86
- </div>
87
- <style />
88
- </div>
89
- `;
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- var _enzyme = require("enzyme");
4
- var _react = _interopRequireDefault(require("react"));
5
- var _PeriodTransfer = _interopRequireDefault(require("../PeriodTransfer.js"));
6
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
- describe('The Period Selector component', () => {
8
- let props;
9
- let shallowPeriodTransfer;
10
- const getWrapper = () => {
11
- if (!shallowPeriodTransfer) {
12
- shallowPeriodTransfer = (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_PeriodTransfer.default, props));
13
- }
14
- return shallowPeriodTransfer;
15
- };
16
- beforeEach(() => {
17
- props = {
18
- initialSelectedPeriods: [],
19
- onSelect: jest.fn(),
20
- rightFooter: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null),
21
- dataTest: 'period-dimension'
22
- };
23
- shallowPeriodTransfer = undefined;
24
- });
25
- it('matches the snapshot', () => {
26
- const wrapper = getWrapper();
27
- expect(wrapper).toMatchSnapshot();
28
- });
29
- });
@@ -1,92 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`The Fixed Period Single Select component matches the snapshot 1`] = `
4
- <div
5
- data-test="dhis2-analytics-fixedperiodselect"
6
- >
7
- <div
8
- className="row"
9
- >
10
- <FixedPeriodFilter
11
- currentPeriodType="MONTHLY"
12
- currentYear="2014"
13
- onSelectPeriodType={[Function]}
14
- onSelectYear={[Function]}
15
- />
16
- </div>
17
- <SingleSelectField
18
- clearText={[Function]}
19
- dataTest="dhis2-uiwidgets-singleselectfield"
20
- dense={true}
21
- empty={[Function]}
22
- filterPlaceholder={[Function]}
23
- label="Period"
24
- loadingText={[Function]}
25
- noMatchText={[Function]}
26
- onChange={[Function]}
27
- selected="201405"
28
- >
29
- <SingleSelectOption
30
- key="201401"
31
- label="January 2014"
32
- value="201401"
33
- />
34
- <SingleSelectOption
35
- key="201402"
36
- label="February 2014"
37
- value="201402"
38
- />
39
- <SingleSelectOption
40
- key="201403"
41
- label="March 2014"
42
- value="201403"
43
- />
44
- <SingleSelectOption
45
- key="201404"
46
- label="April 2014"
47
- value="201404"
48
- />
49
- <SingleSelectOption
50
- key="201405"
51
- label="May 2014"
52
- value="201405"
53
- />
54
- <SingleSelectOption
55
- key="201406"
56
- label="June 2014"
57
- value="201406"
58
- />
59
- <SingleSelectOption
60
- key="201407"
61
- label="July 2014"
62
- value="201407"
63
- />
64
- <SingleSelectOption
65
- key="201408"
66
- label="August 2014"
67
- value="201408"
68
- />
69
- <SingleSelectOption
70
- key="201409"
71
- label="September 2014"
72
- value="201409"
73
- />
74
- <SingleSelectOption
75
- key="201410"
76
- label="October 2014"
77
- value="201410"
78
- />
79
- <SingleSelectOption
80
- key="201411"
81
- label="November 2014"
82
- value="201411"
83
- />
84
- <SingleSelectOption
85
- key="201412"
86
- label="December 2014"
87
- value="201412"
88
- />
89
- </SingleSelectField>
90
- <style />
91
- </div>
92
- `;
@@ -1,16 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`The Period Dimension component matches the snapshot 1`] = `
4
- <PeriodTransfer
5
- dataTest="period-dimension"
6
- onSelect={[Function]}
7
- periodsSettings={
8
- Object {
9
- "calendar": "gregory",
10
- "locale": "en",
11
- }
12
- }
13
- rightFooter={<React.Fragment />}
14
- selectedItems={Array []}
15
- />
16
- `;