@dhis2/analytics 26.8.7 → 26.9.3

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 (484) hide show
  1. package/build/cjs/__demo__/CalculationModal.stories.js +38 -16
  2. package/build/cjs/__demo__/DimensionsPanel.stories.js +65 -27
  3. package/build/cjs/__demo__/DynamicDimension.stories.js +30 -12
  4. package/build/cjs/__demo__/FileMenu.stories.js +27 -10
  5. package/build/cjs/__demo__/Filter.stories.js +20 -10
  6. package/build/cjs/__demo__/FixedPeriodSelect.stories.js +35 -17
  7. package/build/cjs/__demo__/InterpretationsUnit.stories.js +22 -11
  8. package/build/cjs/__demo__/OpenFileDialog.stories.js +44 -27
  9. package/build/cjs/__demo__/OrgUnitDimension.stories.js +103 -54
  10. package/build/cjs/__demo__/PeriodDimension.stories.js +64 -23
  11. package/build/cjs/__demo__/PivotTable.stories.js +413 -210
  12. package/build/cjs/__demo__/SingleValue.stories.js +684 -0
  13. package/build/cjs/__demo__/Toolbar.stories.js +44 -34
  14. package/build/cjs/__fixtures__/fixtures.js +2 -3
  15. package/build/cjs/api/analytics/Analytics.js +2 -3
  16. package/build/cjs/api/analytics/AnalyticsAggregate.js +2 -3
  17. package/build/cjs/api/analytics/AnalyticsBase.js +2 -3
  18. package/build/cjs/api/analytics/AnalyticsEnrollments.js +2 -3
  19. package/build/cjs/api/analytics/AnalyticsEvents.js +2 -3
  20. package/build/cjs/api/analytics/AnalyticsRequest.js +2 -3
  21. package/build/cjs/api/analytics/AnalyticsRequestBase.js +2 -3
  22. package/build/cjs/api/analytics/AnalyticsRequestDimensionsMixin.js +2 -3
  23. package/build/cjs/api/analytics/AnalyticsRequestFiltersMixin.js +2 -3
  24. package/build/cjs/api/analytics/AnalyticsRequestPropertiesMixin.js +2 -3
  25. package/build/cjs/api/analytics/AnalyticsResponse.js +2 -4
  26. package/build/cjs/api/analytics/AnalyticsResponseHeader.js +1 -2
  27. package/build/cjs/api/analytics/AnalyticsTrackedEntities.js +2 -3
  28. package/build/cjs/api/analytics/__tests__/Analytics.spec.js +1 -1
  29. package/build/cjs/api/analytics/__tests__/AnalyticsAggregate.spec.js +1 -1
  30. package/build/cjs/api/analytics/__tests__/AnalyticsBase.spec.js +2 -2
  31. package/build/cjs/api/analytics/__tests__/AnalyticsEnrollments.spec.js +1 -1
  32. package/build/cjs/api/analytics/__tests__/AnalyticsEvents.spec.js +1 -1
  33. package/build/cjs/api/analytics/__tests__/AnalyticsRequest.spec.js +1 -1
  34. package/build/cjs/api/analytics/__tests__/AnalyticsRequestBase.spec.js +1 -1
  35. package/build/cjs/api/analytics/__tests__/AnalyticsResponse.spec.js +1 -1
  36. package/build/cjs/api/analytics/__tests__/AnalyticsResponseHeader.spec.js +1 -1
  37. package/build/cjs/api/dimensions.js +11 -21
  38. package/build/cjs/api/expression.js +5 -9
  39. package/build/cjs/assets/AssignedCategoriesIcon.js +2 -3
  40. package/build/cjs/assets/DimensionItemIcons/CalculationIcon.js +3 -4
  41. package/build/cjs/assets/DimensionItemIcons/DataElementIcon.js +3 -4
  42. package/build/cjs/assets/DimensionItemIcons/GenericIcon.js +3 -4
  43. package/build/cjs/assets/DimensionItemIcons/PeriodIcon.js +3 -4
  44. package/build/cjs/assets/DynamicDimensionIcon.js +2 -3
  45. package/build/cjs/assets/FormulaIcon.js +2 -3
  46. package/build/cjs/components/AboutAOUnit/AboutAOUnit.js +4 -5
  47. package/build/cjs/components/AboutAOUnit/styles/AboutAOUnit.style.js +1 -2
  48. package/build/cjs/components/AboutAOUnit/utils.js +7 -13
  49. package/build/cjs/components/CachedDataQueryProvider.js +3 -3
  50. package/build/cjs/components/DataDimension/Calculation/CalculationModal.js +4 -5
  51. package/build/cjs/components/DataDimension/Calculation/DataElementOption.js +3 -4
  52. package/build/cjs/components/DataDimension/Calculation/DataElementSelector.js +4 -5
  53. package/build/cjs/components/DataDimension/Calculation/DndContext.js +8 -10
  54. package/build/cjs/components/DataDimension/Calculation/DragHandleIcon.js +3 -4
  55. package/build/cjs/components/DataDimension/Calculation/DraggingItem.js +2 -3
  56. package/build/cjs/components/DataDimension/Calculation/DropZone.js +2 -3
  57. package/build/cjs/components/DataDimension/Calculation/FormulaField.js +4 -7
  58. package/build/cjs/components/DataDimension/Calculation/FormulaItem.js +5 -6
  59. package/build/cjs/components/DataDimension/Calculation/MathOperatorSelector.js +2 -3
  60. package/build/cjs/components/DataDimension/Calculation/Operator.js +3 -4
  61. package/build/cjs/components/DataDimension/Calculation/styles/CalculationModal.style.js +1 -2
  62. package/build/cjs/components/DataDimension/Calculation/styles/DataElementOption.style.js +1 -2
  63. package/build/cjs/components/DataDimension/Calculation/styles/DataElementSelector.style.js +1 -2
  64. package/build/cjs/components/DataDimension/Calculation/styles/DraggingItem.style.js +1 -2
  65. package/build/cjs/components/DataDimension/Calculation/styles/DropZone.style.js +1 -2
  66. package/build/cjs/components/DataDimension/Calculation/styles/FormulaField.style.js +1 -2
  67. package/build/cjs/components/DataDimension/Calculation/styles/FormulaItem.style.js +1 -2
  68. package/build/cjs/components/DataDimension/Calculation/styles/MathOperatorSelector.style.js +1 -2
  69. package/build/cjs/components/DataDimension/Calculation/styles/Operator.style.js +1 -2
  70. package/build/cjs/components/DataDimension/DataDimension.js +4 -5
  71. package/build/cjs/components/DataDimension/DataTypeSelector.js +2 -3
  72. package/build/cjs/components/DataDimension/DetailSelector.js +2 -3
  73. package/build/cjs/components/DataDimension/GroupSelector.js +4 -5
  74. package/build/cjs/components/DataDimension/ItemSelector.js +5 -7
  75. package/build/cjs/components/DataDimension/MetricSelector.js +2 -3
  76. package/build/cjs/components/DataDimension/styles/DataTypeSelector.style.js +1 -2
  77. package/build/cjs/components/DataDimension/styles/DetailSelector.style.js +1 -2
  78. package/build/cjs/components/DataDimension/styles/GroupSelector.style.js +1 -2
  79. package/build/cjs/components/DataDimension/styles/MetricSelector.style.js +1 -2
  80. package/build/cjs/components/DimensionMenu.js +5 -6
  81. package/build/cjs/components/DimensionsPanel/DimensionsPanel.js +7 -8
  82. package/build/cjs/components/DimensionsPanel/List/DimensionItem.js +8 -9
  83. package/build/cjs/components/DimensionsPanel/List/DimensionList.js +7 -8
  84. package/build/cjs/components/DimensionsPanel/List/OptionsButton.js +2 -3
  85. package/build/cjs/components/DimensionsPanel/List/RecommendedIcon.js +2 -3
  86. package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +2 -2
  87. package/build/cjs/components/DimensionsPanel/List/styles/DimensionItem.style.js +1 -2
  88. package/build/cjs/components/DimensionsPanel/List/styles/DimensionList.style.js +1 -2
  89. package/build/cjs/components/DimensionsPanel/List/styles/RecommendedIcon.style.js +2 -3
  90. package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +2 -2
  91. package/build/cjs/components/DimensionsPanel/styles/DimensionsPanel.style.js +2 -3
  92. package/build/cjs/components/DynamicDimension/DynamicDimension.js +3 -5
  93. package/build/cjs/components/DynamicDimension/ItemSelector.js +5 -7
  94. package/build/cjs/components/DynamicDimension/styles/DynamicDimension.style.js +1 -2
  95. package/build/cjs/components/FileMenu/DeleteDialog.js +3 -3
  96. package/build/cjs/components/FileMenu/FileMenu.js +4 -5
  97. package/build/cjs/components/FileMenu/FileMenu.styles.js +2 -4
  98. package/build/cjs/components/FileMenu/GetLinkDialog.js +1 -1
  99. package/build/cjs/components/FileMenu/GetLinkDialog.styles.js +1 -2
  100. package/build/cjs/components/FileMenu/RenameDialog.js +3 -3
  101. package/build/cjs/components/FileMenu/SaveAsDialog.js +3 -3
  102. package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +2 -2
  103. package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +2 -2
  104. package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +2 -2
  105. package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +2 -2
  106. package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +2 -2
  107. package/build/cjs/components/FileMenu/utils.js +6 -11
  108. package/build/cjs/components/Filter/Filter.js +2 -3
  109. package/build/cjs/components/Filter/__tests__/Filter.spec.js +2 -2
  110. package/build/cjs/components/Filter/styles/Filter.style.js +1 -2
  111. package/build/cjs/components/Interpretations/InterpretationModal/Comment.js +3 -3
  112. package/build/cjs/components/Interpretations/InterpretationModal/CommentAddForm.js +3 -3
  113. package/build/cjs/components/Interpretations/InterpretationModal/CommentDeleteButton.js +3 -3
  114. package/build/cjs/components/Interpretations/InterpretationModal/CommentUpdateForm.js +3 -3
  115. package/build/cjs/components/Interpretations/InterpretationModal/InterpretationModal.js +3 -3
  116. package/build/cjs/components/Interpretations/InterpretationModal/InterpretationThread.js +3 -3
  117. package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationForm.js +3 -3
  118. package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationList.js +1 -1
  119. package/build/cjs/components/Interpretations/InterpretationsUnit/InterpretationsUnit.js +4 -5
  120. package/build/cjs/components/Interpretations/common/Interpretation/Interpretation.js +3 -3
  121. package/build/cjs/components/Interpretations/common/Interpretation/InterpretationDeleteButton.js +1 -1
  122. package/build/cjs/components/Interpretations/common/Interpretation/InterpretationSharingLink.js +3 -3
  123. package/build/cjs/components/Interpretations/common/Interpretation/InterpretationUpdateForm.js +3 -3
  124. package/build/cjs/components/Interpretations/common/Message/Message.js +1 -1
  125. package/build/cjs/components/Interpretations/common/Message/MessageButtonStrip.js +1 -1
  126. package/build/cjs/components/Interpretations/common/Message/MessageEditorContainer.js +1 -1
  127. package/build/cjs/components/Interpretations/common/Message/MessageIconButton.js +1 -1
  128. package/build/cjs/components/Interpretations/common/Message/MessageInput.js +5 -6
  129. package/build/cjs/components/Interpretations/common/Message/MessageStatsBar.js +1 -1
  130. package/build/cjs/components/LegendKey/LegendKey.js +2 -3
  131. package/build/cjs/components/LegendKey/styles/LegendKey.style.js +1 -2
  132. package/build/cjs/components/OfflineTooltip.js +1 -1
  133. package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +5 -9
  134. package/build/cjs/components/OpenFileDialog/CustomSelectOption.js +2 -3
  135. package/build/cjs/components/OpenFileDialog/DateField.js +2 -3
  136. package/build/cjs/components/OpenFileDialog/FileList.js +2 -3
  137. package/build/cjs/components/OpenFileDialog/NameFilter.js +2 -3
  138. package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +4 -5
  139. package/build/cjs/components/OpenFileDialog/OpenFileDialog.styles.js +1 -2
  140. package/build/cjs/components/OpenFileDialog/PaginationControls.js +2 -3
  141. package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +2 -3
  142. package/build/cjs/components/OpenFileDialog/styles/CustomSelectOption.style.js +1 -2
  143. package/build/cjs/components/OpenFileDialog/utils.js +5 -9
  144. package/build/cjs/components/Options/VisualizationOptions.js +4 -5
  145. package/build/cjs/components/Options/styles/VisualizationOptions.style.js +17 -32
  146. package/build/cjs/components/OrgUnitDimension/OrgUnitDimension.js +6 -10
  147. package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +60 -0
  148. package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +94 -0
  149. package/build/cjs/components/OrgUnitDimension/styles/OrgUnitDimension.style.js +1 -2
  150. package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +2 -3
  151. package/build/cjs/components/PeriodDimension/FixedPeriodSelect.js +7 -8
  152. package/build/cjs/components/PeriodDimension/PeriodDimension.js +2 -3
  153. package/build/cjs/components/PeriodDimension/PeriodTransfer.js +5 -6
  154. package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +2 -3
  155. package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +2 -2
  156. package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +2 -2
  157. package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +2 -2
  158. package/build/cjs/components/PeriodDimension/styles/FixedPeriodSelect.style.js +1 -2
  159. package/build/cjs/components/PeriodDimension/styles/PeriodFilter.style.js +1 -2
  160. package/build/cjs/components/PeriodDimension/utils/fixedPeriods.js +1 -2
  161. package/build/cjs/components/PeriodDimension/utils/index.js +19 -38
  162. package/build/cjs/components/PeriodDimension/utils/relativePeriods.js +1 -1
  163. package/build/cjs/components/PivotTable/PivotTable.js +4 -5
  164. package/build/cjs/components/PivotTable/PivotTableBody.js +1 -1
  165. package/build/cjs/components/PivotTable/PivotTableCell.js +3 -4
  166. package/build/cjs/components/PivotTable/PivotTableClippedAxis.js +1 -1
  167. package/build/cjs/components/PivotTable/PivotTableColumnHeaderCell.js +1 -1
  168. package/build/cjs/components/PivotTable/PivotTableColumnHeaders.js +1 -1
  169. package/build/cjs/components/PivotTable/PivotTableContainer.js +2 -3
  170. package/build/cjs/components/PivotTable/PivotTableDimensionLabelCell.js +1 -1
  171. package/build/cjs/components/PivotTable/PivotTableEmptyCell.js +3 -4
  172. package/build/cjs/components/PivotTable/PivotTableEmptyRow.js +1 -1
  173. package/build/cjs/components/PivotTable/PivotTableEngineContext.js +4 -5
  174. package/build/cjs/components/PivotTable/PivotTableHead.js +1 -1
  175. package/build/cjs/components/PivotTable/PivotTableHeaderCell.js +1 -1
  176. package/build/cjs/components/PivotTable/PivotTableRow.js +1 -1
  177. package/build/cjs/components/PivotTable/PivotTableRowHeaderCell.js +1 -1
  178. package/build/cjs/components/PivotTable/PivotTableSortIcon.js +1 -1
  179. package/build/cjs/components/PivotTable/PivotTableTitleRow.js +3 -3
  180. package/build/cjs/components/PivotTable/PivotTableTitleRows.js +1 -1
  181. package/build/cjs/components/PivotTable/PivotTableValueCell.js +3 -3
  182. package/build/cjs/components/PivotTable/icons/SortIconAscending.js +1 -1
  183. package/build/cjs/components/PivotTable/icons/SortIconDescending.js +1 -1
  184. package/build/cjs/components/PivotTable/icons/SortIconIdle.js +1 -1
  185. package/build/cjs/components/PivotTable/styles/PivotTable.style.js +3 -6
  186. package/build/cjs/components/RichText/Editor/Editor.js +4 -5
  187. package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +2 -2
  188. package/build/cjs/components/RichText/Editor/markdownHandler.js +9 -18
  189. package/build/cjs/components/RichText/Editor/styles/Editor.style.js +4 -8
  190. package/build/cjs/components/RichText/Parser/MdParser.js +1 -1
  191. package/build/cjs/components/RichText/Parser/Parser.js +3 -3
  192. package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +2 -2
  193. package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuBar.js +3 -3
  194. package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js +3 -3
  195. package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuList.js +3 -3
  196. package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuListItem.js +4 -4
  197. package/build/cjs/components/Toolbar/HoverMenuBar/HoverMenuListItem.styles.js +1 -2
  198. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +4 -4
  199. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +3 -3
  200. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +7 -7
  201. package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +5 -5
  202. package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +1 -1
  203. package/build/cjs/components/Toolbar/MenuButton.styles.js +1 -2
  204. package/build/cjs/components/Toolbar/Toolbar.js +1 -1
  205. package/build/cjs/components/Toolbar/ToolbarSidebar.js +1 -1
  206. package/build/cjs/components/Toolbar/UpdateButton.js +2 -2
  207. package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +6 -6
  208. package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +3 -3
  209. package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +4 -4
  210. package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +5 -5
  211. package/build/cjs/components/TransferOption.js +1 -1
  212. package/build/cjs/components/TranslationDialog/TranslationModal/LocalesSelect.js +1 -1
  213. package/build/cjs/components/TranslationDialog/TranslationModal/TranslationForm.js +3 -3
  214. package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +3 -3
  215. package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModalActions.js +1 -1
  216. package/build/cjs/components/TranslationDialog/TranslationModal/useTranslationsResults.js +1 -1
  217. package/build/cjs/components/UserMention/UserList.js +1 -1
  218. package/build/cjs/components/UserMention/UserMentionWrapper.js +3 -4
  219. package/build/cjs/components/UserMention/styles/UserMentionWrapper.style.js +4 -6
  220. package/build/cjs/components/UserMention/useUserSearchResults.js +1 -1
  221. package/build/cjs/components/VisTypeIcon.js +2 -3
  222. package/build/cjs/components/styles/DimensionSelector.style.js +1 -2
  223. package/build/cjs/components/styles/DimensionsPanel.style.js +2 -3
  224. package/build/cjs/components/styles/OfflineTooltip.style.js +1 -2
  225. package/build/cjs/components/styles/TransferOption.style.js +1 -2
  226. package/build/cjs/index.js +3 -3
  227. package/build/cjs/locales/index.js +2 -3
  228. package/build/cjs/locales/lo/translations.json +16 -12
  229. package/build/cjs/locales/pt/translations.json +251 -242
  230. package/build/cjs/locales/vi/translations.json +16 -12
  231. package/build/cjs/locales/zh/translations.json +2 -0
  232. package/build/cjs/modules/__tests__/getOuLevelAndGroupText.spec.js +9 -0
  233. package/build/cjs/modules/axis.js +1 -1
  234. package/build/cjs/modules/dataSets.js +8 -14
  235. package/build/cjs/modules/dataTypes.js +24 -47
  236. package/build/cjs/modules/dimensionListItem.js +1 -1
  237. package/build/cjs/modules/dimensionSelectorHelper.js +3 -6
  238. package/build/cjs/modules/expressions.js +6 -11
  239. package/build/cjs/modules/fontStyle.js +19 -37
  240. package/build/cjs/modules/getAdaptedUiLayoutByType.js +1 -1
  241. package/build/cjs/modules/getOuLevelAndGroupText.js +5 -2
  242. package/build/cjs/modules/hash.js +1 -1
  243. package/build/cjs/modules/layout/axis.js +10 -16
  244. package/build/cjs/modules/layout/dimension.js +11 -19
  245. package/build/cjs/modules/layout/item.js +5 -7
  246. package/build/cjs/modules/layout/layout.js +3 -4
  247. package/build/cjs/modules/layout/testResources.js +39 -71
  248. package/build/cjs/modules/layoutTypes.js +8 -16
  249. package/build/cjs/modules/layoutUiRules/rules.js +4 -7
  250. package/build/cjs/modules/legends.js +4 -8
  251. package/build/cjs/modules/list.js +1 -1
  252. package/build/cjs/modules/ouIdHelper/index.js +5 -9
  253. package/build/cjs/modules/outliers/index.js +13 -25
  254. package/build/cjs/modules/outliers/iqr.js +5 -9
  255. package/build/cjs/modules/outliers/modZScore.js +2 -3
  256. package/build/cjs/modules/outliers/normalization.js +2 -2
  257. package/build/cjs/modules/outliers/zScore.js +2 -3
  258. package/build/cjs/modules/pivotTable/AdaptiveClippingController.js +3 -3
  259. package/build/cjs/modules/pivotTable/PivotTableEngine.js +4 -4
  260. package/build/cjs/modules/pivotTable/clipAxis.js +1 -1
  261. package/build/cjs/modules/pivotTable/pivotTableConstants.js +32 -62
  262. package/build/cjs/modules/pivotTable/useParentSize.js +1 -1
  263. package/build/cjs/modules/pivotTable/useScrollPosition.js +1 -1
  264. package/build/cjs/modules/pivotTable/useSortableColumns.js +0 -1
  265. package/build/cjs/modules/predefinedDimensions.js +6 -11
  266. package/build/cjs/modules/valueTypes.js +21 -42
  267. package/build/cjs/modules/visTypes.js +24 -47
  268. package/build/cjs/visualizations/config/adapters/dhis_highcharts/addTrendLines.js +1 -1
  269. package/build/cjs/visualizations/config/adapters/dhis_highcharts/axis.js +1 -1
  270. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/default.js +26 -0
  271. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/index.js +18 -0
  272. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +19 -0
  273. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customAxes.js +2 -4
  274. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +36 -0
  275. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +12 -0
  276. package/build/cjs/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +7 -6
  277. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +11 -0
  278. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +11 -0
  279. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +20 -0
  280. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +26 -0
  281. package/build/cjs/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +31 -0
  282. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/index.js +24 -0
  283. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +18 -0
  284. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +34 -0
  285. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +19 -0
  286. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +39 -0
  287. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +21 -0
  288. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +10 -0
  289. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +14 -0
  290. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +47 -0
  291. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +46 -0
  292. package/build/cjs/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +107 -0
  293. package/build/cjs/visualizations/config/adapters/dhis_highcharts/exporting.js +30 -0
  294. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getAxisTitle.js +1 -1
  295. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getCategories.js +1 -1
  296. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getCumulativeData.js +1 -1
  297. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getFormatter.js +1 -1
  298. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getSortedConfig.js +1 -1
  299. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getSteps.js +1 -1
  300. package/build/cjs/visualizations/config/adapters/dhis_highcharts/getTrimmedConfig.js +1 -1
  301. package/build/cjs/visualizations/config/adapters/dhis_highcharts/index.js +36 -26
  302. package/build/cjs/visualizations/config/adapters/dhis_highcharts/lang.js +17 -0
  303. package/build/cjs/visualizations/config/adapters/dhis_highcharts/legendSet.js +1 -1
  304. package/build/cjs/visualizations/config/adapters/dhis_highcharts/pane/index.js +1 -1
  305. package/build/cjs/visualizations/config/adapters/dhis_highcharts/plotOptions.js +2 -2
  306. package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
  307. package/build/cjs/visualizations/config/adapters/dhis_highcharts/series/scatter.js +1 -1
  308. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +61 -0
  309. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/gauge.js +1 -1
  310. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +58 -24
  311. package/build/cjs/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +27 -0
  312. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +44 -0
  313. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/index.js +51 -23
  314. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/scatter.js +1 -1
  315. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +31 -0
  316. package/build/cjs/visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js +3 -3
  317. package/build/cjs/visualizations/config/adapters/dhis_highcharts/type.js +2 -0
  318. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
  319. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/radar.js +1 -1
  320. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/scatter.js +1 -1
  321. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/twoCategory.js +1 -1
  322. package/build/cjs/visualizations/config/adapters/dhis_highcharts/xAxis/yearOnYear.js +1 -1
  323. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/gauge.js +1 -1
  324. package/build/cjs/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +7 -8
  325. package/build/cjs/visualizations/config/adapters/index.js +5 -8
  326. package/build/cjs/visualizations/config/generators/highcharts/index.js +5 -1
  327. package/build/cjs/visualizations/config/generators/index.js +5 -8
  328. package/build/cjs/visualizations/config/index.js +1 -1
  329. package/build/cjs/visualizations/config/validators/index.js +3 -4
  330. package/build/cjs/visualizations/index.js +2 -3
  331. package/build/cjs/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
  332. package/build/cjs/visualizations/store/adapters/dhis_highcharts/singleValue.js +10 -0
  333. package/build/cjs/visualizations/store/adapters/dhis_highcharts/twoCategory.js +1 -1
  334. package/build/cjs/visualizations/store/adapters/index.js +5 -8
  335. package/build/cjs/visualizations/store/index.js +1 -1
  336. package/build/cjs/visualizations/store/validators/dhis/index.js +1 -1
  337. package/build/cjs/visualizations/store/validators/index.js +3 -4
  338. package/build/cjs/visualizations/util/__tests__/getFilterText.spec.js +1 -1
  339. package/build/cjs/visualizations/util/colors/colorSets.js +11 -20
  340. package/build/cjs/visualizations/util/colors/themes.js +3 -5
  341. package/build/cjs/visualizations/util/shouldUseContrastColor.js +24 -0
  342. package/build/es/__demo__/CalculationModal.stories.js +20 -6
  343. package/build/es/__demo__/DimensionsPanel.stories.js +43 -17
  344. package/build/es/__demo__/DynamicDimension.stories.js +18 -7
  345. package/build/es/__demo__/FileMenu.stories.js +15 -5
  346. package/build/es/__demo__/Filter.stories.js +8 -3
  347. package/build/es/__demo__/FixedPeriodSelect.stories.js +18 -7
  348. package/build/es/__demo__/InterpretationsUnit.stories.js +10 -5
  349. package/build/es/__demo__/OpenFileDialog.stories.js +34 -26
  350. package/build/es/__demo__/OrgUnitDimension.stories.js +61 -26
  351. package/build/es/__demo__/PeriodDimension.stories.js +44 -13
  352. package/build/es/__demo__/PivotTable.stories.js +249 -99
  353. package/build/es/__demo__/SingleValue.stories.js +675 -0
  354. package/build/es/__demo__/Toolbar.stories.js +8 -3
  355. package/build/es/api/analytics/AnalyticsResponse.js +0 -1
  356. package/build/es/components/DataDimension/Calculation/DataElementOption.js +1 -1
  357. package/build/es/components/DataDimension/Calculation/DndContext.js +3 -3
  358. package/build/es/components/DataDimension/Calculation/FormulaItem.js +1 -1
  359. package/build/es/components/DataDimension/Calculation/Operator.js +1 -1
  360. package/build/es/components/DataDimension/ItemSelector.js +1 -2
  361. package/build/es/components/DimensionMenu.js +3 -3
  362. package/build/es/components/DimensionsPanel/DimensionsPanel.js +3 -3
  363. package/build/es/components/DimensionsPanel/List/DimensionItem.js +4 -4
  364. package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -3
  365. package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +1 -1
  366. package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +1 -1
  367. package/build/es/components/DynamicDimension/ItemSelector.js +1 -2
  368. package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +1 -1
  369. package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +1 -1
  370. package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +1 -1
  371. package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +1 -1
  372. package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +1 -1
  373. package/build/es/components/Filter/__tests__/Filter.spec.js +1 -1
  374. package/build/es/components/Interpretations/common/Message/MessageInput.js +1 -1
  375. package/build/es/components/OrgUnitDimension/OrgUnitDimension.js +2 -5
  376. package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +57 -0
  377. package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +94 -0
  378. package/build/es/components/PeriodDimension/FixedPeriodSelect.js +3 -3
  379. package/build/es/components/PeriodDimension/PeriodTransfer.js +1 -1
  380. package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +1 -1
  381. package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +1 -1
  382. package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +1 -1
  383. package/build/es/components/PeriodDimension/utils/fixedPeriods.js +0 -1
  384. package/build/es/components/PivotTable/PivotTableCell.js +1 -1
  385. package/build/es/components/PivotTable/PivotTableEmptyCell.js +1 -1
  386. package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +1 -1
  387. package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +1 -1
  388. package/build/es/components/Toolbar/HoverMenuBar/HoverMenuListItem.js +1 -1
  389. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +3 -3
  390. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +2 -2
  391. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +6 -6
  392. package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +4 -4
  393. package/build/es/components/Toolbar/UpdateButton.js +1 -1
  394. package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +5 -5
  395. package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +2 -2
  396. package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +3 -3
  397. package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +4 -4
  398. package/build/es/components/UserMention/UserMentionWrapper.js +0 -1
  399. package/build/es/locales/lo/translations.json +16 -12
  400. package/build/es/locales/pt/translations.json +251 -242
  401. package/build/es/locales/vi/translations.json +16 -12
  402. package/build/es/locales/zh/translations.json +2 -0
  403. package/build/es/modules/__tests__/getOuLevelAndGroupText.spec.js +9 -0
  404. package/build/es/modules/getOuLevelAndGroupText.js +4 -1
  405. package/build/es/modules/pivotTable/AdaptiveClippingController.js +3 -3
  406. package/build/es/modules/pivotTable/PivotTableEngine.js +3 -3
  407. package/build/es/modules/pivotTable/useSortableColumns.js +0 -1
  408. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/default.js +19 -0
  409. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/index.js +11 -0
  410. package/build/es/visualizations/config/adapters/dhis_highcharts/chart/singleValue.js +12 -0
  411. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/index.js +29 -0
  412. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueBackgroundColor.js +6 -0
  413. package/build/es/visualizations/config/adapters/{dhis_dhis/value/index.js → dhis_highcharts/customSVGOptions/singleValue/getSingleValueFormattedValue.js} +4 -4
  414. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueLegendColor.js +5 -0
  415. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueSubtext.js +5 -0
  416. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTextColor.js +14 -0
  417. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/getSingleValueTitleColor.js +20 -0
  418. package/build/es/visualizations/config/adapters/dhis_highcharts/customSVGOptions/singleValue/index.js +25 -0
  419. package/build/es/visualizations/config/adapters/dhis_highcharts/events/index.js +16 -0
  420. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/index.js +11 -0
  421. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/addIconElement.js +28 -0
  422. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/checkIfFitsWithinContainer.js +13 -0
  423. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeLayoutRect.js +33 -0
  424. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/computeSpacingTop.js +15 -0
  425. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/constants.js +4 -0
  426. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/getAvailableSpace.js +8 -0
  427. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/index.js +41 -0
  428. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/positionElements.js +40 -0
  429. package/build/es/visualizations/config/adapters/dhis_highcharts/events/loadCustomSVG/singleValue/styles.js +100 -0
  430. package/build/es/visualizations/config/adapters/dhis_highcharts/exporting.js +23 -0
  431. package/build/es/visualizations/config/adapters/dhis_highcharts/index.js +23 -13
  432. package/build/es/visualizations/config/adapters/dhis_highcharts/lang.js +11 -0
  433. package/build/es/visualizations/config/adapters/dhis_highcharts/plotOptions.js +3 -3
  434. package/build/es/visualizations/config/adapters/dhis_highcharts/series/index.js +6 -2
  435. package/build/es/visualizations/config/adapters/dhis_highcharts/series/scatter.js +2 -2
  436. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/__tests__/singleValue.spec.js +58 -0
  437. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/index.js +56 -24
  438. package/build/es/visualizations/config/adapters/dhis_highcharts/subtitle/singleValue.js +14 -0
  439. package/build/es/visualizations/config/adapters/dhis_highcharts/title/__tests__/singleValue.spec.js +42 -0
  440. package/build/es/visualizations/config/adapters/dhis_highcharts/title/index.js +52 -24
  441. package/build/es/visualizations/config/adapters/dhis_highcharts/title/singleValue.js +18 -0
  442. package/build/es/visualizations/config/adapters/dhis_highcharts/title/yearOverYear.js +1 -1
  443. package/build/es/visualizations/config/adapters/dhis_highcharts/type.js +3 -1
  444. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/index.js +2 -1
  445. package/build/es/visualizations/config/adapters/dhis_highcharts/xAxis/radar.js +2 -2
  446. package/build/es/visualizations/config/adapters/dhis_highcharts/yAxis/index.js +6 -7
  447. package/build/es/visualizations/config/adapters/index.js +1 -3
  448. package/build/es/visualizations/config/generators/highcharts/index.js +4 -0
  449. package/build/es/visualizations/config/generators/index.js +1 -3
  450. package/build/es/visualizations/store/adapters/dhis_highcharts/index.js +4 -1
  451. package/build/es/visualizations/store/adapters/dhis_highcharts/singleValue.js +4 -0
  452. package/build/es/visualizations/store/adapters/index.js +1 -3
  453. package/build/es/visualizations/util/shouldUseContrastColor.js +17 -0
  454. package/package.json +13 -11
  455. package/build/cjs/visualizations/config/adapters/dhis_dhis/index.js +0 -39
  456. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -49
  457. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -15
  458. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -34
  459. package/build/cjs/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -11
  460. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -39
  461. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -17
  462. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/index.js +0 -31
  463. package/build/cjs/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -18
  464. package/build/cjs/visualizations/config/adapters/dhis_dhis/type.js +0 -19
  465. package/build/cjs/visualizations/config/adapters/dhis_highcharts/chart.js +0 -39
  466. package/build/cjs/visualizations/config/generators/dhis/index.js +0 -28
  467. package/build/cjs/visualizations/config/generators/dhis/singleValue.js +0 -359
  468. package/build/cjs/visualizations/store/adapters/dhis_dhis/index.js +0 -83
  469. package/build/cjs/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -10
  470. package/build/es/visualizations/config/adapters/dhis_dhis/index.js +0 -30
  471. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/index.spec.js +0 -46
  472. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/__tests__/singleValue.spec.js +0 -12
  473. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/index.js +0 -27
  474. package/build/es/visualizations/config/adapters/dhis_dhis/subtitle/singleValue.js +0 -4
  475. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/index.spec.js +0 -36
  476. package/build/es/visualizations/config/adapters/dhis_dhis/title/__tests__/singleValue.spec.js +0 -14
  477. package/build/es/visualizations/config/adapters/dhis_dhis/title/index.js +0 -24
  478. package/build/es/visualizations/config/adapters/dhis_dhis/title/singleValue.js +0 -11
  479. package/build/es/visualizations/config/adapters/dhis_dhis/type.js +0 -13
  480. package/build/es/visualizations/config/adapters/dhis_highcharts/chart.js +0 -32
  481. package/build/es/visualizations/config/generators/dhis/index.js +0 -21
  482. package/build/es/visualizations/config/generators/dhis/singleValue.js +0 -353
  483. package/build/es/visualizations/store/adapters/dhis_dhis/index.js +0 -76
  484. package/build/es/visualizations/store/adapters/dhis_dhis/singleValue.js +0 -4
