@hisptz/dhis2-analytics 1.0.5 → 1.0.7

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 (367) hide show
  1. package/build/cjs/components/ChartAnalytics/ChartAnalytics.stories.js +253 -0
  2. package/build/cjs/components/ChartAnalytics/ChartAnalytics.test.js +51 -0
  3. package/build/cjs/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +48 -0
  4. package/build/cjs/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +34 -0
  5. package/build/cjs/components/ChartAnalytics/components/DownloadMenu/index.js +67 -0
  6. package/build/cjs/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +1 -0
  7. package/{src → build/cjs}/components/ChartAnalytics/data/column-data.json +0 -0
  8. package/{src → build/cjs}/components/ChartAnalytics/data/complex-multi-series-data.json +0 -0
  9. package/{src → build/cjs}/components/ChartAnalytics/data/multi-series-data.json +0 -0
  10. package/{src → build/cjs}/components/ChartAnalytics/data/pie-data.json +0 -0
  11. package/{src → build/cjs}/components/ChartAnalytics/data/stacked-chart-data.json +0 -0
  12. package/build/cjs/components/ChartAnalytics/hooks/useChart.js +38 -0
  13. package/build/cjs/components/ChartAnalytics/index.js +69 -0
  14. package/build/cjs/components/ChartAnalytics/models/column.js +53 -0
  15. package/build/cjs/components/ChartAnalytics/models/index.js +102 -0
  16. package/build/cjs/components/ChartAnalytics/models/line.js +35 -0
  17. package/build/cjs/components/ChartAnalytics/models/multi-series.js +111 -0
  18. package/build/cjs/components/ChartAnalytics/models/pie.js +53 -0
  19. package/build/cjs/components/ChartAnalytics/services/export.js +50 -0
  20. package/{src → build/cjs}/components/ChartAnalytics/styles/custom-highchart.css +0 -0
  21. package/build/cjs/components/ChartAnalytics/types/props.js +1 -0
  22. package/build/cjs/components/ChartAnalytics/utils/chart.js +133 -0
  23. package/build/cjs/components/CircularProgressDashboard/CircularProgressIndicator.stories.js +45 -0
  24. package/build/cjs/components/CircularProgressDashboard/CircularProgressIndicator.test.js +13 -0
  25. package/build/cjs/components/CircularProgressDashboard/index.js +49 -0
  26. package/build/cjs/components/CircularProgressDashboard/types/props.js +1 -0
  27. package/build/cjs/components/Map/Map.stories.js +352 -0
  28. package/build/cjs/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +32 -0
  29. package/build/cjs/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +40 -0
  30. package/build/cjs/components/Map/components/EarthEngineLayerConfiguration/index.js +458 -0
  31. package/build/cjs/components/Map/components/MapArea/index.js +101 -0
  32. package/build/cjs/components/Map/components/MapArea/interfaces/index.js +1 -0
  33. package/build/cjs/components/Map/components/MapControls/components/CustomControl/index.js +32 -0
  34. package/build/cjs/components/Map/components/MapControls/components/DownloadControl/index.js +25 -0
  35. package/build/cjs/components/Map/components/MapControls/components/FullscreenControl/index.js +13 -0
  36. package/build/cjs/components/Map/components/MapControls/index.js +42 -0
  37. package/build/cjs/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +13 -0
  38. package/build/cjs/components/Map/components/MapLayer/components/BoundaryLayer/index.js +51 -0
  39. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +106 -0
  40. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +379 -0
  41. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +36 -0
  42. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +200 -0
  43. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +1 -0
  44. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +14 -0
  45. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +412 -0
  46. package/build/cjs/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +124 -0
  47. package/{src → build/cjs}/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css +0 -0
  48. package/build/cjs/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +26 -0
  49. package/build/cjs/components/Map/components/MapLayer/components/LegendArea/index.js +181 -0
  50. package/build/cjs/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +86 -0
  51. package/build/cjs/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +14 -0
  52. package/build/cjs/components/Map/components/MapLayer/components/PointLayer/index.js +46 -0
  53. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +57 -0
  54. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js +145 -0
  55. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +43 -0
  56. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +56 -0
  57. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +61 -0
  58. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +43 -0
  59. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +35 -0
  60. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +15 -0
  61. package/build/cjs/components/Map/components/MapLayer/components/ThematicLayer/index.js +57 -0
  62. package/{src → build/cjs}/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css +0 -0
  63. package/build/cjs/components/Map/components/MapLayer/index.js +40 -0
  64. package/build/cjs/components/Map/components/MapLayer/interfaces/index.js +8 -0
  65. package/build/cjs/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +389 -0
  66. package/build/cjs/components/Map/components/MapProvider/components/MapLayerProvider/index.js +116 -0
  67. package/build/cjs/components/Map/components/MapProvider/hooks/index.js +19 -0
  68. package/build/cjs/components/Map/components/MapProvider/index.js +121 -0
  69. package/build/cjs/components/Map/components/MapUpdater/index.js +24 -0
  70. package/build/cjs/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +32 -0
  71. package/build/cjs/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +40 -0
  72. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +40 -0
  73. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js +428 -0
  74. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +63 -0
  75. package/{src → build/cjs}/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css +0 -0
  76. package/{src → build/cjs}/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css +0 -0
  77. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +72 -0
  78. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +71 -0
  79. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +47 -0
  80. package/build/cjs/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +79 -0
  81. package/build/cjs/components/Map/components/ThematicLayerConfiguration/index.js +265 -0
  82. package/build/cjs/components/Map/constants/colors.js +428 -0
  83. package/build/cjs/components/Map/constants/legendSet.js +22 -0
  84. package/build/cjs/components/Map/hooks/map.js +52 -0
  85. package/build/cjs/components/Map/index.js +108 -0
  86. package/build/cjs/components/Map/interfaces/index.js +1 -0
  87. package/build/cjs/components/Map/state/index.js +23 -0
  88. package/build/cjs/components/Map/utils/colors.js +78 -0
  89. package/build/cjs/components/Map/utils/helpers.js +25 -0
  90. package/build/cjs/components/Map/utils/map.js +161 -0
  91. package/build/cjs/components/SingleValueContainer/SingleValueContainer.stories.js +127 -0
  92. package/build/cjs/components/SingleValueContainer/SingleValueContainer.test.js +23 -0
  93. package/build/cjs/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +54 -0
  94. package/build/cjs/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +24 -0
  95. package/build/cjs/components/SingleValueContainer/index.js +43 -0
  96. package/{src → build/cjs}/components/SingleValueContainer/styles/SingleValueContainer.module.css +0 -0
  97. package/build/cjs/components/SingleValueContainer/types/props.js +1 -0
  98. package/{src → build/cjs}/data/map.json +0 -0
  99. package/build/cjs/dataProviders/map.js +31 -0
  100. package/build/cjs/index.js +49 -0
  101. package/build/cjs/locales/en/translations.json +128 -0
  102. package/build/cjs/locales/index.js +22 -0
  103. package/build/es/components/ChartAnalytics/ChartAnalytics.stories.js +235 -0
  104. package/build/es/components/ChartAnalytics/ChartAnalytics.test.js +46 -0
  105. package/build/es/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +41 -0
  106. package/build/es/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +26 -0
  107. package/build/es/components/ChartAnalytics/components/DownloadMenu/index.js +58 -0
  108. package/build/es/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +1 -0
  109. package/build/es/components/ChartAnalytics/data/column-data.json +210 -0
  110. package/build/es/components/ChartAnalytics/data/complex-multi-series-data.json +124 -0
  111. package/build/es/components/ChartAnalytics/data/multi-series-data.json +536 -0
  112. package/build/es/components/ChartAnalytics/data/pie-data.json +115 -0
  113. package/build/es/components/ChartAnalytics/data/stacked-chart-data.json +415 -0
  114. package/build/es/components/ChartAnalytics/hooks/useChart.js +32 -0
  115. package/build/es/components/ChartAnalytics/index.js +40 -0
  116. package/build/es/components/ChartAnalytics/models/column.js +45 -0
  117. package/build/es/components/ChartAnalytics/models/index.js +95 -0
  118. package/build/es/components/ChartAnalytics/models/line.js +28 -0
  119. package/build/es/components/ChartAnalytics/models/multi-series.js +104 -0
  120. package/build/es/components/ChartAnalytics/models/pie.js +46 -0
  121. package/build/es/components/ChartAnalytics/services/export.js +36 -0
  122. package/build/es/components/ChartAnalytics/styles/custom-highchart.css +48 -0
  123. package/build/es/components/ChartAnalytics/types/props.js +1 -0
  124. package/build/es/components/ChartAnalytics/utils/chart.js +122 -0
  125. package/{src/components/CircularProgressDashboard/CircularProgressIndicator.stories.tsx → build/es/components/CircularProgressDashboard/CircularProgressIndicator.stories.js} +9 -16
  126. package/build/es/components/CircularProgressDashboard/CircularProgressIndicator.test.js +10 -0
  127. package/build/es/components/CircularProgressDashboard/index.js +41 -0
  128. package/build/es/components/CircularProgressDashboard/types/props.js +1 -0
  129. package/build/es/components/Map/Map.stories.js +334 -0
  130. package/build/es/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +23 -0
  131. package/build/es/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +31 -0
  132. package/build/es/components/Map/components/EarthEngineLayerConfiguration/index.js +448 -0
  133. package/build/es/components/Map/components/MapArea/index.js +91 -0
  134. package/build/es/components/Map/components/MapArea/interfaces/index.js +1 -0
  135. package/build/es/components/Map/components/MapControls/components/CustomControl/index.js +25 -0
  136. package/build/es/components/Map/components/MapControls/components/DownloadControl/index.js +18 -0
  137. package/build/es/components/Map/components/MapControls/components/FullscreenControl/index.js +6 -0
  138. package/build/es/components/Map/components/MapControls/index.js +35 -0
  139. package/build/es/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +7 -0
  140. package/build/es/components/Map/components/MapLayer/components/BoundaryLayer/index.js +41 -0
  141. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +95 -0
  142. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +369 -0
  143. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +29 -0
  144. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +191 -0
  145. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +1 -0
  146. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +14 -0
  147. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +403 -0
  148. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +111 -0
  149. package/build/es/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css +12 -0
  150. package/build/es/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +19 -0
  151. package/build/es/components/Map/components/MapLayer/components/LegendArea/index.js +172 -0
  152. package/build/es/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +76 -0
  153. package/build/es/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +8 -0
  154. package/build/es/components/Map/components/MapLayer/components/PointLayer/index.js +39 -0
  155. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +49 -0
  156. package/{src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.tsx → build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js} +57 -74
  157. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +33 -0
  158. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +47 -0
  159. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +50 -0
  160. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +36 -0
  161. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +28 -0
  162. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +9 -0
  163. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/index.js +50 -0
  164. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css +62 -0
  165. package/build/es/components/Map/components/MapLayer/index.js +33 -0
  166. package/build/es/components/Map/components/MapLayer/interfaces/index.js +1 -0
  167. package/build/es/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +381 -0
  168. package/build/es/components/Map/components/MapProvider/components/MapLayerProvider/index.js +107 -0
  169. package/{src/components/Map/components/MapProvider/hooks/index.ts → build/es/components/Map/components/MapProvider/hooks/index.js} +3 -6
  170. package/build/es/components/Map/components/MapProvider/index.js +112 -0
  171. package/build/es/components/Map/components/MapUpdater/index.js +17 -0
  172. package/build/es/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +23 -0
  173. package/build/es/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +31 -0
  174. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +33 -0
  175. package/{src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.ts → build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js} +46 -59
  176. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +53 -0
  177. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css +15 -0
  178. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css +12 -0
  179. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +56 -0
  180. package/build/es/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +64 -0
  181. package/build/es/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +38 -0
  182. package/build/es/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +70 -0
  183. package/build/es/components/Map/components/ThematicLayerConfiguration/index.js +254 -0
  184. package/{src/components/Map/constants/colors.ts → build/es/components/Map/constants/colors.js} +46 -59
  185. package/build/es/components/Map/constants/legendSet.js +15 -0
  186. package/build/es/components/Map/hooks/map.js +44 -0
  187. package/build/es/components/Map/index.js +51 -0
  188. package/build/es/components/Map/interfaces/index.js +1 -0
  189. package/build/es/components/Map/state/index.js +14 -0
  190. package/build/es/components/Map/utils/colors.js +61 -0
  191. package/build/es/components/Map/utils/helpers.js +14 -0
  192. package/build/es/components/Map/utils/map.js +147 -0
  193. package/build/es/components/SingleValueContainer/SingleValueContainer.stories.js +115 -0
  194. package/build/es/components/SingleValueContainer/SingleValueContainer.test.js +20 -0
  195. package/build/es/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +47 -0
  196. package/build/es/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +17 -0
  197. package/build/es/components/SingleValueContainer/index.js +29 -0
  198. package/build/es/components/SingleValueContainer/styles/SingleValueContainer.module.css +39 -0
  199. package/build/es/components/SingleValueContainer/types/props.js +1 -0
  200. package/build/es/data/map.json +5984 -0
  201. package/build/es/dataProviders/map.js +24 -0
  202. package/build/es/index.js +5 -0
  203. package/build/es/locales/en/translations.json +128 -0
  204. package/build/es/locales/index.js +13 -0
  205. package/build/types/components/ChartAnalytics/components/DownloadMenu/components/Menu.d.ts +8 -0
  206. package/build/types/components/ChartAnalytics/components/DownloadMenu/constants/menu.d.ts +7 -0
  207. package/build/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts +9 -0
  208. package/{src/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.ts → build/types/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.d.ts} +0 -0
  209. package/build/types/components/ChartAnalytics/hooks/useChart.d.ts +11 -0
  210. package/build/types/components/ChartAnalytics/index.d.ts +9 -0
  211. package/build/types/components/ChartAnalytics/models/column.d.ts +12 -0
  212. package/build/types/components/ChartAnalytics/models/index.d.ts +17 -0
  213. package/build/types/components/ChartAnalytics/models/line.d.ts +8 -0
  214. package/build/types/components/ChartAnalytics/models/multi-series.d.ts +9 -0
  215. package/build/types/components/ChartAnalytics/models/pie.d.ts +8 -0
  216. package/build/types/components/ChartAnalytics/services/export.d.ts +8 -0
  217. package/build/types/components/ChartAnalytics/types/props.d.ts +43 -0
  218. package/build/types/components/ChartAnalytics/utils/chart.d.ts +15 -0
  219. package/build/types/components/CircularProgressDashboard/index.d.ts +3 -0
  220. package/build/types/components/CircularProgressDashboard/types/props.d.ts +17 -0
  221. package/build/types/components/Map/components/EarthEngineLayerConfiguration/index.d.ts +17 -0
  222. package/build/types/components/Map/components/MapArea/index.d.ts +5 -0
  223. package/build/types/components/Map/components/MapArea/interfaces/index.d.ts +30 -0
  224. package/build/types/components/Map/components/MapControls/components/CustomControl/index.d.ts +7 -0
  225. package/build/types/components/Map/components/MapControls/components/DownloadControl/index.d.ts +8 -0
  226. package/build/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts +5 -0
  227. package/build/types/components/Map/components/MapControls/index.d.ts +6 -0
  228. package/build/types/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.d.ts +1 -0
  229. package/build/types/components/Map/components/MapLayer/components/BoundaryLayer/index.d.ts +15 -0
  230. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts +17 -0
  231. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.d.ts +4 -0
  232. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.d.ts +9 -0
  233. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/index.d.ts +4 -0
  234. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.d.ts +58 -0
  235. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.d.ts +1 -0
  236. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.d.ts +55 -0
  237. package/build/types/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.d.ts +20 -0
  238. package/build/types/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.d.ts +6 -0
  239. package/build/types/components/Map/components/MapLayer/components/LegendArea/index.d.ts +9 -0
  240. package/build/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts +3 -0
  241. package/build/types/components/Map/components/MapLayer/components/PointLayer/hooks/index.d.ts +2 -0
  242. package/build/types/components/Map/components/MapLayer/components/PointLayer/index.d.ts +2 -0
  243. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.d.ts +13 -0
  244. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts +10 -0
  245. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts +16 -0
  246. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.d.ts +12 -0
  247. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts +21 -0
  248. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.d.ts +12 -0
  249. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.d.ts +5 -0
  250. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.d.ts +2 -0
  251. package/build/types/components/Map/components/MapLayer/components/ThematicLayer/index.d.ts +5 -0
  252. package/build/types/components/Map/components/MapLayer/index.d.ts +6 -0
  253. package/build/types/components/Map/components/MapLayer/interfaces/index.d.ts +123 -0
  254. package/build/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts +9 -0
  255. package/build/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts +6 -0
  256. package/build/types/components/Map/components/MapProvider/hooks/index.d.ts +15 -0
  257. package/build/types/components/Map/components/MapProvider/index.d.ts +3 -0
  258. package/build/types/components/Map/components/MapUpdater/index.d.ts +5 -0
  259. package/build/types/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.d.ts +8 -0
  260. package/build/types/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.d.ts +419 -0
  261. package/build/types/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.d.ts +9 -0
  262. package/build/types/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.d.ts +11 -0
  263. package/build/types/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.d.ts +2 -0
  264. package/build/types/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.d.ts +8 -0
  265. package/build/types/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.d.ts +9 -0
  266. package/build/types/components/Map/components/ThematicLayerConfiguration/index.d.ts +18 -0
  267. package/build/types/components/Map/constants/colors.d.ts +419 -0
  268. package/build/types/components/Map/constants/legendSet.d.ts +7 -0
  269. package/build/types/components/Map/hooks/map.d.ts +9 -0
  270. package/build/types/components/Map/index.d.ts +8 -0
  271. package/build/types/components/Map/interfaces/index.d.ts +65 -0
  272. package/build/types/components/Map/state/index.d.ts +20 -0
  273. package/build/types/components/Map/utils/colors.d.ts +12 -0
  274. package/build/types/components/Map/utils/helpers.d.ts +6 -0
  275. package/build/types/components/Map/utils/map.d.ts +40 -0
  276. package/build/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts +8 -0
  277. package/build/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts +2 -0
  278. package/build/types/components/SingleValueContainer/index.d.ts +5 -0
  279. package/build/types/components/SingleValueContainer/types/props.d.ts +15 -0
  280. package/build/types/dataProviders/map.d.ts +4 -0
  281. package/{src/index.ts → build/types/index.d.ts} +0 -0
  282. package/package.json +26 -5
  283. package/d2.config.js +0 -8
  284. package/i18n/en.pot +0 -409
  285. package/src/components/ChartAnalytics/ChartAnalytics.stories.tsx +0 -250
  286. package/src/components/ChartAnalytics/ChartAnalytics.test.tsx +0 -51
  287. package/src/components/ChartAnalytics/components/DownloadMenu/components/Menu.tsx +0 -48
  288. package/src/components/ChartAnalytics/components/DownloadMenu/constants/menu.ts +0 -38
  289. package/src/components/ChartAnalytics/components/DownloadMenu/index.tsx +0 -67
  290. package/src/components/ChartAnalytics/hooks/useChart.ts +0 -35
  291. package/src/components/ChartAnalytics/index.tsx +0 -23
  292. package/src/components/ChartAnalytics/models/column.ts +0 -50
  293. package/src/components/ChartAnalytics/models/index.ts +0 -78
  294. package/src/components/ChartAnalytics/models/line.ts +0 -31
  295. package/src/components/ChartAnalytics/models/multi-series.ts +0 -115
  296. package/src/components/ChartAnalytics/models/pie.ts +0 -54
  297. package/src/components/ChartAnalytics/services/export.ts +0 -38
  298. package/src/components/ChartAnalytics/types/props.tsx +0 -48
  299. package/src/components/ChartAnalytics/utils/chart.ts +0 -123
  300. package/src/components/CircularProgressDashboard/CircularProgressIndicator.test.tsx +0 -9
  301. package/src/components/CircularProgressDashboard/index.tsx +0 -35
  302. package/src/components/CircularProgressDashboard/types/props.tsx +0 -17
  303. package/src/components/Map/Map.stories.tsx +0 -339
  304. package/src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.tsx +0 -28
  305. package/src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.tsx +0 -34
  306. package/src/components/Map/components/EarthEngineLayerConfiguration/index.tsx +0 -412
  307. package/src/components/Map/components/MapArea/index.tsx +0 -83
  308. package/src/components/Map/components/MapArea/interfaces/index.ts +0 -39
  309. package/src/components/Map/components/MapControls/components/CustomControl/index.tsx +0 -24
  310. package/src/components/Map/components/MapControls/components/DownloadControl/index.tsx +0 -10
  311. package/src/components/Map/components/MapControls/components/FullscreenControl/index.tsx +0 -7
  312. package/src/components/Map/components/MapControls/index.tsx +0 -24
  313. package/src/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.ts +0 -7
  314. package/src/components/Map/components/MapLayer/components/BoundaryLayer/index.tsx +0 -55
  315. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.tsx +0 -76
  316. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.ts +0 -430
  317. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.ts +0 -34
  318. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx +0 -185
  319. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.ts +0 -56
  320. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +0 -34233
  321. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts +0 -431
  322. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.ts +0 -105
  323. package/src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx +0 -17
  324. package/src/components/Map/components/MapLayer/components/LegendArea/index.tsx +0 -168
  325. package/src/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.tsx +0 -44
  326. package/src/components/Map/components/MapLayer/components/PointLayer/hooks/index.ts +0 -8
  327. package/src/components/Map/components/MapLayer/components/PointLayer/index.tsx +0 -36
  328. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.tsx +0 -48
  329. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.tsx +0 -39
  330. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.tsx +0 -57
  331. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx +0 -43
  332. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx +0 -38
  333. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx +0 -26
  334. package/src/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.ts +0 -10
  335. package/src/components/Map/components/MapLayer/components/ThematicLayer/index.tsx +0 -46
  336. package/src/components/Map/components/MapLayer/index.tsx +0 -32
  337. package/src/components/Map/components/MapLayer/interfaces/index.ts +0 -139
  338. package/src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx +0 -359
  339. package/src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx +0 -105
  340. package/src/components/Map/components/MapProvider/index.tsx +0 -93
  341. package/src/components/Map/components/MapUpdater/index.tsx +0 -8
  342. package/src/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.tsx +0 -28
  343. package/src/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.tsx +0 -34
  344. package/src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.tsx +0 -24
  345. package/src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.tsx +0 -50
  346. package/src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.ts +0 -91
  347. package/src/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.tsx +0 -45
  348. package/src/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.tsx +0 -47
  349. package/src/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.tsx +0 -57
  350. package/src/components/Map/components/ThematicLayerConfiguration/index.tsx +0 -248
  351. package/src/components/Map/constants/legendSet.ts +0 -19
  352. package/src/components/Map/hooks/map.ts +0 -47
  353. package/src/components/Map/index.tsx +0 -65
  354. package/src/components/Map/interfaces/index.ts +0 -57
  355. package/src/components/Map/state/index.tsx +0 -31
  356. package/src/components/Map/utils/colors.ts +0 -95
  357. package/src/components/Map/utils/helpers.ts +0 -15
  358. package/src/components/Map/utils/map.ts +0 -150
  359. package/src/components/SingleValueContainer/SingleValueContainer.stories.tsx +0 -146
  360. package/src/components/SingleValueContainer/SingleValueContainer.test.tsx +0 -24
  361. package/src/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.tsx +0 -46
  362. package/src/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.tsx +0 -12
  363. package/src/components/SingleValueContainer/index.tsx +0 -30
  364. package/src/components/SingleValueContainer/types/props.tsx +0 -16
  365. package/src/dataProviders/map.tsx +0 -24
  366. package/src/index.test.ts +0 -7
  367. package/tsconfig.json +0 -45
