@hisptz/dhis2-analytics 1.0.5 → 1.0.6

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 (293) 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 +10 -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/index.test.js +7 -0
  102. package/build/cjs/locales/en/translations.json +128 -0
  103. package/build/cjs/locales/index.js +22 -0
  104. package/build/es/components/ChartAnalytics/ChartAnalytics.stories.js +235 -0
  105. package/build/es/components/ChartAnalytics/ChartAnalytics.test.js +46 -0
  106. package/build/es/components/ChartAnalytics/components/DownloadMenu/components/Menu.js +41 -0
  107. package/build/es/components/ChartAnalytics/components/DownloadMenu/constants/menu.js +26 -0
  108. package/build/es/components/ChartAnalytics/components/DownloadMenu/index.js +58 -0
  109. package/build/es/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.js +1 -0
  110. package/build/es/components/ChartAnalytics/data/column-data.json +210 -0
  111. package/build/es/components/ChartAnalytics/data/complex-multi-series-data.json +124 -0
  112. package/build/es/components/ChartAnalytics/data/multi-series-data.json +536 -0
  113. package/build/es/components/ChartAnalytics/data/pie-data.json +115 -0
  114. package/build/es/components/ChartAnalytics/data/stacked-chart-data.json +415 -0
  115. package/build/es/components/ChartAnalytics/hooks/useChart.js +32 -0
  116. package/build/es/components/ChartAnalytics/index.js +40 -0
  117. package/build/es/components/ChartAnalytics/models/column.js +45 -0
  118. package/build/es/components/ChartAnalytics/models/index.js +95 -0
  119. package/build/es/components/ChartAnalytics/models/line.js +28 -0
  120. package/build/es/components/ChartAnalytics/models/multi-series.js +104 -0
  121. package/build/es/components/ChartAnalytics/models/pie.js +46 -0
  122. package/build/es/components/ChartAnalytics/services/export.js +36 -0
  123. package/build/es/components/ChartAnalytics/styles/custom-highchart.css +48 -0
  124. package/build/es/components/ChartAnalytics/types/props.js +1 -0
  125. package/build/es/components/ChartAnalytics/utils/chart.js +122 -0
  126. package/{src/components/CircularProgressDashboard/CircularProgressIndicator.stories.tsx → build/es/components/CircularProgressDashboard/CircularProgressIndicator.stories.js} +9 -16
  127. package/build/es/components/CircularProgressDashboard/CircularProgressIndicator.test.js +10 -0
  128. package/build/es/components/CircularProgressDashboard/index.js +41 -0
  129. package/build/es/components/CircularProgressDashboard/types/props.js +1 -0
  130. package/build/es/components/Map/Map.stories.js +334 -0
  131. package/build/es/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.js +23 -0
  132. package/build/es/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.js +31 -0
  133. package/build/es/components/Map/components/EarthEngineLayerConfiguration/index.js +448 -0
  134. package/build/es/components/Map/components/MapArea/index.js +91 -0
  135. package/build/es/components/Map/components/MapArea/interfaces/index.js +1 -0
  136. package/build/es/components/Map/components/MapControls/components/CustomControl/index.js +25 -0
  137. package/build/es/components/Map/components/MapControls/components/DownloadControl/index.js +18 -0
  138. package/build/es/components/Map/components/MapControls/components/FullscreenControl/index.js +6 -0
  139. package/build/es/components/Map/components/MapControls/index.js +35 -0
  140. package/build/es/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.js +7 -0
  141. package/build/es/components/Map/components/MapLayer/components/BoundaryLayer/index.js +41 -0
  142. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js +95 -0
  143. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.js +369 -0
  144. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.js +29 -0
  145. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js +191 -0
  146. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.js +1 -0
  147. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +10 -0
  148. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.js +403 -0
  149. package/build/es/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.js +111 -0
  150. package/build/es/components/Map/components/MapLayer/components/LegendArea/LegendArea.module.css +12 -0
  151. package/build/es/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +19 -0
  152. package/build/es/components/Map/components/MapLayer/components/LegendArea/index.js +172 -0
  153. package/build/es/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +76 -0
  154. package/build/es/components/Map/components/MapLayer/components/PointLayer/hooks/index.js +8 -0
  155. package/build/es/components/Map/components/MapLayer/components/PointLayer/index.js +39 -0
  156. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.js +49 -0
  157. 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
  158. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js +33 -0
  159. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +47 -0
  160. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +50 -0
  161. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +36 -0
  162. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +28 -0
  163. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.js +9 -0
  164. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/index.js +50 -0
  165. package/build/es/components/Map/components/MapLayer/components/ThematicLayer/styles/legends.css +62 -0
  166. package/build/es/components/Map/components/MapLayer/index.js +33 -0
  167. package/build/es/components/Map/components/MapLayer/interfaces/index.js +1 -0
  168. package/build/es/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +381 -0
  169. package/build/es/components/Map/components/MapProvider/components/MapLayerProvider/index.js +107 -0
  170. package/{src/components/Map/components/MapProvider/hooks/index.ts → build/es/components/Map/components/MapProvider/hooks/index.js} +3 -6
  171. package/build/es/components/Map/components/MapProvider/index.js +112 -0
  172. package/build/es/components/Map/components/MapUpdater/index.js +17 -0
  173. package/build/es/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.js +23 -0
  174. package/build/es/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.js +31 -0
  175. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.js +33 -0
  176. package/{src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.ts → build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/constants/colors.js} +46 -59
  177. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js +53 -0
  178. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScale.module.css +15 -0
  179. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/styles/ColorScaleSelect.module.css +12 -0
  180. package/build/es/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.js +56 -0
  181. package/build/es/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.js +64 -0
  182. package/build/es/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js +38 -0
  183. package/build/es/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js +70 -0
  184. package/build/es/components/Map/components/ThematicLayerConfiguration/index.js +254 -0
  185. package/{src/components/Map/constants/colors.ts → build/es/components/Map/constants/colors.js} +46 -59
  186. package/build/es/components/Map/constants/legendSet.js +15 -0
  187. package/build/es/components/Map/hooks/map.js +44 -0
  188. package/build/es/components/Map/index.js +51 -0
  189. package/build/es/components/Map/interfaces/index.js +1 -0
  190. package/build/es/components/Map/state/index.js +14 -0
  191. package/build/es/components/Map/utils/colors.js +61 -0
  192. package/build/es/components/Map/utils/helpers.js +14 -0
  193. package/build/es/components/Map/utils/map.js +147 -0
  194. package/build/es/components/SingleValueContainer/SingleValueContainer.stories.js +115 -0
  195. package/build/es/components/SingleValueContainer/SingleValueContainer.test.js +20 -0
  196. package/build/es/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js +47 -0
  197. package/build/es/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js +17 -0
  198. package/build/es/components/SingleValueContainer/index.js +29 -0
  199. package/build/es/components/SingleValueContainer/styles/SingleValueContainer.module.css +39 -0
  200. package/build/es/components/SingleValueContainer/types/props.js +1 -0
  201. package/build/es/data/map.json +5984 -0
  202. package/build/es/dataProviders/map.js +24 -0
  203. package/{src/index.ts → build/es/index.js} +1 -0
  204. package/build/es/index.test.js +6 -0
  205. package/build/es/locales/en/translations.json +128 -0
  206. package/build/es/locales/index.js +13 -0
  207. package/package.json +21 -4
  208. package/d2.config.js +0 -8
  209. package/i18n/en.pot +0 -409
  210. package/src/components/ChartAnalytics/ChartAnalytics.stories.tsx +0 -250
  211. package/src/components/ChartAnalytics/ChartAnalytics.test.tsx +0 -51
  212. package/src/components/ChartAnalytics/components/DownloadMenu/components/Menu.tsx +0 -48
  213. package/src/components/ChartAnalytics/components/DownloadMenu/constants/menu.ts +0 -38
  214. package/src/components/ChartAnalytics/components/DownloadMenu/index.tsx +0 -67
  215. package/src/components/ChartAnalytics/components/DownloadMenu/interfaces/menu.ts +0 -1
  216. package/src/components/ChartAnalytics/hooks/useChart.ts +0 -35
  217. package/src/components/ChartAnalytics/index.tsx +0 -23
  218. package/src/components/ChartAnalytics/models/column.ts +0 -50
  219. package/src/components/ChartAnalytics/models/index.ts +0 -78
  220. package/src/components/ChartAnalytics/models/line.ts +0 -31
  221. package/src/components/ChartAnalytics/models/multi-series.ts +0 -115
  222. package/src/components/ChartAnalytics/models/pie.ts +0 -54
  223. package/src/components/ChartAnalytics/services/export.ts +0 -38
  224. package/src/components/ChartAnalytics/types/props.tsx +0 -48
  225. package/src/components/ChartAnalytics/utils/chart.ts +0 -123
  226. package/src/components/CircularProgressDashboard/CircularProgressIndicator.test.tsx +0 -9
  227. package/src/components/CircularProgressDashboard/index.tsx +0 -35
  228. package/src/components/CircularProgressDashboard/types/props.tsx +0 -17
  229. package/src/components/Map/Map.stories.tsx +0 -339
  230. package/src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfigModal.stories.tsx +0 -28
  231. package/src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.stories.tsx +0 -34
  232. package/src/components/Map/components/EarthEngineLayerConfiguration/index.tsx +0 -412
  233. package/src/components/Map/components/MapArea/index.tsx +0 -83
  234. package/src/components/Map/components/MapArea/interfaces/index.ts +0 -39
  235. package/src/components/Map/components/MapControls/components/CustomControl/index.tsx +0 -24
  236. package/src/components/Map/components/MapControls/components/DownloadControl/index.tsx +0 -10
  237. package/src/components/Map/components/MapControls/components/FullscreenControl/index.tsx +0 -7
  238. package/src/components/Map/components/MapControls/index.tsx +0 -24
  239. package/src/components/Map/components/MapLayer/components/BoundaryLayer/hooks/useBoundaryData.ts +0 -7
  240. package/src/components/Map/components/MapLayer/components/BoundaryLayer/index.tsx +0 -55
  241. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.tsx +0 -76
  242. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/constants/index.ts +0 -430
  243. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/hooks/index.ts +0 -34
  244. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx +0 -185
  245. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/interfaces/index.ts +0 -56
  246. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/api.js +0 -34233
  247. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/services/engine.ts +0 -431
  248. package/src/components/Map/components/MapLayer/components/GoogleEngineLayer/utils/index.ts +0 -105
  249. package/src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx +0 -17
  250. package/src/components/Map/components/MapLayer/components/LegendArea/index.tsx +0 -168
  251. package/src/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.tsx +0 -44
  252. package/src/components/Map/components/MapLayer/components/PointLayer/hooks/index.ts +0 -8
  253. package/src/components/Map/components/MapLayer/components/PointLayer/index.tsx +0 -36
  254. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubble.tsx +0 -48
  255. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.tsx +0 -39
  256. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.tsx +0 -57
  257. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.tsx +0 -43
  258. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.tsx +0 -38
  259. package/src/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.tsx +0 -26
  260. package/src/components/Map/components/MapLayer/components/ThematicLayer/hooks/config.ts +0 -10
  261. package/src/components/Map/components/MapLayer/components/ThematicLayer/index.tsx +0 -46
  262. package/src/components/Map/components/MapLayer/index.tsx +0 -32
  263. package/src/components/Map/components/MapLayer/interfaces/index.ts +0 -139
  264. package/src/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.tsx +0 -359
  265. package/src/components/Map/components/MapProvider/components/MapLayerProvider/index.tsx +0 -105
  266. package/src/components/Map/components/MapProvider/index.tsx +0 -93
  267. package/src/components/Map/components/MapUpdater/index.tsx +0 -8
  268. package/src/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfigModal.stories.tsx +0 -28
  269. package/src/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.stories.tsx +0 -34
  270. package/src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/components/ColorScale/index.tsx +0 -24
  271. package/src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.tsx +0 -50
  272. package/src/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/utils/colors.ts +0 -91
  273. package/src/components/Map/components/ThematicLayerConfiguration/components/CustomLegend/index.tsx +0 -45
  274. package/src/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.tsx +0 -47
  275. package/src/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.tsx +0 -57
  276. package/src/components/Map/components/ThematicLayerConfiguration/index.tsx +0 -248
  277. package/src/components/Map/constants/legendSet.ts +0 -19
  278. package/src/components/Map/hooks/map.ts +0 -47
  279. package/src/components/Map/index.tsx +0 -65
  280. package/src/components/Map/interfaces/index.ts +0 -57
  281. package/src/components/Map/state/index.tsx +0 -31
  282. package/src/components/Map/utils/colors.ts +0 -95
  283. package/src/components/Map/utils/helpers.ts +0 -15
  284. package/src/components/Map/utils/map.ts +0 -150
  285. package/src/components/SingleValueContainer/SingleValueContainer.stories.tsx +0 -146
  286. package/src/components/SingleValueContainer/SingleValueContainer.test.tsx +0 -24
  287. package/src/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.tsx +0 -46
  288. package/src/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.tsx +0 -12
  289. package/src/components/SingleValueContainer/index.tsx +0 -30
  290. package/src/components/SingleValueContainer/types/props.tsx +0 -16
  291. package/src/dataProviders/map.tsx +0 -24
  292. package/src/index.test.ts +0 -7
  293. package/tsconfig.json +0 -45