@@ -18,6 +18,8 @@
18
18
  "About this map": "",
19
19
  "About this line list": "",
20
20
  "About this visualization": "",
21
+ "About this event chart": "",
22
+ "About this event report": "",
21
23
  "This app could not retrieve required data.": "",
22
24
  "Network error": "Lỗi mạng",
23
25
  "Data / Edit calculation": "",
@@ -132,17 +134,6 @@
132
134
  "Manage sharing": "Quản lý chia sẻ",
133
135
  "Could not update interpretation": "",
134
136
  "Enter interpretation text": "",
135
- "Bold text": "",
136
- "Italic text": "",
137
- "Link to a URL": "",
138
- "Mention a user": "",
139
- "Add emoji": "",
140
- "Preview": "Xem thử",
141
- "Back to write mode": "",
142
- "Too many results. Try refining the search.": "",
143
- "Search for a user": "",
144
- "Searching for \"{{- searchText}}\"": "",
145
- "No results found": "Không tìm thấy kết quả nào",
146
137
  "Not available offline": "",
147
138
  "Created by": "Được tạo bởi",
148
139
  "Anyone": "Bất kỳ ai",
@@ -215,7 +206,7 @@
215
206
  "Quarterly": "Hàng quý",
216
207
  "Six-monthly": "Hàng 6 tháng",