@@ -0,0 +1,95 @@
1
+ import React, { forwardRef } from "react";
2
+ import LegendCardHeader from "../../LegendArea/components/LegendCardHeader";
3
+ import { Divider } from "@dhis2/ui";
4
+ import i18n from "@dhis2/d2-i18n";
5
+ import { isEmpty } from "lodash";
6
+ export function LegendItem(_ref) {
7
+ let {
8
+ legend
9
+ } = _ref;
10
+ return /*#__PURE__*/React.createElement("div", {
11
+ className: "legend-item"
12
+ }, /*#__PURE__*/React.createElement("div", {
13
+ className: "legend-item-color",
14
+ style: {
15
+ backgroundColor: legend.color
16
+ }
17
+ }), legend.name ? /*#__PURE__*/React.createElement("div", {
18
+ className: "legend-item-label"
19
+ }, `${legend.name}`) : /*#__PURE__*/React.createElement("div", {
20
+ className: "legend-item-label"
21
+ }, `${legend.min} - ${legend.max}`));
22
+ }
23
+ function getLegendsFromParams(params) {
24
+ if (!params) return [];
25
+ const {
26
+ palette,
27
+ min,
28
+ max
29
+ } = params;
30
+ console.log(params);
31
+ const sanitizedPalette = Array.isArray(palette) ? palette : palette.split(",");
32
+ const classes = sanitizedPalette.length;
33
+ const difference = max - min;
34
+ const interval = Math.round(difference / classes);
35
+ const legends = [];
36
+ console.log(10 / 9);
37
+ for (let i = 0; i < classes; i++) {
38
+ const min = i * interval;
39
+ const max = min + interval;
40
+ const name = i === classes - 1 ? `> ${min}` : undefined;
41
+ legends.push({
42
+ id: sanitizedPalette[i],
43
+ color: sanitizedPalette[i],
44
+ min,
45
+ max,
46
+ name
47
+ });
48
+ }
49
+ return legends;
50
+ }
51
+ function EarthEngineLegend(_ref2, ref) {
52
+ var _options$legend$items, _options$legend, _options$description, _options$unit, _options$source;
53
+ let {
54
+ layer,
55
+ collapsible,
56
+ onCollapse,
57
+ name
58
+ } = _ref2;
59
+ const {
60
+ options
61
+ } = layer;
62
+ const legends = (_options$legend$items = options === null || options === void 0 ? void 0 : (_options$legend = options.legend) === null || _options$legend === void 0 ? void 0 : _options$legend.items) !== null && _options$legend$items !== void 0 ? _options$legend$items : getLegendsFromParams(options === null || options === void 0 ? void 0 : options.params);
63
+ return /*#__PURE__*/React.createElement("div", {
64
+ style: {
65
+ maxWidth: 200,
66
+ alignItems: "start",
67
+ gap: 8
68
+ },
69
+ className: "legend-card",
70
+ ref: ref
71
+ }, /*#__PURE__*/React.createElement(LegendCardHeader, {
72
+ title: name,
73
+ collapsible: collapsible,
74
+ onCollapse: onCollapse
75
+ }), /*#__PURE__*/React.createElement(Divider, {
76
+ margin: "0"
77
+ }), /*#__PURE__*/React.createElement("p", {
78
+ style: {
79
+ margin: 0
80
+ }
81
+ }, (_options$description = options === null || options === void 0 ? void 0 : options.description) !== null && _options$description !== void 0 ? _options$description : ""), !isEmpty(legends) && /*#__PURE__*/React.createElement("b", null, (_options$unit = options === null || options === void 0 ? void 0 : options.unit) !== null && _options$unit !== void 0 ? _options$unit : ""), /*#__PURE__*/React.createElement("div", {
82
+ className: "legend-list"
83
+ }, legends === null || legends === void 0 ? void 0 : legends.map(legend => /*#__PURE__*/React.createElement(LegendItem, {
84
+ key: `${legend === null || legend === void 0 ? void 0 : legend.color}-legend-list`,
85
+ legend: legend
86
+ }))), (options === null || options === void 0 ? void 0 : options.source) && /*#__PURE__*/React.createElement("div", {
87
+ className: "row gap-8"
88
+ }, i18n.t("Source"), ":", /*#__PURE__*/React.createElement("a", {
89
+ className: "source-url",
90
+ target: "_blank",
91
+ referrerPolicy: "no-referrer",
92
+ href: options === null || options === void 0 ? void 0 : options.sourceUrl
93
+ }, (_options$source = options === null || options === void 0 ? void 0 : options.source) !== null && _options$source !== void 0 ? _options$source : "")));
94
+ }
95
+ export default /*#__PURE__*/forwardRef(EarthEngineLegend);
@@ -0,0 +1,369 @@
1
+ import i18n from "@dhis2/d2-i18n";
2
+ export const EARTH_ENGINE_LAYER = "earthEngine";
3
+ export const EARTH_ENGINE_LAYERS = [{
4
+ layer: EARTH_ENGINE_LAYER,
5
+ id: "population",
6
+ datasetId: "WorldPop/GP/100m/pop",
7
+ type: "ImageCollection",
8
+ name: i18n.t("Population"),
9
+ unit: i18n.t("people per hectare"),
10
+ description: i18n.t("Estimated number of people living in an area."),
11
+ source: "WorldPop / Google Earth Engine",
12
+ sourceUrl: "https://developers.google.com/earth-engine/datasets/catalog/WorldPop_GP_100m_pop",
13
+ img: "images/population.png",
14
+ defaultAggregations: ["sum", "mean"],
15
+ tokenType: "Bearer",
16
+ periodType: "Yearly",
17
+ filters: ["period"],
18
+ mosaic: true,
19
+ params: {
20
+ min: 0,
21
+ max: 10,
22
+ palette: "#fee5d9,#fcbba1,#fc9272,#fb6a4a,#de2d26,#a50f15" // Reds
23
+ },
24
+
25
+ opacity: 0.9
26
+ }, {
27
+ layer: EARTH_ENGINE_LAYER,
28
+ type: "ImageCollection",
29
+ tokenType: "Bearer",
30
+ id: "populationAgeGroups",
31
+ datasetId: "WorldPop/GP/100m/pop_age_sex_cons_unadj",
32
+ name: i18n.t("Population age groups"),
33
+ unit: i18n.t("people per hectare"),
34
+ description: i18n.t("Estimated number of people living in an area, grouped by age and gender."),
35
+ source: "WorldPop / Google Earth Engine",
36
+ sourceUrl: "https://developers.google.com/earth-engine/datasets/catalog/WorldPop_GP_100m_pop_age_sex_cons_unadj",
37
+ img: "images/population.png",
38
+ periodType: "Yearly",
39
+ defaultAggregations: ["sum", "mean"],
40
+ bands: [{
41
+ id: "M_0",
42
+ name: i18n.t("Male 0 - 1 years")
43
+ }, {
44
+ id: "M_1",
45
+ name: i18n.t("Male 1 - 4 years")
46
+ }, {
47
+ id: "M_5",
48
+ name: i18n.t("Male 5 - 9 years")
49
+ }, {
50
+ id: "M_10",
51
+ name: i18n.t("Male 10 - 14 years")
52
+ }, {
53
+ id: "M_15",
54
+ name: i18n.t("Male 15 - 19 years")
55
+ }, {
56
+ id: "M_20",
57
+ name: i18n.t("Male 20 - 24 years")
58
+ }, {
59
+ id: "M_25",
60
+ name: i18n.t("Male 25 - 29 years")
61
+ }, {
62
+ id: "M_30",
63
+ name: i18n.t("Male 30 - 34 years")
64
+ }, {
65
+ id: "M_35",
66
+ name: i18n.t("Male 35 - 39 years")
67
+ }, {
68
+ id: "M_40",
69
+ name: i18n.t("Male 40 - 44 years")
70
+ }, {
71
+ id: "M_45",
72
+ name: i18n.t("Male 45 - 49 years")
73
+ }, {
74
+ id: "M_50",
75
+ name: i18n.t("Male 50 - 54 years")
76
+ }, {
77
+ id: "M_55",
78
+ name: i18n.t("Male 55 - 59 years")
79
+ }, {
80
+ id: "M_60",
81
+ name: i18n.t("Male 60 - 64 years")
82
+ }, {
83
+ id: "M_65",
84
+ name: i18n.t("Male 65 - 69 years")
85
+ }, {
86
+ id: "M_70",
87
+ name: i18n.t("Male 70 - 74 years")
88
+ }, {
89
+ id: "M_75",
90
+ name: i18n.t("Male 75 - 79 years")
91
+ }, {
92
+ id: "M_80",
93
+ name: i18n.t("Male 80 years and above")
94
+ }, {
95
+ id: "F_0",
96
+ name: i18n.t("Female 0 - 1 years")
97
+ }, {
98
+ id: "F_1",
99
+ name: i18n.t("Female 1 - 4 years")
100
+ }, {
101
+ id: "F_5",
102
+ name: i18n.t("Female 5 - 9 years")
103
+ }, {
104
+ id: "F_10",
105
+ name: i18n.t("Female 10 - 14 years")
106
+ }, {
107
+ id: "F_15",
108
+ name: i18n.t("Female 15 - 19 years")
109
+ }, {
110
+ id: "F_20",
111
+ name: i18n.t("Female 20 - 24 years")
112
+ }, {
113
+ id: "F_25",
114
+ name: i18n.t("Female 25 - 29 years")
115
+ }, {
116
+ id: "F_30",
117
+ name: i18n.t("Female 30 - 34 years")
118
+ }, {
119
+ id: "F_35",
120
+ name: i18n.t("Female 35 - 39 years")
121
+ }, {
122
+ id: "F_40",
123
+ name: i18n.t("Female 40 - 44 years")
124
+ }, {
125
+ id: "F_45",
126
+ name: i18n.t("Female 45 - 49 years")
127
+ }, {
128
+ id: "F_50",
129
+ name: i18n.t("Female 50 - 54 years")
130
+ }, {
131
+ id: "F_55",
132
+ name: i18n.t("Female 55 - 59 years")
133
+ }, {
134
+ id: "F_60",
135
+ name: i18n.t("Female 60 - 64 years")
136
+ }, {
137
+ id: "F_65",
138
+ name: i18n.t("Female 65 - 69 years")
139
+ }, {
140
+ id: "F_70",
141
+ name: i18n.t("Female 70 - 74 years"),
142
+ multiple: true
143
+ }, {
144
+ id: "F_75",
145
+ name: i18n.t("Female 75 - 79 years")
146
+ }, {
147
+ id: "F_80",
148
+ name: i18n.t("Female 80 years and above")
149
+ }],
150
+ filters: ["period"],
151
+ mosaic: true,
152
+ params: {
153
+ min: 0,
154
+ max: 10,
155
+ palette: "#fee5d9,#fcbba1,#fc9272,#fb6a4a,#de2d26,#a50f15" // Reds
156
+ },
157
+
158
+ opacity: 0.9,
159
+ tileScale: 4
160
+ }, {
161
+ layer: EARTH_ENGINE_LAYER,
162
+ id: "footprints",
163
+ datasetId: "GOOGLE/Research/open-buildings/v1/polygons",
164
+ type: "FeatureCollection",
165
+ name: i18n.t("Building footprints"),
166
+ unit: i18n.t("Number of buildings"),
167
+ description: i18n.t("The outlines of buildings derived from high-resolution satellite imagery. Only for the continent of Africa."),
168
+ notice: i18n.t("Building counts are only available for smaller organisation unit areas."),
169
+ error: i18n.t("Select a smaller area or single organization unit to see the count of buildings."),
170
+ source: "NASA / USGS / JPL-Caltech / Google Earth Engine",
171
+ sourceUrl: "https://sites.research.google/open-buildings/",
172
+ img: "images/buildings.png",
173
+ aggregations: ["count"],
174
+ defaultAggregations: ["count"],
175
+ opacity: 0.9,
176
+ tokenType: "Bearer"
177
+ }, {
178
+ layer: EARTH_ENGINE_LAYER,
179
+ id: "elevation",
180
+ type: "Image",
181
+ tokenType: "Bearer",
182
+ datasetId: "USGS/SRTMGL1_003",
183
+ name: i18n.t("Elevation"),
184
+ unit: i18n.t("meters"),
185
+ description: i18n.t("Elevation above sea-level."),
186
+ source: "NASA / USGS / JPL-Caltech / Google Earth Engine",
187
+ sourceUrl: "https://explorer.earthengine.google.com/#detail/USGS%2FSRTMGL1_003",
188
+ img: "images/elevation.png",
189
+ aggregations: ["min", "max", "mean", "median", "stdDev", "variance"],
190
+ defaultAggregations: ["mean", "min", "max"],
191
+ selectedBands: ["elevation"],
192
+ params: {
193
+ min: 0,
194
+ max: 1500,
195
+ palette: "#ffffd4,#fee391,#fec44f,#fe9929,#d95f0e,#993404" // YlOrBr
196
+ },
197
+
198
+ opacity: 0.9
199
+ }, {
200
+ layer: EARTH_ENGINE_LAYER,
201
+ datasetId: "UCSB-CHG/CHIRPS/PENTAD",
202
+ id: "precipitation",
203
+ type: "ImageCollection",
204
+ tokenType: "Bearer",
205
+ name: i18n.t("Precipitation"),
206
+ unit: i18n.t("millimeter"),
207
+ description: i18n.t("Precipitation collected from satellite and weather stations on the ground. The values are in millimeters within 5 days periods. Updated monthly, during the 3rd week of the following month."),
208
+ source: "UCSB / CHG / Google Earth Engine",
209
+ sourceUrl: "https://explorer.earthengine.google.com/#detail/UCSB-CHG%2FCHIRPS%2FPENTAD",
210
+ periodType: "Custom",
211
+ selectedBands: ["precipitation"],
212
+ aggregations: ["min", "max", "mean", "median", "stdDev", "variance"],
213
+ defaultAggregations: ["mean", "min", "max"],
214
+ mask: true,
215
+ img: "images/precipitation.png",
216
+ params: {
217
+ min: 0,
218
+ max: 100,
219
+ palette: "#eff3ff,#c6dbef,#9ecae1,#6baed6,#3182bd,#08519c" // Blues
220
+ },
221
+
222
+ opacity: 0.9
223
+ }, {
224
+ layer: EARTH_ENGINE_LAYER,
225
+ datasetId: "MODIS/006/MOD11A2",
226
+ id: "temperature",
227
+ type: "ImageCollection",
228
+ tokenType: "Bearer",
229
+ name: i18n.t("Temperature"),
230
+ unit: i18n.t("°C during daytime"),
231
+ description: i18n.t("Land surface temperatures collected from satellite. Blank spots will appear in areas with a persistent cloud cover."),
232
+ source: "NASA LP DAAC / Google Earth Engine",
233
+ sourceUrl: "https://explorer.earthengine.google.com/#detail/MODIS%2FMOD11A2",
234
+ img: "images/temperature.png",
235
+ aggregations: ["min", "max", "mean", "median", "stdDev", "variance"],
236
+ defaultAggregations: ["mean", "min", "max"],
237
+ periodType: "Custom",
238
+ selectedBands: ["LST_Day_1km"],
239
+ mask: true,
240
+ methods: {
241
+ toFloat: [],
242
+ multiply: [0.02],
243
+ subtract: [273.15]
244
+ },
245
+ params: {
246
+ min: 0,
247
+ max: 40,
248
+ palette: "#fff5f0,#fee0d2,#fcbba1,#fc9272,#fb6a4a,#ef3b2c,#cb181d,#a50f15,#67000d" // Reds
249
+ },
250
+
251
+ opacity: 0.9
252
+ }, {
253
+ layer: EARTH_ENGINE_LAYER,
254
+ type: "ImageCollection",
255
+ tokenType: "Bearer",
256
+ id: "landCover",
257
+ datasetId: "MODIS/006/MCD12Q1",
258
+ // No longer in use: 'MODIS/051/MCD12Q1',
259
+ name: i18n.t("Landcover"),
260
+ description: i18n.t("Distinct landcover types collected from satellites."),
261
+ source: "NASA LP DAAC / Google Earth Engine",
262
+ sourceUrl: "https://developers.google.com/earth-engine/datasets/catalog/MODIS_006_MCD12Q1",
263
+ periodType: "Yearly",
264
+ filters: ["period"],
265
+ selectedBands: ["LC_Type1"],
266
+ defaultAggregations: ["percentage", "hectares", "acres"],
267
+ maxAggregations: 1,
268
+ legend: {
269
+ items: [
270
+ // http://www.eomf.ou.edu/static/IGBP.pdf
271
+ {
272
+ id: 1,
273
+ name: i18n.t("Evergreen Needleleaf forest"),
274
+ color: "#162103"
275
+ }, {
276
+ id: 2,
277
+ name: i18n.t("Evergreen Broadleaf forest"),
278
+ color: "#235123"
279
+ }, {
280
+ id: 3,
281
+ name: i18n.t("Deciduous Needleleaf forest"),
282
+ color: "#399b38"
283
+ }, {
284
+ id: 4,
285
+ name: i18n.t("Deciduous Broadleaf forest"),
286
+ color: "#38eb38"
287
+ }, {
288
+ id: 5,
289
+ name: i18n.t("Mixed forest"),
290
+ color: "#39723b"
291
+ }, {
292
+ id: 6,
293
+ name: i18n.t("Closed shrublands"),
294
+ color: "#6a2424"
295
+ }, {
296
+ id: 7,
297
+ name: i18n.t("Open shrublands"),
298
+ color: "#c3a55f"
299
+ }, {
300
+ id: 8,
301
+ name: i18n.t("Woody savannas"),
302
+ color: "#b76124"
303
+ }, {
304
+ id: 9,
305
+ name: i18n.t("Savannas"),
306
+ color: "#d99125"
307
+ }, {
308
+ id: 10,
309
+ name: i18n.t("Grasslands"),
310
+ color: "#92af1f"
311
+ }, {
312
+ id: 11,
313
+ name: i18n.t("Permanent wetlands"),
314
+ color: "#10104c"
315
+ }, {
316
+ id: 12,
317
+ name: i18n.t("Croplands"),
318
+ color: "#cdb400"
319
+ }, {
320
+ id: 13,
321
+ name: i18n.t("Urban and built-up"),
322
+ color: "#cc0202"
323
+ }, {
324
+ id: 14,
325
+ name: i18n.t("Cropland/Natural vegetation mosaic"),
326
+ color: "#332808"
327
+ }, {
328
+ id: 15,
329
+ name: i18n.t("Snow and ice"),
330
+ color: "#d7cdcc"
331
+ }, {
332
+ id: 16,
333
+ name: i18n.t("Barren or sparsely vegetated"),
334
+ color: "#f7e174"
335
+ }, {
336
+ id: 17,
337
+ name: i18n.t("Water"),
338
+ color: "#aec3d6"
339
+ }]
340
+ },
341
+ mask: false,
342
+ img: "images/landcover.png",
343
+ opacity: 0.9
344
+ }, {
345
+ layer: EARTH_ENGINE_LAYER,
346
+ id: "nightLights",
347
+ type: "ImageCollection",
348
+ tokenType: "Bearer",
349
+ legacy: true,
350
+ // Kept for backward compability
351
+ datasetId: "NOAA/DMSP-OLS/NIGHTTIME_LIGHTS",
352
+ name: i18n.t("Nighttime lights"),
353
+ unit: i18n.t("light intensity"),
354
+ description: i18n.t("Light intensity from cities, towns, and other sites with persistent lighting, including gas flares."),
355
+ source: "NOAA / Google Earth Engine",
356
+ sourceUrl: "https://explorer.earthengine.google.com/#detail/NOAA%2FDMSP-OLS%2FNIGHTTIME_LIGHTS",
357
+ periodType: "Yearly",
358
+ selectedBands: ["stable_lights"],
359
+ mask: true,
360
+ img: "images/nighttime.png",
361
+ params: {
362
+ min: 0,
363
+ max: 63,
364
+ palette: "#ffffd4,#fee391,#fec44f,#fe9929,#ec7014,#cc4c02,#8c2d04" // YlOrBr
365
+ },
366
+
367
+ opacity: 0.9
368
+ }];
369
+ export const SUPPORTED_EARTH_ENGINE_LAYERS = ["population", "landCover", "footprints"];
@@ -0,0 +1,29 @@
1
+ import { useDataEngine } from "@dhis2/app-runtime";
2
+ import { find } from "lodash";
3
+ import { useMapLayers } from "../../../../MapProvider/hooks";
4
+ import { useState } from "react";
5
+ const googleEngineKeyQuery = {
6
+ token: {
7
+ resource: "tokens/google"
8
+ }
9
+ };
10
+ export function useGoogleEngineToken() {
11
+ const engine = useDataEngine();
12
+ const [loading, setLoading] = useState(false);
13
+ const getToken = async () => {
14
+ setLoading(true);
15
+ const token = await engine.query(googleEngineKeyQuery);
16
+ setLoading(false);
17
+ return token;
18
+ };
19
+ return {
20
+ refresh: getToken,
21
+ loading
22
+ };
23
+ }
24
+ export default function useGoogleEngineLayer(layerId) {
25
+ const {
26
+ layers
27
+ } = useMapLayers();
28
+ return find(layers, ["id", layerId]);
29
+ }
@@ -0,0 +1,191 @@
1
+ import { capitalize, find, head, isEmpty, sortBy } from "lodash";
2
+ import React, { useMemo, useRef } from "react";
3
+ import { GeoJSON, LayerGroup, LayersControl, Popup, TileLayer, Tooltip } from "react-leaflet";
4
+ import { useBoundaryData } from "../BoundaryLayer/hooks/useBoundaryData";
5
+ import useGoogleEngineLayer from "./hooks";
6
+ import { highlightFeature, resetHighlight } from "../../../../utils/map";
7
+ import { defaultStyle, highlightStyle } from "../BoundaryLayer";
8
+ import { useQuery } from "react-query";
9
+ import { CenteredContent, CircularLoader, Divider } from "@dhis2/ui";
10
+ import i18n from "@dhis2/d2-i18n";
11
+ function formatValues(value) {
12
+ return Intl.NumberFormat("en-GB", {
13
+ maximumFractionDigits: 2
14
+ }).format(value);
15
+ }
16
+ function getUnit(unit) {
17
+ if (unit === "percentage") {
18
+ return "%";
19
+ }
20
+ }
21
+ function Legend(_ref) {
22
+ let {
23
+ header,
24
+ legends,
25
+ value,
26
+ unit
27
+ } = _ref;
28
+ const legend = find(legends, ["id", header]);
29
+ return /*#__PURE__*/React.createElement("div", {
30
+ className: "row gap-8 space-between"
31
+ }, /*#__PURE__*/React.createElement("div", {
32
+ className: "row gap-8"
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: "legend-item-color",
35
+ style: {
36
+ backgroundColor: legend === null || legend === void 0 ? void 0 : legend.color
37
+ }
38
+ }), /*#__PURE__*/React.createElement("div", null, legend === null || legend === void 0 ? void 0 : legend.name)), /*#__PURE__*/React.createElement("span", null, formatValues(value), getUnit(unit)));
39
+ }
40
+ function AggregationView(_ref2) {
41
+ let {
42
+ header,
43
+ value
44
+ } = _ref2;
45
+ return /*#__PURE__*/React.createElement("div", {
46
+ className: "row space-between"
47
+ }, /*#__PURE__*/React.createElement("span", null, capitalize(header.toString())), /*#__PURE__*/React.createElement("span", null, formatValues(value)));
48
+ }
49
+ function EarthEnginePopup(_ref3) {
50
+ var _layer$engine, _layer$engine$options, _layer$engine$options2, _engine$getAggregatio, _layer$engine$options3, _layer$engine2, _layer$engine2$option, _layer$engine3, _layer$options3, _layer$options$unit, _layer$options4, _Object$keys;
51
+ let {
52
+ layer,
53
+ orgUnit,
54
+ loading,
55
+ error
56
+ } = _ref3;
57
+ const engine = layer === null || layer === void 0 ? void 0 : layer.engine;
58
+ const legends = layer === null || layer === void 0 ? void 0 : (_layer$engine = layer.engine) === null || _layer$engine === void 0 ? void 0 : (_layer$engine$options = _layer$engine.options) === null || _layer$engine$options === void 0 ? void 0 : (_layer$engine$options2 = _layer$engine$options.legend) === null || _layer$engine$options2 === void 0 ? void 0 : _layer$engine$options2.items;
59
+ const data = engine === null || engine === void 0 ? void 0 : (_engine$getAggregatio = engine.getAggregation(orgUnit)) === null || _engine$getAggregatio === void 0 ? void 0 : _engine$getAggregatio.data;
60
+ const unit = (_layer$engine$options3 = layer === null || layer === void 0 ? void 0 : (_layer$engine2 = layer.engine) === null || _layer$engine2 === void 0 ? void 0 : (_layer$engine2$option = _layer$engine2.options) === null || _layer$engine2$option === void 0 ? void 0 : _layer$engine2$option.unit) !== null && _layer$engine$options3 !== void 0 ? _layer$engine$options3 : head(layer === null || layer === void 0 ? void 0 : (_layer$engine3 = layer.engine) === null || _layer$engine3 === void 0 ? void 0 : _layer$engine3.options.aggregations);
61
+ const aggregations = useMemo(() => {
62
+ if (!isEmpty(legends)) {
63
+ return sortBy(Object.keys(data !== null && data !== void 0 ? data : {}).map(key => {
64
+ return {
65
+ id: parseInt(key),
66
+ value: data[key]
67
+ };
68
+ }), ["value"]).reverse();
69
+ }
70
+ return data !== null && data !== void 0 ? data : {};
71
+ }, [data]);
72
+ if (loading) {
73
+ return /*#__PURE__*/React.createElement("div", {
74
+ style: {
75
+ width: 200,
76
+ height: 200
77
+ }
78
+ }, /*#__PURE__*/React.createElement(CenteredContent, null, /*#__PURE__*/React.createElement(CircularLoader, {
79
+ extrasmall: true
80
+ })));
81
+ }
82
+ if (error) {
83
+ var _layer$options, _layer$options2;
84
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h3", {
85
+ style: {
86
+ margin: "0"
87
+ }
88
+ }, orgUnit.name), /*#__PURE__*/React.createElement(Divider, {
89
+ margin: "0"
90
+ }), /*#__PURE__*/React.createElement("div", {
91
+ className: "column gap-8"
92
+ }, /*#__PURE__*/React.createElement("div", {
93
+ className: "column"
94
+ }, /*#__PURE__*/React.createElement("b", null, layer === null || layer === void 0 ? void 0 : (_layer$options = layer.options) === null || _layer$options === void 0 ? void 0 : _layer$options.name), /*#__PURE__*/React.createElement("div", null, layer === null || layer === void 0 ? void 0 : (_layer$options2 = layer.options) === null || _layer$options2 === void 0 ? void 0 : _layer$options2.unit)), /*#__PURE__*/React.createElement("div", {
95
+ className: "column"
96
+ }, /*#__PURE__*/React.createElement("p", null, i18n.t("Could not get aggregate data")), /*#__PURE__*/React.createElement("p", null, error))));
97
+ }
98
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("h3", {
99
+ style: {
100
+ margin: "0"
101
+ }
102
+ }, orgUnit.name), /*#__PURE__*/React.createElement(Divider, {
103
+ margin: "0"
104
+ }), /*#__PURE__*/React.createElement("div", {
105
+ className: "column gap-8"
106
+ }, /*#__PURE__*/React.createElement("div", {
107
+ className: "column"
108
+ }, /*#__PURE__*/React.createElement("b", null, layer === null || layer === void 0 ? void 0 : (_layer$options3 = layer.options) === null || _layer$options3 === void 0 ? void 0 : _layer$options3.name), /*#__PURE__*/React.createElement("div", null, (_layer$options$unit = layer === null || layer === void 0 ? void 0 : (_layer$options4 = layer.options) === null || _layer$options4 === void 0 ? void 0 : _layer$options4.unit) !== null && _layer$options$unit !== void 0 ? _layer$options$unit : unit)), data && /*#__PURE__*/React.createElement("div", {
109
+ className: "column"
110
+ }, Array.isArray(aggregations) ? aggregations === null || aggregations === void 0 ? void 0 : aggregations.map(_ref4 => {
111
+ let {
112
+ id,
113
+ value
114
+ } = _ref4;
115
+ return /*#__PURE__*/React.createElement(Legend, {
116
+ key: `${orgUnit.id}-legend-details-${id}`,
117
+ legends: legends !== null && legends !== void 0 ? legends : [],
118
+ value: value,
119
+ header: id,
120
+ unit: unit
121
+ });
122
+ }) : (_Object$keys = Object.keys(aggregations)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.map(key => /*#__PURE__*/React.createElement(AggregationView, {
123
+ key: `${orgUnit.id}-aggregate-details-${key}`,
124
+ header: key,
125
+ value: aggregations[key]
126
+ })))));
127
+ }
128
+ function EarthEngineArea(_ref5) {
129
+ let {
130
+ area,
131
+ layer,
132
+ loading,
133
+ error
134
+ } = _ref5;
135
+ const ref = useRef();
136
+ return /*#__PURE__*/React.createElement(GeoJSON, {
137
+ ref: ref,
138
+ data: area.geoJSON,
139
+ interactive: true,
140
+ eventHandlers: {
141
+ mouseover: e => highlightFeature(e, highlightStyle),
142
+ mouseout: e => resetHighlight(e, defaultStyle)
143
+ },
144
+ key: `${area.id}-polygon`,
145
+ pathOptions: defaultStyle
146
+ }, /*#__PURE__*/React.createElement(Tooltip, null, area.name), /*#__PURE__*/React.createElement(Popup, {
147
+ minWidth: 100
148
+ }, /*#__PURE__*/React.createElement(EarthEnginePopup, {
149
+ error: error,
150
+ layer: layer,
151
+ orgUnit: area,
152
+ loading: loading
153
+ })));
154
+ }
155
+ export default function GoogleEngineLayer(_ref6) {
156
+ let {
157
+ layerId
158
+ } = _ref6;
159
+ const layer = useGoogleEngineLayer(layerId);
160
+ const {
161
+ name,
162
+ type,
163
+ enabled,
164
+ url,
165
+ options,
166
+ engine
167
+ } = layer !== null && layer !== void 0 ? layer : {};
168
+ const {
169
+ isLoading: loadingAggregateData,
170
+ error
171
+ } = useQuery([engine], async () => engine === null || engine === void 0 ? void 0 : engine.getAggregations(), {
172
+ suspense: false
173
+ });
174
+ const orgUnits = useBoundaryData();
175
+ if (!url) return null;
176
+ return /*#__PURE__*/React.createElement(LayersControl.Overlay, {
177
+ checked: enabled,
178
+ name: name !== null && name !== void 0 ? name : capitalize(type)
179
+ }, /*#__PURE__*/React.createElement(LayerGroup, null, /*#__PURE__*/React.createElement(TileLayer, {
180
+ id: options === null || options === void 0 ? void 0 : options.id,
181
+ url: url
182
+ }), orgUnits === null || orgUnits === void 0 ? void 0 : orgUnits.map(area => {
183
+ return /*#__PURE__*/React.createElement(EarthEngineArea, {
184
+ error: error === null || error === void 0 ? void 0 : error.toString(),
185
+ loading: loadingAggregateData,
186
+ key: `${area.id}-polygon`,
187
+ area: area,
188
+ layer: layer
189
+ });
190
+ })));
191
+ }