@@ -1,28 +0,0 @@
1
- import {Story} from "@storybook/react";
2
- import {ThematicLayerConfigModal, ThematicLayerConfigModalProps} from "./index";
3
- import React from "react";
4
-
5
- const Template: Story<ThematicLayerConfigModalProps> = (args) => {
6
- return <ThematicLayerConfigModal {...args} />;
7
- };
8
-
9
- export const Basic = Template.bind({});
10
- Basic.args = {
11
- onChange: console.info,
12
- onClose: () => {},
13
- open: true,
14
- };
15
-
16
- export default {
17
- title: "Components/Map/Thematic Layer Config Modal",
18
- component: ThematicLayerConfigModal,
19
- decorators: [
20
- (MapStory: any) => {
21
- return (
22
- <div style={{ width: "50%", height: "50%" }}>
23
- <MapStory />
24
- </div>
25
- );
26
- },
27
- ],
28
- };
@@ -1,34 +0,0 @@
1
- import {Story} from "@storybook/react";
2
- import {ThematicLayerConfiguration, ThematicLayerConfigurationProps} from "./index";
3
- import React from "react";
4
- import {useForm} from "react-hook-form";
5
- import {ThematicLayerConfig} from "../MapLayer/interfaces";
6
- import i18n from "@dhis2/d2-i18n";
7
- import {Button} from "@dhis2/ui";
8
-
9
- const Template: Story<ThematicLayerConfigurationProps> = (args) => {
10
- const form = useForm<ThematicLayerConfig>();
11
- return (
12
- <form className="column gap-16" onSubmit={form.handleSubmit(console.log)}>
13
- <ThematicLayerConfiguration {...args} form={form} />
14
- <Button type="submit">{i18n.t("Submit")}</Button>
15
- </form>
16
- );
17
- };
18
-
19
- export const Basic = Template.bind({});
20
- Basic.args = {};
21
-
22
- export default {
23
- title: "Components/Map/Thematic Layer Configuration",
24
- component: ThematicLayerConfiguration,
25
- decorators: [
26
- (MapStory: any) => {
27
- return (
28
- <div style={{ width: "50%", height: "50%" }}>
29
- <MapStory />
30
- </div>
31
- );
32
- },
33
- ],
34
- };
@@ -1,24 +0,0 @@
1
- import React from "react";
2
- import styles from "../../styles/ColorScale.module.css";
3
- import {COLOR_PALETTES} from "../../constants/colors";
4
-
5
- // Returns one color scale based on a code and number of classes
6
- const ColorScale = ({ scale, bins, width, onClick }: { scale: string; bins: number; width: number; onClick: (scale: string) => void }) => {
7
- const colors = (COLOR_PALETTES as any)?.[scale]?.[bins];
8
- const itemWidth = width ? width / bins : 36;
9
-
10
- return (
11
- <ul
12
- onClick={() => onClick(scale)}
13
- className={styles.colorScale}
14
- style={{
15
- ...(width && { width }),
16
- }}>
17
- {colors.map((color: string, index: number) => (
18
- <li key={index} className={styles.item} style={{ backgroundColor: color, width: itemWidth }} />
19
- ))}
20
- </ul>
21
- );
22
- };
23
-
24
- export default ColorScale;
@@ -1,50 +0,0 @@
1
- import React, {Fragment, useRef, useState} from "react";
2
- import {Popover} from "@dhis2/ui";
3
- import cx from "classnames";
4
- import ColorScale from "./components/ColorScale";
5
- import styles from "./styles/ColorScaleSelect.module.css";
6
- import {colorScales, defaultColorScale, defaultColorScaleName, getColorPalette, getColorScale} from "./utils/colors";
7
-
8
- const ColorScaleSelect = ({
9
- colorClass,
10
- count,
11
- width,
12
- onChange,
13
- className,
14
- }: {
15
- className?: string;
16
- count: number;
17
- width: number;
18
- onChange: (palette: string) => void;
19
- colorClass: string;
20
- }) => {
21
- const [isOpen, setIsOpen] = useState(false);
22
- const anchorRef = useRef<HTMLDivElement>(null);
23
- const palette = getColorPalette(colorClass, count);
24
- const bins = palette.split(",").length;
25
- const scale = getColorScale(palette) ?? defaultColorScale;
26
-
27
- const onColorScaleSelect = (scale: string) => {
28
- onChange(scale);
29
- setIsOpen(false);
30
- };
31
-
32
- return (
33
- <Fragment>
34
- <div ref={anchorRef} className={cx(styles.colorScale, className)}>
35
- <ColorScale bins={bins} scale={scale ?? defaultColorScaleName} onClick={() => setIsOpen(true)} width={width || 260} />
36
- </div>
37
- {isOpen && (
38
- <Popover reference={anchorRef} arrow={false} placement="right" onClickOutside={() => setIsOpen(false)}>
39
- <div className={styles.popover} style={{ width: width + 24 || 260, height: "100%", overflow: "auto" }}>
40
- {colorScales.map((scale, index) => (
41
- <ColorScale key={index} scale={scale} bins={bins} onClick={onColorScaleSelect} width={width || 260} />
42
- ))}
43
- </div>
44
- </Popover>
45
- )}
46
- </Fragment>
47
- );
48
- };
49
-
50
- export default ColorScaleSelect;
@@ -1,91 +0,0 @@
1
- import {hcl} from "d3-color";
2
- import {isString} from "lodash";
3
- import {COLOR_PALETTES} from "../constants/colors";
4
-
5
- const colorbrewer: Record<string, any> = COLOR_PALETTES;
6
-
7
- // Returns a color brewer scale for a number of classes
8
- export const getColorPalette = (scale: string, classes: number) => {
9
- return colorbrewer[scale][classes].join(",");
10
- };
11
-
12
- // Returns color scale name for a palette
13
- export const getColorScale = (palette: string) => {
14
- const classes = palette.split(",").length;
15
- return colorScales.find((name) => colorbrewer[name]?.[classes]?.join(",") === palette);
16
- };
17
-
18
- export const defaultColorScaleName = "YlOrBr";
19
- export const defaultClasses = 5;
20
- export const defaultColorScale = getColorPalette(defaultColorScaleName, defaultClasses);
21
-
22
- // Correct colors not adhering to the css standard (add missing #)
23
- export const cssColor = (color: any) => {
24
- if (!isString(color)) {
25
- return color;
26
- } else if (color === "##normal") {
27
- // ##normal is used in old map favorites
28
- return null; // Will apply default color
29
- }
30
- return (/(^[0-9A-F]{6}$)|(^[0-9A-F]{3}$)/i.test(color) ? "#" : "") + color;
31
- };
32
-
33
- // Returns an unique color (first from an array, then random but still unique)
34
- export const getUniqueColor = (defaultColors: any) => {
35
- const colors = [...defaultColors];
36
-
37
- function randomColor(): string {
38
- const color = "#000000".replace(/0/g, () => (~~(Math.random() * 16)).toString(16));
39
-
40
- // Recursive until color is unique
41
- if (colors.includes(color)) {
42
- return randomColor();
43
- }
44
-
45
- colors.push(color);
46
-
47
- return color;
48
- }
49
-
50
- return (index: number) => colors[index] || randomColor();
51
- };
52
-
53
- // Returns true if a color is dark
54
- export const isDarkColor = (color: string) => hcl(color).l < 70;
55
-
56
- // Returns constrasting color
57
- export const getContrastColor = (color: string) => (isDarkColor(color) ? "#fff" : "#000");
58
- export type LegendColorScale = typeof colorScales[number];
59
- export const colorScales = [
60
- "YlOrBr",
61
- "Reds",
62
- "YlGn",
63
- "Greens",
64
- "Blues",
65
- "BuPu",
66
- "RdPu",
67
- "PuRd",
68
- "Greys",
69
- "YlOrBr_reverse",
70
- "Reds_reverse",
71
- "YlGn_reverse",
72
- "Greens_reverse",
73
- "Blues_reverse",
74
- "BuPu_reverse",
75
- "RdPu_reverse",
76
- "PuRd_reverse",
77
- "Greys_reverse",
78
- "PuOr",
79
- "BrBG",
80
- "PRGn",
81
- "PiYG",
82
- "RdBu",
83
- "RdGy",
84
- "RdYlBu",
85
- "Spectral",
86
- "RdYlGn",
87
- "Paired",
88
- "Pastel1",
89
- "Set1",
90
- "Set3",
91
- ];
@@ -1,45 +0,0 @@
1
- import {Controller, useWatch} from "react-hook-form";
2
- import {Field, SingleSelectField, SingleSelectOption} from "@dhis2/ui";
3
- import {defaultClasses, defaultColorScaleName} from "../../../../utils/colors";
4
- import i18n from "@dhis2/d2-i18n";
5
- import ColorScaleSelect from "../ColorScaleSelect";
6
- import React from "react";
7
-
8
- export function CustomLegend() {
9
- const scale = useWatch({
10
- name: "dataItem.legendConfig.scale",
11
- });
12
-
13
- return (
14
- <div className="row gap-16 space-between">
15
- <div style={{ width: "30%" }}>
16
- <Controller
17
- name="dataItem.legendConfig.scale"
18
- render={({ field, fieldState }) => (
19
- <SingleSelectField
20
- validationText={fieldState.error?.message}
21
- error={Boolean(fieldState.error)}
22
- selected={field.value?.toString() ?? defaultClasses.toString()}
23
- label={i18n.t("Classes")}
24
- onChange={({ selected }: { selected: string }) => field.onChange(parseInt(selected))}
25
- name="scale">
26
- {[3, 4, 5, 6, 7, 8, 9].map((value) => (
27
- <SingleSelectOption key={`${value}-classes-option`} label={`${value}`} value={value?.toString()} />
28
- ))}
29
- </SingleSelectField>
30
- )}
31
- />
32
- </div>
33
- <div style={{ width: "70%" }}>
34
- <Controller
35
- name="dataItem.legendConfig.colorClass"
36
- render={({ field }) => (
37
- <Field label={i18n.t("Colors")}>
38
- <ColorScaleSelect count={scale ?? defaultClasses} colorClass={field.value ?? defaultColorScaleName} width={300} onChange={field.onChange} />
39
- </Field>
40
- )}
41
- />
42
- </div>
43
- </div>
44
- );
45
- }
@@ -1,47 +0,0 @@
1
- import i18n from "@dhis2/d2-i18n";
2
- import {Button, ButtonStrip, Modal, ModalActions, ModalContent, ModalTitle} from "@dhis2/ui";
3
- import React, {useCallback, useState} from "react";
4
- import {DataSourceSelector} from "@hisptz/dhis2-ui";
5
-
6
- export default function IndicatorSelectorModal({
7
- onUpdate,
8
- onClose,
9
- hide,
10
- selected,
11
- disabled,
12
- ...props
13
- }: {
14
- onUpdate: (data: any) => void;
15
- onClose: () => void;
16
- hide: boolean;
17
- selected: any;
18
- disabled?: string[];
19
- }) {
20
- const [selectedIndicators, setSelectedIndicators] = useState(selected);
21
-
22
- const onUpdateClick = useCallback(() => {
23
- onUpdate(selectedIndicators);
24
- onClose();
25
- }, [onUpdate, selectedIndicators]);
26
-
27
- const onSelect = useCallback((indicators: any) => {
28
- setSelectedIndicators(indicators);
29
- }, []);
30
-
31
- return (
32
- <Modal placement="middle" hide={hide} onClose={onClose}>
33
- <ModalTitle>{i18n.t("Select Data Item")}</ModalTitle>
34
- <ModalContent>
35
- <DataSourceSelector {...props} disabled={disabled} maxSelections={1} selected={selectedIndicators} onSelect={onSelect} />
36
- </ModalContent>
37
- <ModalActions>
38
- <ButtonStrip>
39
- <Button onClick={onClose}>{i18n.t("Cancel")}</Button>
40
- <Button primary onClick={onUpdateClick}>
41
- {i18n.t("Update")}
42
- </Button>
43
- </ButtonStrip>
44
- </ModalActions>
45
- </Modal>
46
- );
47
- }
@@ -1,57 +0,0 @@
1
- import {useDataQuery} from "@dhis2/app-runtime";
2
- import React, {useMemo} from "react";
3
- import {LegendSet} from "@hisptz/dhis2-utils";
4
- import {SingleSelectField, SingleSelectOption} from "@dhis2/ui";
5
- import i18n from "@dhis2/d2-i18n";
6
- import {isEmpty} from "lodash";
7
-
8
- const legendSetQuery = {
9
- legendSets: {
10
- resource: "legendSets",
11
- params: {
12
- fields: ["displayName", "id"],
13
- },
14
- },
15
- };
16
-
17
- export function LegendSetSelector({
18
- selected,
19
- onChange,
20
- error,
21
- required,
22
- ...props
23
- }: {
24
- selected?: string;
25
- onChange: (value: string) => void;
26
- error?: { message?: string };
27
- required?: boolean;
28
- }) {
29
- const { loading, data } = useDataQuery(legendSetQuery);
30
- const options = useMemo(() => {
31
- if (data) {
32
- return (data?.legendSets as { legendSets?: LegendSet[] })?.legendSets?.map(({ displayName, id }) => ({
33
- label: displayName,
34
- value: id,
35
- }));
36
- }
37
- return [];
38
- }, [data]);
39
-
40
- return (
41
- <SingleSelectField
42
- required={required}
43
- error={Boolean(error)}
44
- validationText={error?.message}
45
- {...props}
46
- label={i18n.t("Legend set")}
47
- filterable
48
- selected={!isEmpty(options) ? selected : undefined}
49
- loadingText={i18n.t("Please wait...")}
50
- onChange={({ selected }: { selected: string }) => onChange(selected)}
51
- loading={loading}>
52
- {options?.map(({ label, value }) => (
53
- <SingleSelectOption key={`${label}-legend-option`} label={label} value={value} />
54
- ))}
55
- </SingleSelectField>
56
- );
57
- }
@@ -1,248 +0,0 @@
1
- import i18n from "@dhis2/d2-i18n";
2
- import {
3
- Button,
4
- ButtonStrip,
5
- Field,
6
- InputField,
7
- Modal,
8
- ModalActions,
9
- ModalContent,
10
- ModalTitle,
11
- Radio,
12
- SingleSelectField,
13
- SingleSelectOption
14
- } from "@dhis2/ui";
15
- import {Controller, FormProvider, useForm, useFormContext, UseFormReturn, useWatch} from "react-hook-form";
16
- import React, {useMemo, useState} from "react";
17
- import {compact} from "lodash";
18
- import {defaultClasses, defaultColorScaleName} from "../../utils/colors";
19
- import {ThematicLayerConfig} from "../MapLayer/interfaces";
20
- import IndicatorSelectorModal from "./components/IndicatorSelectorModal";
21
- import {LegendSetSelector} from "./components/LegendSetSelector";
22
- import {CustomLegend} from "./components/CustomLegend";
23
-
24
- export interface ThematicLayerConfigurationProps {
25
- exclude?: string[];
26
- form: UseFormReturn<ThematicLayerConfig>;
27
- [key: string]: any;
28
- }
29
-
30
- export function RadiusField() {
31
- return (
32
- <div className="row gap-8">
33
- <Controller
34
- render={({ field, fieldState }) => (
35
- <InputField
36
- {...field}
37
- error={Boolean(fieldState.error)}
38
- validationText={fieldState.error?.message}
39
- value={field.value?.toString()}
40
- onChange={({ value }: { value: string }) => field.onChange(parseInt(value))}
41
- label={i18n.t("Min")}
42
- type="number"
43
- />
44
- )}
45
- name={"radius.min"}
46
- />
47
- <Controller
48
- render={({ field, fieldState }) => (
49
- <InputField
50
- value={field.value?.toString()}
51
- onChange={({ value }: { value: string }) => field.onChange(parseInt(value))}
52
- label={i18n.t("Max")}
53
- type="number"
54
- />
55
- )}
56
- name={"radius.max"}
57
- />
58
- </div>
59
- );
60
- }
61
-
62
- function TypeField() {
63
- const { setValue } = useFormContext();
64
- const resetFields = (type: string) => {
65
- if (type === "bubble") {
66
- setValue(`radius`, {
67
- min: 5,
68
- max: 30,
69
- });
70
- } else {
71
- setValue(`radius`, undefined);
72
- }
73
- };
74
-
75
- return (
76
- <Controller
77
- rules={{
78
- required: i18n.t("Layer type is required"),
79
- }}
80
- render={({ field, fieldState }) => {
81
- return (
82
- <SingleSelectField
83
- label={i18n.t("Layer type")}
84
- required
85
- error={Boolean(fieldState.error)}
86
- validationText={fieldState.error?.message}
87
- onChange={({ selected }: { selected: string }) => {
88
- resetFields(selected);
89
- field.onChange(selected);
90
- }}
91
- selected={field.value}>
92
- <SingleSelectOption value={"choropleth"} label={i18n.t("Choropleth")} />
93
- <SingleSelectOption value={"bubble"} label={i18n.t("Bubble")} />
94
- </SingleSelectField>
95
- );
96
- }}
97
- name={"type"}
98
- />
99
- );
100
- }
101
-
102
- export function ThematicLayerConfiguration({ exclude, form }: ThematicLayerConfigurationProps) {
103
- const [type, legendSet, dataItemId] = useWatch({
104
- control: form.control,
105
- name: ["type", "dataItem.legendSet", "dataItem.id"],
106
- });
107
- const [legendType, setLegendType] = useState(legendSet ? "legendSet" : "custom");
108
- const [dataSelectorOpen, setDataSelectorOpen] = useState(false);
109
-
110
- const onLegendTypeChange =
111
- (type: string) =>
112
- ({ value }: { value: string }) => {
113
- if (type === "custom") {
114
- form.setValue("dataItem.legendSet", undefined);
115
- form.setValue("dataItem.legendConfig.scale", defaultClasses);
116
- form.setValue("dataItem.legendConfig.colorClass", defaultColorScaleName);
117
- } else {
118
- form.setValue("dataItem.legendConfig", undefined);
119
- }
120
- setLegendType(value);
121
- };
122
- const disabled = useMemo(() => exclude?.filter((indicator) => indicator !== dataItemId) ?? [], [dataItemId, exclude]);
123
- return (
124
- <FormProvider {...form}>
125
- <div className="column gap-16">
126
- <TypeField />
127
- <Controller
128
- rules={{
129
- validate: {
130
- required: (value: { id: string; name: string }) => {
131
- return Boolean(value?.id) || i18n.t("A data item is required");
132
- },
133
- },
134
- }}
135
- render={({ field, fieldState }) => (
136
- <>
137
- <div style={{ alignItems: "flex-end" }} className="row w-100 gap-16 align-end">
138
- <div onClick={() => setDataSelectorOpen(true)} style={{ flex: 1 }}>
139
- <InputField
140
- required
141
- error={Boolean(fieldState.error)}
142
- validationText={fieldState.error?.message}
143
- disabled
144
- inputWidth="100%"
145
- label={i18n.t("Data Item")}
146
- value={field.value?.displayName}
147
- />
148
- </div>
149
- <Button onClick={() => setDataSelectorOpen(true)}>{field.value?.id ? i18n.t("Change") : i18n.t("Select")}</Button>
150
- </div>
151
- {dataSelectorOpen && (
152
- <IndicatorSelectorModal
153
- disabled={disabled}
154
- onUpdate={(values: any[]) => {
155
- const [indicator] = values ?? [];
156
- field.onChange({
157
- id: indicator.id,
158
- displayName: indicator.displayName,
159
- type: "indicator",
160
- });
161
- }}
162
- onClose={() => setDataSelectorOpen(false)}
163
- hide={!dataSelectorOpen}
164
- selected={compact([
165
- {
166
- id: field.value?.id,
167
- displayName: field.value?.displayName,
168
- },
169
- ])}
170
- />
171
- )}
172
- </>
173
- )}
174
- name={"dataItem"}
175
- />
176
- <div>
177
- <Field label={i18n.t("Legend")}>
178
- <div className="column gap-8">
179
- <div className="row gap-16">
180
- <Radio
181
- checked={legendType === "legendSet"}
182
- label={i18n.t("Legend set")}
183
- name="legendSet"
184
- value="legendSet"
185
- onChange={onLegendTypeChange("legendSet")}
186
- />
187
- <Radio checked={legendType === "custom"} label={i18n.t("Custom legend")} name="custom" value="custom" onChange={onLegendTypeChange("custom")} />
188
- </div>
189
- <div>
190
- {legendType === "legendSet" && (
191
- <Controller
192
- rules={{
193
- required: i18n.t("Legend set is required"),
194
- }}
195
- name="dataItem.legendSet"
196
- render={({ field, fieldState }) => <LegendSetSelector required selected={field.value} {...field} {...fieldState} />}
197
- />
198
- )}
199
- {legendType === "custom" && <CustomLegend />}
200
- </div>
201
- </div>
202
- </Field>
203
- {type === "bubble" && (
204
- <Field label={i18n.t("Radius")}>
205
- <RadiusField />
206
- </Field>
207
- )}
208
- </div>
209
- </div>
210
- </FormProvider>
211
- );
212
- }
213
-
214
- export interface ThematicLayerConfigModalProps {
215
- open: boolean;
216
- config?: ThematicLayerConfig;
217
- exclude?: string[];
218
- onClose: () => void;
219
- onChange: (config: ThematicLayerConfig) => void;
220
- }
221
-
222
- export function ThematicLayerConfigModal({ open, exclude, config, onClose, onChange, ...props }: ThematicLayerConfigModalProps) {
223
- const form = useForm<ThematicLayerConfig>({
224
- defaultValues: config,
225
- });
226
-
227
- const onSubmitClick = (values: ThematicLayerConfig) => {
228
- onChange(values);
229
- onClose();
230
- };
231
-
232
- return (
233
- <Modal {...props} open={open} onClose={onClose}>
234
- <ModalTitle>{i18n.t("Configure Thematic Layer")}</ModalTitle>
235
- <ModalContent>
236
- <ThematicLayerConfiguration form={form} exclude={exclude} />
237
- </ModalContent>
238
- <ModalActions>
239
- <ButtonStrip>
240
- <Button onClick={onClose}>{i18n.t("Cancel")}</Button>
241
- <Button primary onClick={form.handleSubmit(onSubmitClick)}>
242
- {i18n.t("Save")}
243
- </Button>
244
- </ButtonStrip>
245
- </ModalActions>
246
- </Modal>
247
- );
248
- }
@@ -1,19 +0,0 @@
1
- export const defaultLegendSet = {
2
- legends: [
3
- {
4
- startValue: 0,
5
- endValue: 33,
6
- color: "#ff0000",
7
- },
8
- {
9
- startValue: 33,
10
- endValue: 66,
11
- color: "#ffff27",
12
- },
13
- {
14
- startValue: 66,
15
- endValue: 100,
16
- color: "#00ff00",
17
- },
18
- ],
19
- };