217
208
  "Six-monthly April": "Hàng 6 tháng - tháng 4",
218
- "Yearly": "Một năm",
209
+ "Yearly": "Hàng năm",
219
210
  "Financial year (Start November)": "Năm tài chính (Bắt đầu từ tháng 11)",
220
211
  "Financial year (Start October)": "Năm Tài Chính - Tháng 10",
221
212
  "Financial year (Start July)": "Năm Tài Chính - Tháng 7",
@@ -271,6 +262,14 @@
271
262
  "Six-months": "Sáu-tháng",
272
263
  "Financial Years": "Năm tài chính",
273
264
  "Years": "Năm",
265
+ "Value: {{value}}": "",
266
+ "Bold text": "",
267
+ "Italic text": "",
268
+ "Link to a URL": "",
269
+ "Mention a user": "",
270
+ "Add emoji": "",
271
+ "Preview": "Xem thử",
272
+ "Back to write mode": "",
274
273
  "Interpretations and details": "",
275
274
  "Translating to": "",
276
275
  "Choose a locale": "",
@@ -281,6 +280,10 @@
281
280
  "Cannot save while offline": "",
282
281
  "Could not load translations": "",
283
282
  "Retry": "",
283
+ "Too many results. Try refining the search.": "",
284
+ "Search for a user": "",
285
+ "Searching for \"{{- searchText}}\"": "",
286
+ "No results found": "Không tìm thấy kết quả nào",
284
287
  "Series": "Chuỗi Dữ Liệu",
285
288
  "Category": "Phân loại",
286
289
  "Filter": "Lọc",
@@ -350,6 +353,7 @@
350
353
  "{{thresholdFactor}} × Modified Z-score high": "",
351
354
  "{{thresholdFactor}} × Z-score low": "",
352
355
  "{{thresholdFactor}} × Z-score high": "",
356
+ "Not applicable": "",
353
357
  "Data": "Lấy dữ liệu",
354
358
  "Organisation unit": "Đơn vị",
355
359
  "Assigned Categories": "Phân loại được chỉ định",
@@ -262,6 +262,7 @@
262
262
  "Six-months": "六个月",
263
263
  "Financial Years": "财政年度",
264
264
  "Years": "年",
265
+ "Value: {{value}}": "值{{value}}",
265
266
  "Bold text": "粗体文字",
266
267
  "Italic text": "斜体文字",
267
268
  "Link to a URL": "链接到 URL",
@@ -352,6 +353,7 @@
352
353
  "{{thresholdFactor}} × Modified Z-score high": "{{thresholdFactor}}×修改后的Z分数高值",
353
354
  "{{thresholdFactor}} × Z-score low": "{{thresholdFactor}}×Z分数低",
354
355
  "{{thresholdFactor}} × Z-score high": "{{thresholdFactor}}×Z分数高",
356
+ "Not applicable": "不适用",
355
357
  "Data": "数据",
356
358
  "Organisation unit": "机构",
357
359
  "Assigned Categories": "指定的分类",
@@ -51,4 +51,13 @@ describe('getOuLevelAndGroupText', () => {
51
51
  }];
52
52
  expect(getOuLevelAndGroupText(filter, metaData)).toEqual('Fruit and Veggies groups - Second floor levels');
53
53
  });
54
+ it('grabs name for user orgunits from items when not present in metaData', () => {
55
+ filter.items = [{
56
+ id: 'USER_ORGUNIT',
57
+ name: 'User organisation unit'
58
+ }, {
59
+ id: 'LEVEL-2nd-floor'
60
+ }];
61
+ expect(getOuLevelAndGroupText(filter, metaData)).toEqual('Second floor levels in User organisation unit');
62
+ });
54
63
  });
@@ -20,7 +20,10 @@ export const getOuLevelAndGroupText = (filter, metaData) => {
20
20
  return filterFragments.join(' - ');
21
21
  };
22
22
  const getLevelAndGroupText = (items, metaData, isLevel) => {
23
- const getNameFromMetadata = id => metaData.items[id] ? metaData.items[id].name : id;
23
+ const getNameFromMetadata = id => {
24
+ var _items$find;
25
+ return metaData.items[id] ? metaData.items[id].name : ((_items$find = items.find(item => item.id === id)) === null || _items$find === void 0 ? void 0 : _items$find.name) || id;
26
+ };
24
27
  const dynamicOuItems = items.filter(item => isLevel ? ouIdHelper.hasLevelPrefix(item.id) : ouIdHelper.hasGroupPrefix(item.id));
25
28
  const lastItem = dynamicOuItems.length > 1 ? dynamicOuItems.pop() : null;
26
29
  const dynamicOuNames = dynamicOuItems.map(item => getNameFromMetadata(ouIdHelper.removePrefix(item.id))).join(', ');
@@ -1,6 +1,6 @@
1
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
4
  import { measureTextWithWrapping } from './measureText.js';
5
5
  import { CLIPPED_AXIS_PARTITION_SIZE_PX, CLIPPED_CELL_MIN_SIZE } from './pivotTableConstants.js';
6
6
  export class AdaptiveClippingController {
@@ -1,6 +1,6 @@
1
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
4
  import i18n from '@dhis2/d2-i18n';
5
5
  import times from 'lodash/times';
6
6
  import { DIMENSION_TYPE_DATA, DIMENSION_TYPE_DATA_ELEMENT_GROUP_SET, DIMENSION_TYPE_ORGANISATION_UNIT, DIMENSION_TYPE_PERIOD } from '../dataTypes.js';
@@ -19,7 +19,6 @@ export const useSortableColumns = engine => {
19
19
  order
20
20
  }); // Force a re-render
21
21
  };
22
-
23
22
  return {
24
23
  sortBy,
25
24
  onSortByColumn
@@ -0,0 +1,19 @@
1
+ import { getEvents } from '../events/index.js';
2
+ import getType from '../type.js';
3
+ const DEFAULT_CHART = {
4
+ spacingTop: 20,
5
+ style: {
6
+ fontFamily: 'Roboto,Helvetica Neue,Helvetica,Arial,sans-serif'
7
+ }
8
+ };
9
+ const DASHBOARD_CHART = {
10
+ spacingTop: 0,
11
+ spacingRight: 5,
12
+ spacingBottom: 2,
13
+ spacingLeft: 5
14
+ };
15
+ export default function getDefaultChart(layout, el, extraOptions) {
16
+ return Object.assign({}, getType(layout.type), {
17
+ renderTo: el || layout.el
18
+ }, DEFAULT_CHART, extraOptions.dashboard ? DASHBOARD_CHART : undefined, getEvents(layout.type));
19
+ }
@@ -0,0 +1,11 @@
1
+ import { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
2
+ import getDefaultChart from './default.js';
3
+ import getSingleValueChart from './singleValue.js';
4
+ export default function getChart(layout, el, extraOptions, series) {
5
+ switch (layout.type) {
6
+ case VIS_TYPE_SINGLE_VALUE:
7
+ return getSingleValueChart(layout, el, extraOptions, series);
8
+ default:
9
+ return getDefaultChart(layout, el, extraOptions);
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ import { getSingleValueBackgroundColor } from '../customSVGOptions/singleValue/getSingleValueBackgroundColor.js';
2
+ import getDefaultChart from './default.js';
3
+ export default function getSingleValueChart(layout, el, extraOptions, series) {
4
+ const chart = {
5
+ ...getDefaultChart(layout, el, extraOptions),
6
+ backgroundColor: getSingleValueBackgroundColor(layout.legend, extraOptions.legendSets, series[0])
7
+ };
8
+ if (extraOptions.dashboard) {
9
+ chart.spacingTop = 7;
10
+ }
11
+ return chart;
12
+ }
@@ -0,0 +1,29 @@
1
+ import { VIS_TYPE_SINGLE_VALUE } from '../../../../../modules/visTypes.js';
2
+ import getSingleValueCustomSVGOptions from './singleValue/index.js';
3
+ export default function getCustomSVGOptions(_ref) {
4
+ let {
5
+ extraConfig,
6
+ layout,
7
+ extraOptions,
8
+ metaData,
9
+ series
10
+ } = _ref;
11
+ const baseOptions = {
12
+ visualizationType: layout.type
13
+ };
14
+ switch (layout.type) {
15
+ case VIS_TYPE_SINGLE_VALUE:
16
+ return {
17
+ ...baseOptions,
18
+ ...getSingleValueCustomSVGOptions({
19
+ extraConfig,
20
+ layout,
21
+ extraOptions,
22
+ metaData,
23
+ series
24
+ })
25
+ };
26
+ default:
27
+ break;
28
+ }
29
+ }
@@ -0,0 +1,6 @@
1
+ import { LEGEND_DISPLAY_STYLE_FILL } from '../../../../../../modules/legends.js';
2
+ import { getSingleValueLegendColor } from './getSingleValueLegendColor.js';
3
+ export function getSingleValueBackgroundColor(legendOptions, legendSets, value) {
4
+ const legendColor = getSingleValueLegendColor(legendOptions, legendSets, value);
5
+ return legendColor && legendOptions.style === LEGEND_DISPLAY_STYLE_FILL ? legendColor : 'transparent';
6
+ }
@@ -1,7 +1,7 @@
1
- import { renderValue } from '../../../../../modules/renderValue.js';
2
- import { VALUE_TYPE_TEXT } from '../../../../../modules/valueTypes.js';
3
- import { INDICATOR_FACTOR_100 } from '../index.js';
4
- export default function (value, layout, metaData) {
1
+ import { renderValue } from '../../../../../../modules/renderValue.js';
2
+ import { VALUE_TYPE_TEXT } from '../../../../../../modules/valueTypes.js';
3
+ export const INDICATOR_FACTOR_100 = 100;
4
+ export function getSingleValueFormattedValue(value, layout, metaData) {
5
5
  const valueType = metaData.items[metaData.dimensions.dx[0]].valueType;
6
6
  const indicatorType = metaData.items[metaData.dimensions.dx[0]].indicatorType;
7
7
  let formattedValue = renderValue(value, valueType || VALUE_TYPE_TEXT, {
@@ -0,0 +1,5 @@
1
+ import { getColorByValueFromLegendSet } from '../../../../../../modules/legends.js';
2
+ export function getSingleValueLegendColor(legendOptions, legendSets, value) {
3
+ const legendSet = legendOptions && legendSets[0];
4
+ return legendSet ? getColorByValueFromLegendSet(legendSet, value) : undefined;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { INDICATOR_FACTOR_100 } from './getSingleValueFormattedValue.js';
2
+ export function getSingleValueSubtext(metaData) {
3
+ const indicatorType = metaData.items[metaData.dimensions.dx[0]].indicatorType;
4
+ return indicatorType !== null && indicatorType !== void 0 && indicatorType.displayName && (indicatorType === null || indicatorType === void 0 ? void 0 : indicatorType.factor) !== INDICATOR_FACTOR_100 ? indicatorType === null || indicatorType === void 0 ? void 0 : indicatorType.displayName : undefined;
5
+ }
@@ -0,0 +1,14 @@
1
+ import { colors } from '@dhis2/ui';
2
+ import { LEGEND_DISPLAY_STYLE_TEXT } from '../../../../../../modules/legends.js';
3
+ import { shouldUseContrastColor } from '../../../../../util/shouldUseContrastColor.js';
4
+ import { getSingleValueLegendColor } from './getSingleValueLegendColor.js';
5
+ export function getSingleValueTextColor(baseColor, value, legendOptions, legendSets) {
6
+ const legendColor = getSingleValueLegendColor(legendOptions, legendSets, value);
7
+ if (!legendColor) {
8
+ return baseColor;
9
+ }
10
+ if (legendOptions.style === LEGEND_DISPLAY_STYLE_TEXT) {
11
+ return legendColor;
12
+ }
13
+ return shouldUseContrastColor(legendColor) ? colors.white : baseColor;
14
+ }
@@ -0,0 +1,20 @@
1
+ import { colors } from '@dhis2/ui';
2
+ import { LEGEND_DISPLAY_STYLE_FILL } from '../../../../../../modules/legends.js';
3
+ import { shouldUseContrastColor } from '../../../../../util/shouldUseContrastColor.js';
4
+ import { getSingleValueLegendColor } from './getSingleValueLegendColor.js';
5
+ export function getSingleValueTitleColor(customColor, defaultColor, value, legendOptions, legendSets) {
6
+ // Never override custom color
7
+ if (customColor) {
8
+ return customColor;
9
+ }
10
+ const isUsingLegendBackground = (legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.style) === LEGEND_DISPLAY_STYLE_FILL;
11
+
12
+ // If not using legend background, always return default color
13
+ if (!isUsingLegendBackground) {
14
+ return defaultColor;
15
+ }
16
+ const legendColor = getSingleValueLegendColor(legendOptions, legendSets, value);
17
+
18
+ // Return default color or contrasting color when using legend background and default color
19
+ return shouldUseContrastColor(legendColor) ? colors.white : defaultColor;
20
+ }
@@ -0,0 +1,25 @@
1
+ import { colors } from '@dhis2/ui';
2
+ import { getSingleValueFormattedValue } from './getSingleValueFormattedValue.js';
3
+ import { getSingleValueSubtext } from './getSingleValueSubtext.js';
4
+ import { getSingleValueTextColor } from './getSingleValueTextColor.js';
5
+ export default function getSingleValueCustomSVGOptions(_ref) {
6
+ let {
7
+ layout,
8
+ extraOptions,
9
+ metaData,
10
+ series
11
+ } = _ref;
12
+ const {
13
+ dashboard,
14
+ icon
15
+ } = extraOptions;
16
+ const value = series[0];
17
+ return {
18
+ value,
19
+ fontColor: getSingleValueTextColor(colors.grey900, value, layout.legend, extraOptions.legendSets),
20
+ formattedValue: getSingleValueFormattedValue(value, layout, metaData),
21
+ icon,
22
+ dashboard,
23
+ subText: getSingleValueSubtext(metaData)
24
+ };
25
+ }
@@ -0,0 +1,16 @@
1
+ import loadCustomSVG from './loadCustomSVG/index.js';
2
+ export const getEvents = visType => ({
3
+ events: {
4
+ load: function () {
5
+ // Align legend icon with legend text
6
+ this.legend.allItems.forEach(item => {
7
+ if (item.legendSymbol) {
8
+ item.legendSymbol.attr({
9
+ translateY: -(item.legendItem.label.getBBox().height * 0.75 / 4) + item.legendSymbol.r / 2
10
+ });
11
+ }
12
+ });
13
+ loadCustomSVG.call(this, visType);
14
+ }
15
+ }
16
+ });
@@ -0,0 +1,11 @@
1
+ import { VIS_TYPE_SINGLE_VALUE } from '../../../../../../modules/visTypes.js';
2
+ import loadSingleValueSVG from './singleValue/index.js';
3
+ export default function loadCustomSVG(visType) {
4
+ switch (visType) {
5
+ case VIS_TYPE_SINGLE_VALUE:
6
+ loadSingleValueSVG.call(this);
7
+ break;
8
+ default:
9
+ break;
10
+ }
11
+ }
@@ -0,0 +1,28 @@
1
+ const parser = new DOMParser();
2
+ export function addIconElement(svgString, color) {
3
+ const svgIconDocument = parser.parseFromString(svgString, 'image/svg+xml');
4
+ const iconElHeight = svgIconDocument.documentElement.getAttribute('height');
5
+ const iconElWidth = svgIconDocument.documentElement.getAttribute('width');
6
+ const iconGroup = this.renderer.g('icon').attr({
7
+ color,
8
+ 'data-test': 'visualization-icon'
9
+ }).css({
10
+ visibility: 'hidden'
11
+ });
12
+
13
+ /* Force the group element to have the same dimensions as the original
14
+ * SVG image by adding this rect. This ensures the icon has the intended
15
+ * whitespace around it and makes scaling and translating easier. */
16
+ this.renderer.rect(0, 0, iconElWidth, iconElHeight).add(iconGroup);
17
+ Array.from(svgIconDocument.documentElement.children).forEach(pathNode => {
18
+ /* It is also possible to use the SVGRenderer to draw the icon but that
19
+ * approach is more error prone, so during review it was decided to just
20
+ * append the SVG children to the iconGroup using native the native DOM
21
+ * API. For reference see this commit, for an implementation using the
22
+ * SVVGRenderer:
23
+ * https://github.com/dhis2/analytics/pull/1698/commits/f95bee838e07f4cdfc3cab6e92f28f49a386a0ad */
24
+ iconGroup.element.appendChild(pathNode);
25
+ });
26
+ iconGroup.add();
27
+ return iconGroup;
28
+ }
@@ -0,0 +1,13 @@
1
+ import { ACTUAL_NUMBER_HEIGHT_FACTOR } from './constants.js';
2
+ export function checkIfFitsWithinContainer(availableSpace, valueElement, subTextElement, icon, subText, spacing) {
3
+ const valueRect = valueElement.getBBox(true);
4
+ const subTextRect = subText ? subTextElement.getBBox(true) : {
5
+ width: 0,
6
+ height: 0
7
+ };
8
+ const requiredValueWidth = icon ? valueRect.width + spacing.iconGap + spacing.iconSize : valueRect.width;
9
+ const requiredHeight = subText ? valueRect.height * ACTUAL_NUMBER_HEIGHT_FACTOR + spacing.subTextTop + subTextRect.height : valueRect.height * ACTUAL_NUMBER_HEIGHT_FACTOR;
10
+ const fitsHorizontally = availableSpace.width > requiredValueWidth && availableSpace.width > subTextRect.width;
11
+ const fitsVertically = availableSpace.height > requiredHeight;
12
+ return fitsHorizontally && fitsVertically;
13
+ }
@@ -0,0 +1,33 @@
1
+ import { computeSpacingTop } from './computeSpacingTop.js';
2
+ import { ACTUAL_NUMBER_HEIGHT_FACTOR } from './constants.js';
3
+ export function computeLayoutRect(valueElement, subTextElement, iconElement, spacing) {
4
+ const valueRect = valueElement.getBBox();
5
+ const containerCenterY = this.chartHeight / 2;
6
+ const containerCenterX = this.chartWidth / 2;
7
+ const minY = computeSpacingTop.call(this, spacing.valueTop);
8
+ let width = valueRect.width;
9
+ let height = valueRect.height * ACTUAL_NUMBER_HEIGHT_FACTOR;
10
+ let sideMarginTop = 0;
11
+ let sideMarginBottom = 0;
12
+ if (iconElement) {
13
+ width += spacing.iconGap + spacing.iconSize;
14
+ }
15
+ if (subTextElement) {
16
+ const subTextRect = subTextElement.getBBox();
17
+ if (subTextRect.width > width) {
18
+ sideMarginTop = (subTextRect.width - width) / 2;
19
+ width = subTextRect.width;
20
+ } else {
21
+ sideMarginBottom = (width - subTextRect.width) / 2;
22
+ }
23
+ height += spacing.subTextTop + subTextRect.height;
24
+ }
25
+ return {
26
+ x: containerCenterX - width / 2,
27
+ y: Math.max(containerCenterY - height / 2, minY),
28
+ width,
29
+ height,
30
+ sideMarginTop,
31
+ sideMarginBottom
32
+ };
33
+ }
@@ -0,0 +1,15 @@
1
+ export function computeSpacingTop(valueSpacingTop) {
2
+ if (this.subtitle.textStr) {
3
+ /* If a subtitle is present this will be below the title so base
4
+ * the value X position on this */
5
+ const subTitleRect = this.subtitle.element.getBBox();
6
+ return subTitleRect.y + subTitleRect.height + valueSpacingTop;
7
+ } else if (this.title.textStr) {
8
+ // Otherwise base on title
9
+ const titleRect = this.title.element.getBBox();
10
+ return titleRect.y + titleRect.height + valueSpacingTop;
11
+ } else {
12
+ // If neither are present only adjust for valueSpacingTop
13
+ return valueSpacingTop;
14
+ }
15
+ }
@@ -0,0 +1,4 @@
1
+ // multiply value text size with this factor
2
+ // to get very close to the actual number height
3
+ // as numbers don't go below the baseline like e.g. "j" and "g"
4
+ export const ACTUAL_NUMBER_HEIGHT_FACTOR = 2 / 3;
@@ -0,0 +1,8 @@
1
+ import { computeSpacingTop } from './computeSpacingTop.js';
2
+ import { MIN_SIDE_WHITESPACE } from './styles.js';
3
+ export function getAvailableSpace(valueSpacingTop) {
4
+ return {
5
+ height: this.chartHeight - computeSpacingTop.call(this, valueSpacingTop),
6
+ width: this.chartWidth - MIN_SIDE_WHITESPACE * 2
7
+ };
8
+ }
@@ -0,0 +1,41 @@
1
+ import { addIconElement } from './addIconElement.js';
2
+ import { checkIfFitsWithinContainer } from './checkIfFitsWithinContainer.js';
3
+ import { getAvailableSpace } from './getAvailableSpace.js';
4
+ import { positionElements } from './positionElements.js';
5
+ import { DynamicStyles } from './styles.js';
6
+ export default function loadSingleValueSVG() {
7
+ const {
8
+ formattedValue,
9
+ icon,
10
+ subText,
11
+ fontColor
12
+ } = this.userOptions.customSVGOptions;
13
+ const dynamicStyles = new DynamicStyles();
14
+ const valueElement = this.renderer.text(formattedValue).attr('data-test', 'visualization-primary-value').css({
15
+ color: fontColor,
16
+ visibility: 'hidden'
17
+ }).add();
18
+ const subTextElement = subText ? this.renderer.text(subText).attr('data-test', 'visualization-subtext').css({
19
+ color: fontColor,
20
+ visibility: 'hidden'
21
+ }).add() : null;
22
+ const iconElement = icon ? addIconElement.call(this, icon, fontColor) : null;
23
+ let fitsWithinContainer = false;
24
+ let styles = {};
25
+ while (!fitsWithinContainer && dynamicStyles.hasNext()) {
26
+ styles = dynamicStyles.next();
27
+ valueElement.css(styles.value);
28
+ subTextElement === null || subTextElement === void 0 ? void 0 : subTextElement.css(styles.subText);
29
+ fitsWithinContainer = checkIfFitsWithinContainer(getAvailableSpace.call(this, styles.spacing.valueTop), valueElement, subTextElement, icon, subText, styles.spacing);
30
+ }
31
+ positionElements.call(this, valueElement, subTextElement, iconElement, styles.spacing);
32
+ valueElement.css({
33
+ visibility: 'visible'
34
+ });
35
+ iconElement === null || iconElement === void 0 ? void 0 : iconElement.css({
36
+ visibility: 'visible'
37
+ });
38
+ subTextElement === null || subTextElement === void 0 ? void 0 : subTextElement.css({
39
+ visibility: 'visible'
40
+ });
41
+ }
@@ -0,0 +1,40 @@
1
+ import { computeLayoutRect } from './computeLayoutRect.js';
2
+ import { ACTUAL_NUMBER_HEIGHT_FACTOR } from './constants.js';
3
+ export function positionElements(valueElement, subTextElement, iconElement, spacing) {
4
+ const valueElementBox = valueElement.getBBox();
5
+ /* Layout here refers to a virtual rect that wraps
6
+ * all indiviual parts of the single value visualization
7
+ * (value, subtext and icon) */
8
+ const layoutRect = computeLayoutRect.call(this, valueElement, subTextElement, iconElement, spacing);
9
+ valueElement.align({
10
+ align: 'right',
11
+ verticalAlign: 'top',
12
+ alignByTranslate: false,
13
+ x: (valueElementBox.width + layoutRect.sideMarginTop) * -1,
14
+ y: valueElementBox.height * ACTUAL_NUMBER_HEIGHT_FACTOR
15
+ }, false, layoutRect);
16
+ if (iconElement) {
17
+ const {
18
+ height
19
+ } = iconElement.getBBox();
20
+ const scale = spacing.iconSize / height;
21
+ const translateX = layoutRect.x + layoutRect.sideMarginTop;
22
+ const iconHeight = height * scale;
23
+ const valueElementHeight = valueElementBox.height * ACTUAL_NUMBER_HEIGHT_FACTOR;
24
+ const translateY = layoutRect.y + (valueElementHeight - iconHeight) / 2;
25
+
26
+ /* The icon is a <g> with <path> elements that contain coordinates.
27
+ * These path-coordinates only scale correctly when using CSS translate */
28
+ iconElement.css({
29
+ transform: `translate(${translateX}px, ${translateY}px) scale(${scale})`
30
+ });
31
+ }
32
+ if (subTextElement) {
33
+ subTextElement.align({
34
+ align: 'left',
35
+ verticalAlign: 'bottom',
36
+ alignByTranslate: false,
37
+ x: layoutRect.sideMarginBottom
38
+ }, false, layoutRect);
39
+ }
40
+ }
@@ -0,0 +1,100 @@
1
+ const valueStyles = [{
2
+ 'font-size': '164px',
3
+ 'letter-spacing': '-5px'
4
+ }, {
5
+ 'font-size': '128px',
6
+ 'letter-spacing': '-4px'
7
+ }, {
8
+ 'font-size': '96px',
9
+ 'letter-spacing': '-3px'
10
+ }, {
11
+ 'font-size': '64px',
12
+ 'letter-spacing': '-2.5px'
13
+ }, {
14
+ 'font-size': '40px',
15
+ 'letter-spacing': '-1.5px'
16
+ }, {
17
+ 'font-size': '20px',
18
+ 'letter-spacing': '-1px'
19
+ }];
20
+ const subTextStyles = [{
21
+ 'font-size': '36px',
22
+ 'letter-spacing': '-1.4px'
23
+ }, {
24
+ 'font-size': '32px',
25
+ 'letter-spacing': '-1.2px'
26
+ }, {
27
+ 'font-size': '26px',
28
+ 'letter-spacing': '-0.8px'
29
+ }, {
30
+ 'font-size': '20px',
31
+ 'letter-spacing': '-0.6px'
32
+ }, {
33
+ 'font-size': '14px',
34
+ 'letter-spacing': '0.2px'
35
+ }, {
36
+ 'font-size': '9px',
37
+ 'letter-spacing': '0px'
38
+ }];
39
+ const spacings = [{
40
+ valueTop: 8,
41
+ subTextTop: 12,
42
+ iconGap: 8,
43
+ iconSize: 164
44
+ }, {
45
+ valueTop: 8,
46
+ subTextTop: 12,
47
+ iconGap: 6,
48
+ iconSize: 128
49
+ }, {
50
+ valueTop: 8,
51
+ subTextTop: 8,
52
+ iconGap: 4,
53
+ iconSize: 96
54
+ }, {
55
+ valueTop: 8,
56
+ subTextTop: 8,
57
+ iconGap: 4,
58
+ iconSize: 64
59
+ }, {
60
+ valueTop: 8,
61
+ subTextTop: 8,
62
+ iconGap: 4,
63
+ iconSize: 40
64
+ }, {
65
+ valueTop: 8,
66
+ subTextTop: 4,
67
+ iconGap: 2,
68
+ iconSize: 20
69
+ }];
70
+ export const MIN_SIDE_WHITESPACE = 4;
71
+ export class DynamicStyles {
72
+ constructor() {
73
+ this.currentIndex = 0;
74
+ }
75
+ getStyle() {
76
+ return {
77
+ value: {
78
+ ...valueStyles[this.currentIndex],
79
+ 'font-weight': '300'
80
+ },
81
+ subText: subTextStyles[this.currentIndex],
82
+ spacing: spacings[this.currentIndex]
83
+ };
84
+ }
85
+ next() {
86
+ if (this.currentIndex === valueStyles.length - 1) {
87
+ throw new Error('No next available, already on the smallest style');
88
+ } else {
89
+ ++this.currentIndex;
90
+ }
91
+ return this.getStyle();
92
+ }
93
+ first() {
94
+ this.currentIndex = 0;
95
+ return this.getStyle();
96
+ }
97
+ hasNext() {
98
+ return this.currentIndex < valueStyles.length - 1;
99
+ }
100
+ }