@hisptz/dhis2-analytics 2.0.0 → 2.0.2

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 (99) hide show
  1. package/dist/components/Map/DHIS2Map.js +1 -0
  2. package/dist/components/Map/DHIS2Map.js.map +1 -1
  3. package/dist/components/Map/DHIS2Map.stories.js +35 -13
  4. package/dist/components/Map/DHIS2Map.stories.js.map +1 -1
  5. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +17 -7
  6. package/dist/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js.map +1 -1
  7. package/dist/components/Map/components/MapLayer/components/BoundaryLayer/index.js +8 -2
  8. package/dist/components/Map/components/MapLayer/components/BoundaryLayer/index.js.map +1 -1
  9. package/dist/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +16 -4
  10. package/dist/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js.map +1 -1
  11. package/dist/components/Map/components/MapLayer/components/LegendArea/index.js +18 -7
  12. package/dist/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
  13. package/dist/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +16 -3
  14. package/dist/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
  15. package/dist/components/Map/components/MapLayer/components/PointLayer/index.js +16 -1
  16. package/dist/components/Map/components/MapLayer/components/PointLayer/index.js.map +1 -1
  17. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +10 -2
  18. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
  19. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +1 -1
  20. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  21. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +10 -2
  22. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js.map +1 -1
  23. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +4 -2
  24. package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
  25. package/dist/components/Map/components/MapLayer/components/ThematicLayer/index.js +12 -1
  26. package/dist/components/Map/components/MapLayer/components/ThematicLayer/index.js.map +1 -1
  27. package/dist/components/Map/components/MapLayer/interfaces/index.js.map +1 -1
  28. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +0 -1
  29. package/dist/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
  30. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js +6 -3
  31. package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
  32. package/dist/components/Map/constants/colors.js +1613 -152
  33. package/dist/components/Map/constants/colors.js.map +1 -1
  34. package/dist/components/Map/utils/colors.js +1 -35
  35. package/dist/components/Map/utils/colors.js.map +1 -1
  36. package/dist/components/Visualization/components/AnalyticsDataProvider/index.js +0 -3
  37. package/dist/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
  38. package/dist/esm/components/Map/DHIS2Map.js +1 -0
  39. package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
  40. package/dist/esm/components/Map/DHIS2Map.stories.js +35 -13
  41. package/dist/esm/components/Map/DHIS2Map.stories.js.map +1 -1
  42. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js +17 -7
  43. package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.js.map +1 -1
  44. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/index.js +8 -2
  45. package/dist/esm/components/Map/components/MapLayer/components/BoundaryLayer/index.js.map +1 -1
  46. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js +16 -4
  47. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.js.map +1 -1
  48. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js +18 -7
  49. package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
  50. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js +15 -3
  51. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
  52. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/index.js +16 -1
  53. package/dist/esm/components/Map/components/MapLayer/components/PointLayer/index.js.map +1 -1
  54. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js +10 -2
  55. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
  56. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js +1 -1
  57. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
  58. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js +10 -2
  59. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.js.map +1 -1
  60. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +4 -2
  61. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
  62. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/index.js +12 -1
  63. package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/index.js.map +1 -1
  64. package/dist/esm/components/Map/components/MapLayer/interfaces/index.js.map +1 -1
  65. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js +0 -1
  66. package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.js.map +1 -1
  67. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js +6 -3
  68. package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
  69. package/dist/esm/components/Map/constants/colors.js +1613 -153
  70. package/dist/esm/components/Map/constants/colors.js.map +1 -1
  71. package/dist/esm/components/Map/utils/colors.js +3 -36
  72. package/dist/esm/components/Map/utils/colors.js.map +1 -1
  73. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js +0 -3
  74. package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
  75. package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
  76. package/dist/types/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.d.ts.map +1 -1
  77. package/dist/types/components/Map/components/MapLayer/components/BoundaryLayer/index.d.ts.map +1 -1
  78. package/dist/types/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.d.ts.map +1 -1
  79. package/dist/types/components/Map/components/MapLayer/components/LegendArea/index.d.ts.map +1 -1
  80. package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts.map +1 -1
  81. package/dist/types/components/Map/components/MapLayer/components/PointLayer/index.d.ts.map +1 -1
  82. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.d.ts +12 -2
  83. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.d.ts.map +1 -1
  84. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.d.ts +11 -6
  85. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/index.d.ts.map +1 -1
  86. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.d.ts.map +1 -1
  87. package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/index.d.ts.map +1 -1
  88. package/dist/types/components/Map/components/MapLayer/interfaces/index.d.ts +12 -0
  89. package/dist/types/components/Map/components/MapLayer/interfaces/index.d.ts.map +1 -1
  90. package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/hooks/index.d.ts.map +1 -1
  91. package/dist/types/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.d.ts.map +1 -1
  92. package/dist/types/components/Map/constants/colors.d.ts +2 -0
  93. package/dist/types/components/Map/constants/colors.d.ts.map +1 -1
  94. package/dist/types/components/Map/interfaces/index.d.ts +9 -0
  95. package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
  96. package/dist/types/components/Map/utils/colors.d.ts +2 -2
  97. package/dist/types/components/Map/utils/colors.d.ts.map +1 -1
  98. package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts.map +1 -1
  99. package/package.json +5 -5
@@ -34,6 +34,7 @@ const MapComponent = ({
34
34
  ];
35
35
  const sanitizedBoundaryLayers = [
36
36
  {
37
+ ...boundaryLayer,
37
38
  type: "overlay",
38
39
  id: "boundary",
39
40
  enabled: boundaryLayer?.enabled ?? false
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAmDI;AAlDJ,SAAgB,kBAAkB;AAClC,OAAO,aAAa;AAKpB,SAAS,mBAAmB;AAE5B,OAAO;AACP,SAAS,aAAa,2BAA2B;AAEjD,MAAM,cAAc,IAAI,YAAY;AAEpC,MAAM,eAAe,CACpB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GACA,QACI;AACJ,QAAM,uBAA2C;AAAA,IAChD;AAAA,MACC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,SAAS,YAAY,WAAW;AAAA,MAChC,GAAG;AAAA,IACJ;AAAA,EACD;AACA,QAAM,0BAAiD;AAAA,IACtD;AAAA,MACC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,SAAS,eAAe,WAAW;AAAA,IACpC;AAAA,EACD;AAEA,SACC,oBAAC,uBAAoB,QAAQ,aAC5B;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACA,QAAQ;AAAA,YACP;AAAA,YACA;AAAA,YACA,gBAAgB;AAAA,YAChB,aAAa;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,QAFK;AAAA,MAGN;AAAA;AAAA,EACD,GACD;AAEF;AACO,MAAM,WAA+B,WAAW,YAAY;AAK5D,MAAM,MAAM","sourcesContent":["import { Map as LeafletMap } from \"leaflet\";\nimport React, { forwardRef } from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider/index.js\";\nimport { MapProps } from \"./interfaces/index.js\";\nimport \"leaflet/dist/leaflet.css\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nconst MapComponent = (\n\t{\n\t\torgUnitSelection,\n\t\tpointLayer,\n\t\tboundaryLayer,\n\t\tthematicLayers,\n\t\tearthEngineLayers,\n\t\tperiodSelection,\n\t\tmapOptions,\n\t\tkey,\n\t\tcontrols,\n\t\tlegends,\n\t}: MapProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<MapProvider\n\t\t\t\tperiodSelection={periodSelection}\n\t\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\t>\n\t\t\t\t<MapArea\n\t\t\t\t\tlayers={{\n\t\t\t\t\t\tthematicLayers,\n\t\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t\t}}\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tmapOptions={mapOptions}\n\t\t\t\t/>\n\t\t\t</MapProvider>\n\t\t</QueryClientProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = forwardRef(MapComponent);\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
1
+ {"version":3,"sources":["../../../src/components/Map/DHIS2Map.tsx"],"names":[],"mappings":"AAoDI;AAnDJ,SAAgB,kBAAkB;AAClC,OAAO,aAAa;AAKpB,SAAS,mBAAmB;AAE5B,OAAO;AACP,SAAS,aAAa,2BAA2B;AAEjD,MAAM,cAAc,IAAI,YAAY;AAEpC,MAAM,eAAe,CACpB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GACA,QACI;AACJ,QAAM,uBAA2C;AAAA,IAChD;AAAA,MACC,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,SAAS,YAAY,WAAW;AAAA,MAChC,GAAG;AAAA,IACJ;AAAA,EACD;AACA,QAAM,0BAAiD;AAAA,IACtD;AAAA,MACC,GAAG;AAAA,MACH,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,SAAS,eAAe,WAAW;AAAA,IACpC;AAAA,EACD;AAEA,SACC,oBAAC,uBAAoB,QAAQ,aAC5B;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACA,QAAQ;AAAA,YACP;AAAA,YACA;AAAA,YACA,gBAAgB;AAAA,YAChB,aAAa;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,QAFK;AAAA,MAGN;AAAA;AAAA,EACD,GACD;AAEF;AACO,MAAM,WAA+B,WAAW,YAAY;AAK5D,MAAM,MAAM","sourcesContent":["import { Map as LeafletMap } from \"leaflet\";\nimport React, { forwardRef } from \"react\";\nimport MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider/index.js\";\nimport { MapProps } from \"./interfaces/index.js\";\nimport \"leaflet/dist/leaflet.css\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nconst MapComponent = (\n\t{\n\t\torgUnitSelection,\n\t\tpointLayer,\n\t\tboundaryLayer,\n\t\tthematicLayers,\n\t\tearthEngineLayers,\n\t\tperiodSelection,\n\t\tmapOptions,\n\t\tkey,\n\t\tcontrols,\n\t\tlegends,\n\t}: MapProps,\n\tref: React.Ref<LeafletMap> | undefined,\n) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<MapProvider\n\t\t\t\tperiodSelection={periodSelection}\n\t\t\t\torgUnitSelection={orgUnitSelection}\n\t\t\t>\n\t\t\t\t<MapArea\n\t\t\t\t\tlayers={{\n\t\t\t\t\t\tthematicLayers,\n\t\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t\t}}\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tcontrols={controls}\n\t\t\t\t\tkey={key}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tmapOptions={mapOptions}\n\t\t\t\t/>\n\t\t\t</MapProvider>\n\t\t</QueryClientProvider>\n\t);\n};\nexport const DHIS2Map: React.FC<MapProps> = forwardRef(MapComponent);\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var DHIS2Map = require('./DHIS2Map');
6
+ var colors_js = require('./constants/colors.js');
6
7
 
7
8
  const meta = {
8
9
  title: "DHIS2 Map",
@@ -53,7 +54,10 @@ BoundaryLayer.args = {
53
54
  userSubX2Unit: true
54
55
  },
55
56
  boundaryLayer: {
56
- enabled: true
57
+ enabled: true,
58
+ onLayerClick: (e, data) => {
59
+ console.log(e, data);
60
+ }
57
61
  }
58
62
  };
59
63
  const BoundaryLayerWithLevels = {
@@ -95,7 +99,11 @@ ChoroplethThematicLayer.args = {
95
99
  dataItem: {
96
100
  id: "Uvn6LCg7dVU",
97
101
  displayName: "ANC 1 Coverage",
98
- type: "indicator"
102
+ type: "indicator",
103
+ legendConfig: {
104
+ colorClass: colors_js.COLOR_SCALES[0],
105
+ scale: 5
106
+ }
99
107
  },
100
108
  control: {
101
109
  enabled: true,
@@ -104,7 +112,7 @@ ChoroplethThematicLayer.args = {
104
112
  }
105
113
  ],
106
114
  periodSelection: {
107
- periods: ["2022"]
115
+ periods: ["2023"]
108
116
  },
109
117
  legends: {
110
118
  enabled: true,
@@ -118,7 +126,7 @@ BubbleThematicLayer.args = {
118
126
  orgUnits: [],
119
127
  userOrgUnit: true,
120
128
  userSubUnit: true,
121
- userSubX2Unit: true
129
+ userSubX2Unit: false
122
130
  },
123
131
  boundaryLayer: {
124
132
  enabled: true
@@ -131,7 +139,11 @@ BubbleThematicLayer.args = {
131
139
  dataItem: {
132
140
  id: "Uvn6LCg7dVU",
133
141
  displayName: "ANC 1 Coverage",
134
- type: "indicator"
142
+ type: "indicator",
143
+ legendConfig: {
144
+ colorClass: colors_js.COLOR_SCALES[0],
145
+ scale: 5
146
+ }
135
147
  },
136
148
  control: {
137
149
  enabled: true,
@@ -149,7 +161,7 @@ BubbleThematicLayer.args = {
149
161
  collapsible: true
150
162
  },
151
163
  periodSelection: {
152
- periods: ["2022"]
164
+ periods: ["2023"]
153
165
  },
154
166
  controls: [
155
167
  {
@@ -174,6 +186,9 @@ AllThematicLayers.args = {
174
186
  type: "choropleth",
175
187
  id: "ReUHfIn0pTQ",
176
188
  enabled: true,
189
+ onLayerClick: (e, data) => {
190
+ console.log(e, data);
191
+ },
177
192
  dataItem: {
178
193
  id: "ReUHfIn0pTQ",
179
194
  displayName: "ANC 1-3 Dropout Rate",
@@ -186,13 +201,17 @@ AllThematicLayers.args = {
186
201
  }
187
202
  },
188
203
  {
189
- type: "choropleth",
204
+ type: "bubble",
190
205
  id: "Uvn6LCg7dVU",
191
206
  enabled: true,
192
207
  dataItem: {
193
208
  id: "Uvn6LCg7dVU",
194
209
  displayName: "ANC 1 Coverage",
195
- type: "indicator"
210
+ type: "indicator",
211
+ legendConfig: {
212
+ colorClass: colors_js.COLOR_SCALES[0],
213
+ scale: 5
214
+ }
196
215
  },
197
216
  control: {
198
217
  enabled: true,
@@ -206,7 +225,7 @@ AllThematicLayers.args = {
206
225
  collapsible: true
207
226
  },
208
227
  periodSelection: {
209
- periods: ["2022"]
228
+ periods: ["2023"]
210
229
  },
211
230
  controls: [
212
231
  {
@@ -262,7 +281,7 @@ ChoroplethThematicLayerWithLevels.args = {
262
281
  collapsible: true
263
282
  },
264
283
  periodSelection: {
265
- periods: ["2022"]
284
+ periods: ["2023"]
266
285
  },
267
286
  controls: [
268
287
  {
@@ -301,14 +320,17 @@ PointLayer.args = {
301
320
  }
302
321
  ],
303
322
  periodSelection: {
304
- periods: ["2022"]
323
+ periods: ["2023"]
305
324
  },
306
325
  pointLayer: {
307
326
  enabled: true,
308
327
  label: "Facilities",
309
328
  level: "m9lBJogzE95",
310
329
  style: {
311
- groupSet: "J5jldMd8OHv"
330
+ icon: "hospital_negative"
331
+ },
332
+ onLayerClick: (e, data) => {
333
+ console.log(e, data);
312
334
  }
313
335
  }
314
336
  };
@@ -322,7 +344,7 @@ GoogleEarthEngineLayers.args = {
322
344
  },
323
345
  thematicLayers: [],
324
346
  periodSelection: {
325
- periods: ["2022"]
347
+ periods: ["2023"]
326
348
  },
327
349
  earthEngineLayers: [
328
350
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Map/DHIS2Map.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { DHIS2Map } from \"./DHIS2Map\";\n\nconst meta: Meta<typeof DHIS2Map> = {\n\ttitle: \"DHIS2 Map\",\n\tcomponent: DHIS2Map,\n};\nexport default meta;\n\ntype Story = StoryObj<typeof DHIS2Map>;\nexport const BaseMap: Story = {\n\tname: \"Base map\",\n};\nBaseMap.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n};\n\nexport const Controls: Story = {\n\tname: \"Controls\",\n};\nControls.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"print\",\n\t\t\tposition: \"topleft\",\n\t\t\toptions: {\n\t\t\t\thidden: false,\n\t\t\t\thideControlContainer: true,\n\t\t\t\tsizeModes: [\"A4Landscape\", \"A4Portrait\", \"Current\"],\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport const BoundaryLayer: Story = {\n\tname: \"Boundary layer\",\n};\nBoundaryLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n};\n\nexport const BoundaryLayerWithLevels: Story = {\n\tname: \"Boundary layer with levels\",\n};\nBoundaryLayerWithLevels.args = {\n\torgUnitSelection: {\n\t\torgUnits: [\n\t\t\t{\n\t\t\t\tid: \"ImspTQPwCqd\",\n\t\t\t\tdisplayName: \"Sierra Leone\",\n\t\t\t\tname: \"Sierra Leone\",\n\t\t\t\tpath: \"/ImspTQPwCqd\",\n\t\t\t\tchildren: [],\n\t\t\t},\n\t\t],\n\t\tlevels: [\"2\"],\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n};\n\nexport const ChoroplethThematicLayer: Story = {};\nChoroplethThematicLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"choropleth\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tperiodSelection: {\n\t\tperiods: [\"2022\"],\n\t},\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n};\n\nexport const BubbleThematicLayer: Story = {};\nBubbleThematicLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"bubble\",\n\t\t\tid: \"bubble\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t\tradius: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 40,\n\t\t\t},\n\t\t},\n\t],\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n\tperiodSelection: {\n\t\tperiods: [\"2022\"],\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"fullscreen\",\n\t\t\tposition: \"topleft\",\n\t\t},\n\t],\n};\n\nexport const AllThematicLayers: Story = {};\nAllThematicLayers.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"ReUHfIn0pTQ\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"ReUHfIn0pTQ\",\n\t\t\t\tdisplayName: \"ANC 1-3 Dropout Rate\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t\tlegendSet: \"fqs276KXCXi\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n\tperiodSelection: {\n\t\tperiods: [\"2022\"],\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"scale\",\n\t\t\tposition: \"bottomleft\",\n\t\t\toptions: {\n\t\t\t\timperial: false,\n\t\t\t\tmetric: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: \"fullscreen\",\n\t\t\tposition: \"bottomleft\",\n\t\t},\n\t],\n};\n\nexport const ChoroplethThematicLayerWithLevels: Story = {};\nChoroplethThematicLayerWithLevels.args = {\n\torgUnitSelection: {\n\t\torgUnits: [\n\t\t\t{\n\t\t\t\tid: \"ImspTQPwCqd\",\n\t\t\t\tdisplayName: \"Sierra Leone\",\n\t\t\t\tname: \"Sierra Leone\",\n\t\t\t\tpath: \"/ImspTQPwCqd\",\n\t\t\t\tchildren: [],\n\t\t\t},\n\t\t],\n\t\tlevels: [\"3\"],\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"choropleth\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n\tperiodSelection: {\n\t\tperiods: [\"2022\"],\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"print\",\n\t\t\tposition: \"topleft\",\n\t\t\toptions: {\n\t\t\t\thidden: false,\n\t\t\t\thideControlContainer: true,\n\t\t\t\tsizeModes: [\"A4Landscape\", \"A4Portrait\", \"Current\"],\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport const PointLayer: Story = {};\nPointLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"choropleth\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tperiodSelection: {\n\t\tperiods: [\"2022\"],\n\t},\n\tpointLayer: {\n\t\tenabled: true,\n\t\tlabel: \"Facilities\",\n\t\tlevel: \"m9lBJogzE95\",\n\t\tstyle: {\n\t\t\tgroupSet: \"J5jldMd8OHv\",\n\t\t},\n\t},\n};\n\nexport const GoogleEarthEngineLayers: Story = {};\nGoogleEarthEngineLayers.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tthematicLayers: [],\n\tperiodSelection: {\n\t\tperiods: [\"2022\"],\n\t},\n\tearthEngineLayers: [\n\t\t{\n\t\t\tname: \"Population\",\n\t\t\ttype: \"population\",\n\t\t\tid: \"population\",\n\t\t\tenabled: false,\n\t\t\tparams: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 10,\n\t\t\t\tpalette:\n\t\t\t\t\t\"#f7fbff,#deebf7,#c6dbef,#9ecae1,#6baed6,#4292c6,#2171b5,#08519c,#08306b\",\n\t\t\t},\n\t\t\taggregations: [\"sum\", \"mean\"],\n\t\t\tfilters: {\n\t\t\t\tperiod: \"2020\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Footprints\",\n\t\t\ttype: \"footprints\",\n\t\t\tid: \"footprints\",\n\t\t\taggregations: [\"count\"],\n\t\t\tenabled: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Land Cover\",\n\t\t\ttype: \"landCover\",\n\t\t\tid: \"landCover\",\n\t\t\tenabled: true,\n\t\t\taggregations: [\"percentage\"],\n\t\t},\n\t],\n\tpointLayer: {\n\t\tenabled: false,\n\t\tlabel: \"Facilities\",\n\t\tlevel: \"m9lBJogzE95\",\n\t\tstyle: {\n\t\t\tgroupSet: \"J5jldMd8OHv\",\n\t\t},\n\t},\n};\n"]}
1
+ {"version":3,"sources":["../../../src/components/Map/DHIS2Map.stories.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { DHIS2Map } from \"./DHIS2Map\";\n\nimport { COLOR_SCALES } from \"./constants/colors.js\";\n\nconst meta: Meta<typeof DHIS2Map> = {\n\ttitle: \"DHIS2 Map\",\n\tcomponent: DHIS2Map,\n};\nexport default meta;\n\ntype Story = StoryObj<typeof DHIS2Map>;\nexport const BaseMap: Story = {\n\tname: \"Base map\",\n};\nBaseMap.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n};\n\nexport const Controls: Story = {\n\tname: \"Controls\",\n};\nControls.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"print\",\n\t\t\tposition: \"topleft\",\n\t\t\toptions: {\n\t\t\t\thidden: false,\n\t\t\t\thideControlContainer: true,\n\t\t\t\tsizeModes: [\"A4Landscape\", \"A4Portrait\", \"Current\"],\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport const BoundaryLayer: Story = {\n\tname: \"Boundary layer\",\n};\nBoundaryLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t\tonLayerClick: (e, data) => {\n\t\t\tconsole.log(e, data);\n\t\t},\n\t},\n};\n\nexport const BoundaryLayerWithLevels: Story = {\n\tname: \"Boundary layer with levels\",\n};\nBoundaryLayerWithLevels.args = {\n\torgUnitSelection: {\n\t\torgUnits: [\n\t\t\t{\n\t\t\t\tid: \"ImspTQPwCqd\",\n\t\t\t\tdisplayName: \"Sierra Leone\",\n\t\t\t\tname: \"Sierra Leone\",\n\t\t\t\tpath: \"/ImspTQPwCqd\",\n\t\t\t\tchildren: [],\n\t\t\t},\n\t\t],\n\t\tlevels: [\"2\"],\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n};\n\nexport const ChoroplethThematicLayer: Story = {};\nChoroplethThematicLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"choropleth\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t\tlegendConfig: {\n\t\t\t\t\tcolorClass: COLOR_SCALES[0],\n\t\t\t\t\tscale: 5,\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tperiodSelection: {\n\t\tperiods: [\"2023\"],\n\t},\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n};\n\nexport const BubbleThematicLayer: Story = {};\nBubbleThematicLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"bubble\",\n\t\t\tid: \"bubble\",\n\t\t\tenabled: true,\n\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t\tlegendConfig: {\n\t\t\t\t\tcolorClass: COLOR_SCALES[0],\n\t\t\t\t\tscale: 5,\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t\tradius: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 40,\n\t\t\t},\n\t\t},\n\t],\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n\tperiodSelection: {\n\t\tperiods: [\"2023\"],\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"fullscreen\",\n\t\t\tposition: \"topleft\",\n\t\t},\n\t],\n};\n\nexport const AllThematicLayers: Story = {};\nAllThematicLayers.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: true,\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"ReUHfIn0pTQ\",\n\t\t\tenabled: true,\n\t\t\tonLayerClick: (e, data) => {\n\t\t\t\tconsole.log(e, data);\n\t\t\t},\n\t\t\tdataItem: {\n\t\t\t\tid: \"ReUHfIn0pTQ\",\n\t\t\t\tdisplayName: \"ANC 1-3 Dropout Rate\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t\tlegendSet: \"fqs276KXCXi\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: \"bubble\",\n\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t\tlegendConfig: {\n\t\t\t\t\tcolorClass: COLOR_SCALES[0],\n\t\t\t\t\tscale: 5,\n\t\t\t\t},\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n\tperiodSelection: {\n\t\tperiods: [\"2023\"],\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"scale\",\n\t\t\tposition: \"bottomleft\",\n\t\t\toptions: {\n\t\t\t\timperial: false,\n\t\t\t\tmetric: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: \"fullscreen\",\n\t\t\tposition: \"bottomleft\",\n\t\t},\n\t],\n};\n\nexport const ChoroplethThematicLayerWithLevels: Story = {};\nChoroplethThematicLayerWithLevels.args = {\n\torgUnitSelection: {\n\t\torgUnits: [\n\t\t\t{\n\t\t\t\tid: \"ImspTQPwCqd\",\n\t\t\t\tdisplayName: \"Sierra Leone\",\n\t\t\t\tname: \"Sierra Leone\",\n\t\t\t\tpath: \"/ImspTQPwCqd\",\n\t\t\t\tchildren: [],\n\t\t\t},\n\t\t],\n\t\tlevels: [\"3\"],\n\t},\n\tboundaryLayer: {\n\t\tenabled: true,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"choropleth\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tlegends: {\n\t\tenabled: true,\n\t\tposition: \"topright\",\n\t\tcollapsible: true,\n\t},\n\tperiodSelection: {\n\t\tperiods: [\"2023\"],\n\t},\n\tcontrols: [\n\t\t{\n\t\t\ttype: \"print\",\n\t\t\tposition: \"topleft\",\n\t\t\toptions: {\n\t\t\t\thidden: false,\n\t\t\t\thideControlContainer: true,\n\t\t\t\tsizeModes: [\"A4Landscape\", \"A4Portrait\", \"Current\"],\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport const PointLayer: Story = {};\nPointLayer.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tthematicLayers: [\n\t\t{\n\t\t\ttype: \"choropleth\",\n\t\t\tid: \"choropleth\",\n\t\t\tenabled: true,\n\t\t\tdataItem: {\n\t\t\t\tid: \"Uvn6LCg7dVU\",\n\t\t\t\tdisplayName: \"ANC 1 Coverage\",\n\t\t\t\ttype: \"indicator\",\n\t\t\t},\n\t\t\tcontrol: {\n\t\t\t\tenabled: true,\n\t\t\t\tposition: \"topright\",\n\t\t\t},\n\t\t},\n\t],\n\tperiodSelection: {\n\t\tperiods: [\"2023\"],\n\t},\n\tpointLayer: {\n\t\tenabled: true,\n\t\tlabel: \"Facilities\",\n\t\tlevel: \"m9lBJogzE95\",\n\t\tstyle: {\n\t\t\ticon: \"hospital_negative\",\n\t\t},\n\t\tonLayerClick: (e, data) => {\n\t\t\tconsole.log(e, data);\n\t\t},\n\t},\n};\n\nexport const GoogleEarthEngineLayers: Story = {};\nGoogleEarthEngineLayers.args = {\n\torgUnitSelection: {\n\t\torgUnits: [],\n\t\tuserOrgUnit: true,\n\t\tuserSubUnit: true,\n\t\tuserSubX2Unit: false,\n\t},\n\tthematicLayers: [],\n\tperiodSelection: {\n\t\tperiods: [\"2023\"],\n\t},\n\tearthEngineLayers: [\n\t\t{\n\t\t\tname: \"Population\",\n\t\t\ttype: \"population\",\n\t\t\tid: \"population\",\n\t\t\tenabled: false,\n\t\t\tparams: {\n\t\t\t\tmin: 0,\n\t\t\t\tmax: 10,\n\t\t\t\tpalette:\n\t\t\t\t\t\"#f7fbff,#deebf7,#c6dbef,#9ecae1,#6baed6,#4292c6,#2171b5,#08519c,#08306b\",\n\t\t\t},\n\t\t\taggregations: [\"sum\", \"mean\"],\n\t\t\tfilters: {\n\t\t\t\tperiod: \"2020\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"Footprints\",\n\t\t\ttype: \"footprints\",\n\t\t\tid: \"footprints\",\n\t\t\taggregations: [\"count\"],\n\t\t\tenabled: false,\n\t\t},\n\t\t{\n\t\t\tname: \"Land Cover\",\n\t\t\ttype: \"landCover\",\n\t\t\tid: \"landCover\",\n\t\t\tenabled: true,\n\t\t\taggregations: [\"percentage\"],\n\t\t},\n\t],\n\tpointLayer: {\n\t\tenabled: false,\n\t\tlabel: \"Facilities\",\n\t\tlevel: \"m9lBJogzE95\",\n\t\tstyle: {\n\t\t\tgroupSet: \"J5jldMd8OHv\",\n\t\t},\n\t},\n};\n"]}
@@ -14,13 +14,23 @@ function EarthEngineLayerConfiguration({
14
14
  form,
15
15
  excluded
16
16
  }) {
17
- return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "column gap-16", children: [
18
- /* @__PURE__ */ jsxRuntime.jsx(TypeField_js.TypeField, { excluded }),
19
- /* @__PURE__ */ jsxRuntime.jsx(Name_js.Name, {}),
20
- /* @__PURE__ */ jsxRuntime.jsx(AggregationSelector_js.AggregationSelector, {}),
21
- /* @__PURE__ */ jsxRuntime.jsx(PeriodSelector_js.PeriodSelector, {}),
22
- /* @__PURE__ */ jsxRuntime.jsx(StylesConfig_js.StylesConfig, {})
23
- ] }) }) });
17
+ return /* @__PURE__ */ jsxRuntime.jsx(reactQuery.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsxRuntime.jsx(reactHookForm.FormProvider, { ...form, children: /* @__PURE__ */ jsxRuntime.jsxs(
18
+ "div",
19
+ {
20
+ style: {
21
+ display: "flex",
22
+ flexDirection: "column",
23
+ gap: 16
24
+ },
25
+ children: [
26
+ /* @__PURE__ */ jsxRuntime.jsx(TypeField_js.TypeField, { excluded }),
27
+ /* @__PURE__ */ jsxRuntime.jsx(Name_js.Name, {}),
28
+ /* @__PURE__ */ jsxRuntime.jsx(AggregationSelector_js.AggregationSelector, {}),
29
+ /* @__PURE__ */ jsxRuntime.jsx(PeriodSelector_js.PeriodSelector, {}),
30
+ /* @__PURE__ */ jsxRuntime.jsx(StylesConfig_js.StylesConfig, {})
31
+ ]
32
+ }
33
+ ) }) });
24
34
  }
25
35
 
26
36
  exports.EarthEngineLayerConfiguration = EarthEngineLayerConfiguration;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.tsx"],"names":[],"mappings":"AAyBI,SACC,KADD;AAxBJ,SAAS,oBAAmC;AAE5C,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAC/B,SAAS,aAAa,2BAA2B;AAEjD,MAAM,cAAc,IAAI,YAAY;AAQ7B,SAAS,8BAA8B;AAAA,EAC7C;AAAA,EACA;AACD,GAAuC;AACtC,SACC,oBAAC,uBAAoB,QAAQ,aAC5B,8BAAC,gBAAc,GAAG,MACjB,+BAAC,SAAI,WAAU,iBACd;AAAA,wBAAC,aAAU,UAAoB;AAAA,IAC/B,oBAAC,QAAK;AAAA,IACN,oBAAC,uBAAoB;AAAA,IACrB,oBAAC,kBAAe;AAAA,IAChB,oBAAC,gBAAa;AAAA,KACf,GACD,GACD;AAEF","sourcesContent":["import { EarthEngineLayerConfig } from \"../MapLayer/interfaces\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport React from \"react\";\nimport { StylesConfig } from \"./components/StylesConfig.js\";\nimport { Name } from \"./components/Name.js\";\nimport { TypeField } from \"./components/TypeField.js\";\nimport { AggregationSelector } from \"./components/AggregationSelector.js\";\nimport { PeriodSelector } from \"./components/PeriodSelector.js\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\nexport interface EarthEngineLayerConfigurationProps {\n\tform: UseFormReturn<EarthEngineLayerConfig>;\n\texcluded?: string[];\n\n\t[key: string]: any;\n}\n\nexport function EarthEngineLayerConfiguration({\n\tform,\n\texcluded,\n}: EarthEngineLayerConfigurationProps) {\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<FormProvider {...form}>\n\t\t\t\t<div className=\"column gap-16\">\n\t\t\t\t\t<TypeField excluded={excluded} />\n\t\t\t\t\t<Name />\n\t\t\t\t\t<AggregationSelector />\n\t\t\t\t\t<PeriodSelector />\n\t\t\t\t\t<StylesConfig />\n\t\t\t\t</div>\n\t\t\t</FormProvider>\n\t\t</QueryClientProvider>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/Map/components/EarthEngineLayerConfiguration/EarthEngineLayerConfiguration.tsx"],"names":[],"mappings":"AA0BI,SAOC,KAPD;AAzBJ,SAAS,oBAAmC;AAE5C,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,2BAA2B;AACpC,SAAS,sBAAsB;AAC/B,SAAS,aAAa,2BAA2B;AAEjD,MAAM,cAAc,IAAI,YAAY;AAS7B,SAAS,8BAA8B;AAAA,EAC7C;AAAA,EACA;AACD,GAAuC;AACtC,SACC,oBAAC,uBAAoB,QAAQ,aAC5B,8BAAC,gBAAc,GAAG,MACjB;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,QACN,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,MACN;AAAA,MAEA;AAAA,4BAAC,aAAU,UAAoB;AAAA,QAC/B,oBAAC,QAAK;AAAA,QACN,oBAAC,uBAAoB;AAAA,QACrB,oBAAC,kBAAe;AAAA,QAChB,oBAAC,gBAAa;AAAA;AAAA;AAAA,EACf,GACD,GACD;AAEF","sourcesContent":["import { EarthEngineLayerConfig } from \"../MapLayer/interfaces\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport React from \"react\";\nimport { StylesConfig } from \"./components/StylesConfig.js\";\nimport { Name } from \"./components/Name.js\";\nimport { TypeField } from \"./components/TypeField.js\";\nimport { AggregationSelector } from \"./components/AggregationSelector.js\";\nimport { PeriodSelector } from \"./components/PeriodSelector.js\";\nimport { QueryClient, QueryClientProvider } from \"react-query\";\n\nconst queryClient = new QueryClient();\n\nexport interface EarthEngineLayerConfigurationProps {\n\tform: UseFormReturn<EarthEngineLayerConfig>;\n\texcluded?: string[];\n\n\t[key: string]: any;\n}\n\nexport function EarthEngineLayerConfiguration({\n\tform,\n\texcluded,\n}: EarthEngineLayerConfigurationProps) {\n\treturn (\n\t\t<QueryClientProvider client={queryClient}>\n\t\t\t<FormProvider {...form}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<TypeField excluded={excluded} />\n\t\t\t\t\t<Name />\n\t\t\t\t\t<AggregationSelector />\n\t\t\t\t\t<PeriodSelector />\n\t\t\t\t\t<StylesConfig />\n\t\t\t\t</div>\n\t\t\t</FormProvider>\n\t\t</QueryClientProvider>\n\t);\n}\n"]}
@@ -26,7 +26,7 @@ const highlightStyle = {
26
26
  fillOpacity: 0.1
27
27
  };
28
28
  function BoundaryLayer(props) {
29
- const { enabled } = props ?? {};
29
+ const { enabled, customEventHandlers, onLayerClick } = props ?? {};
30
30
  const orgUnits = useBoundaryData_js.useBoundaryData();
31
31
  return /* @__PURE__ */ jsxRuntime.jsx(reactLeaflet.LayersControl.Overlay, { checked: enabled, name: i18n__default.default.t("Boundaries"), children: /* @__PURE__ */ jsxRuntime.jsx(reactLeaflet.LayerGroup, { children: orgUnits?.map((area) => {
32
32
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -36,7 +36,13 @@ function BoundaryLayer(props) {
36
36
  interactive: true,
37
37
  eventHandlers: {
38
38
  mouseover: (e) => map_js.highlightFeature(e, highlightStyle),
39
- mouseout: (e) => map_js.resetHighlight(e, defaultStyle)
39
+ mouseout: (e) => map_js.resetHighlight(e, defaultStyle),
40
+ ...customEventHandlers ?? {},
41
+ mousedown: (e) => {
42
+ if (onLayerClick) {
43
+ onLayerClick(e, { orgUnit: area });
44
+ }
45
+ }
40
46
  },
41
47
  pathOptions: defaultStyle,
42
48
  children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/BoundaryLayer/index.tsx"],"names":[],"mappings":"AAiDO,cAGC,YAHD;AAjDP,OAAO,UAAU;AACjB,SAAS,cAAc;AAEvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,kBAAkB,sBAAsB;AAEjD,SAAS,uBAAuB;AAEzB,MAAM,eAAe;AAAA,EAC3B,QAAQ;AAAA,EACR,OAAO,OAAO;AAAA,EACd,WAAW,OAAO;AAAA,EAClB,aAAa;AACd;AACO,MAAM,iBAAiB;AAAA,EAC7B,QAAQ;AAAA,EACR,OAAO,OAAO;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AACd;AAEe,SAAR,cAA+B,OAA+B;AACpE,QAAM,EAAE,QAAQ,IAAI,SAAS,CAAC;AAC9B,QAAM,WAAW,gBAAgB;AAEjC,SACC,oBAAC,cAAc,SAAd,EAAsB,SAAS,SAAS,MAAM,KAAK,EAAE,YAAY,GACjE,8BAAC,cACC,oBAAU,IAAI,CAAC,SAAqB;AACpC,WACC;AAAA,MAAC;AAAA;AAAA,QACA,MAAM,KAAK;AAAA,QACX,aAAW;AAAA,QACX,eAAe;AAAA,UACd,WAAW,CAAC,MACX,iBAAiB,GAAG,cAAc;AAAA,UACnC,UAAU,CAAC,MACV,eAAe,GAAG,YAAY;AAAA,QAChC;AAAA,QAEA,aAAa;AAAA,QAEb;AAAA,8BAAC,WAAS,eAAK,MAAK;AAAA,UACpB,qBAAC,SAAM,UAAU,IAChB;AAAA,gCAAC,QAAI,eAAK,MAAK;AAAA,YACf,qBAAC,SACA;AAAA,kCAAC,OAAE,qBAAO;AAAA,cACT,KAAK;AAAA,eACP;AAAA,aACD;AAAA;AAAA;AAAA,MAVK,GAAG,KAAK,EAAE;AAAA,IAWhB;AAAA,EAEF,CAAC,GACF,GACD;AAEF","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { colors } from \"@dhis2/ui\";\nimport React from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTooltip,\n} from \"react-leaflet\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { CustomBoundaryLayer as BoundaryLayerInterface } from \"../../interfaces/index.js\";\nimport { useBoundaryData } from \"./hooks/useBoundaryData.js\";\n\nexport const defaultStyle = {\n\tweight: 1,\n\tcolor: colors.grey900,\n\tfillColor: colors.grey900,\n\tfillOpacity: 0.0,\n};\nexport const highlightStyle = {\n\tweight: 2,\n\tcolor: colors.grey900,\n\tdashArray: \"\",\n\tfillOpacity: 0.1,\n};\n\nexport default function BoundaryLayer(props: BoundaryLayerInterface) {\n\tconst { enabled } = props ?? {};\n\tconst orgUnits = useBoundaryData();\n\n\treturn (\n\t\t<LayersControl.Overlay checked={enabled} name={i18n.t(\"Boundaries\")}>\n\t\t\t<LayerGroup>\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<GeoJSON\n\t\t\t\t\t\t\tdata={area.geoJSON}\n\t\t\t\t\t\t\tinteractive\n\t\t\t\t\t\t\teventHandlers={{\n\t\t\t\t\t\t\t\tmouseover: (e) =>\n\t\t\t\t\t\t\t\t\thighlightFeature(e, highlightStyle),\n\t\t\t\t\t\t\t\tmouseout: (e) =>\n\t\t\t\t\t\t\t\t\tresetHighlight(e, defaultStyle),\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tpathOptions={defaultStyle}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t\t\t\t\t<Popup minWidth={80}>\n\t\t\t\t\t\t\t\t<h3>{area.name}</h3>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<b>Level: </b>\n\t\t\t\t\t\t\t\t\t{area.level}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Popup>\n\t\t\t\t\t\t</GeoJSON>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/BoundaryLayer/index.tsx"],"names":[],"mappings":"AAuDO,cAGC,YAHD;AAvDP,OAAO,UAAU;AACjB,SAAS,cAAc;AAEvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,kBAAkB,sBAAsB;AAEjD,SAAS,uBAAuB;AAEzB,MAAM,eAAe;AAAA,EAC3B,QAAQ;AAAA,EACR,OAAO,OAAO;AAAA,EACd,WAAW,OAAO;AAAA,EAClB,aAAa;AACd;AACO,MAAM,iBAAiB;AAAA,EAC7B,QAAQ;AAAA,EACR,OAAO,OAAO;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AACd;AAEe,SAAR,cAA+B,OAA+B;AACpE,QAAM,EAAE,SAAS,qBAAqB,aAAa,IAAI,SAAS,CAAC;AACjE,QAAM,WAAW,gBAAgB;AAEjC,SACC,oBAAC,cAAc,SAAd,EAAsB,SAAS,SAAS,MAAM,KAAK,EAAE,YAAY,GACjE,8BAAC,cACC,oBAAU,IAAI,CAAC,SAAqB;AACpC,WACC;AAAA,MAAC;AAAA;AAAA,QACA,MAAM,KAAK;AAAA,QACX,aAAW;AAAA,QACX,eAAe;AAAA,UACd,WAAW,CAAC,MACX,iBAAiB,GAAG,cAAc;AAAA,UACnC,UAAU,CAAC,MACV,eAAe,GAAG,YAAY;AAAA,UAC/B,GAAI,uBAAuB,CAAC;AAAA,UAC5B,WAAW,CAAC,MAAM;AACjB,gBAAI,cAAc;AACjB,2BAAa,GAAG,EAAE,SAAS,KAAK,CAAC;AAAA,YAClC;AAAA,UACD;AAAA,QACD;AAAA,QAEA,aAAa;AAAA,QAEb;AAAA,8BAAC,WAAS,eAAK,MAAK;AAAA,UACpB,qBAAC,SAAM,UAAU,IAChB;AAAA,gCAAC,QAAI,eAAK,MAAK;AAAA,YACf,qBAAC,SACA;AAAA,kCAAC,OAAE,qBAAO;AAAA,cACT,KAAK;AAAA,eACP;AAAA,aACD;AAAA;AAAA;AAAA,MAVK,GAAG,KAAK,EAAE;AAAA,IAWhB;AAAA,EAEF,CAAC,GACF,GACD;AAEF","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { colors } from \"@dhis2/ui\";\nimport React from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTooltip,\n} from \"react-leaflet\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { CustomBoundaryLayer as BoundaryLayerInterface } from \"../../interfaces/index.js\";\nimport { useBoundaryData } from \"./hooks/useBoundaryData.js\";\n\nexport const defaultStyle = {\n\tweight: 1,\n\tcolor: colors.grey900,\n\tfillColor: colors.grey900,\n\tfillOpacity: 0.0,\n};\nexport const highlightStyle = {\n\tweight: 2,\n\tcolor: colors.grey900,\n\tdashArray: \"\",\n\tfillOpacity: 0.1,\n};\n\nexport default function BoundaryLayer(props: BoundaryLayerInterface) {\n\tconst { enabled, customEventHandlers, onLayerClick } = props ?? {};\n\tconst orgUnits = useBoundaryData();\n\n\treturn (\n\t\t<LayersControl.Overlay checked={enabled} name={i18n.t(\"Boundaries\")}>\n\t\t\t<LayerGroup>\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<GeoJSON\n\t\t\t\t\t\t\tdata={area.geoJSON}\n\t\t\t\t\t\t\tinteractive\n\t\t\t\t\t\t\teventHandlers={{\n\t\t\t\t\t\t\t\tmouseover: (e) =>\n\t\t\t\t\t\t\t\t\thighlightFeature(e, highlightStyle),\n\t\t\t\t\t\t\t\tmouseout: (e) =>\n\t\t\t\t\t\t\t\t\tresetHighlight(e, defaultStyle),\n\t\t\t\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\t\t\t\tonLayerClick(e, { orgUnit: area });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tpathOptions={defaultStyle}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t\t\t\t\t<Popup minWidth={80}>\n\t\t\t\t\t\t\t\t<h3>{area.name}</h3>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<b>Level: </b>\n\t\t\t\t\t\t\t\t\t{area.level}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Popup>\n\t\t\t\t\t\t</GeoJSON>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
@@ -8,10 +8,22 @@ function LegendCardHeader({
8
8
  collapsible,
9
9
  onCollapse
10
10
  }) {
11
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "row w-100 space-between align-items-center", children: [
12
- /* @__PURE__ */ jsxRuntime.jsx("h4", { style: { margin: 0 }, className: "legend-header", children: title }),
13
- collapsible && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: onCollapse, children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconLaunch16, {}) })
14
- ] });
11
+ return /* @__PURE__ */ jsxRuntime.jsxs(
12
+ "div",
13
+ {
14
+ style: {
15
+ display: "flex",
16
+ width: "100%",
17
+ justifyContent: "space-between",
18
+ alignItems: "center",
19
+ padding: 8
20
+ },
21
+ children: [
22
+ /* @__PURE__ */ jsxRuntime.jsx("h4", { style: { margin: 0 }, className: "legend-header", children: title }),
23
+ collapsible && /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: onCollapse, children: /* @__PURE__ */ jsxRuntime.jsx(ui.IconLaunch16, {}) })
24
+ ]
25
+ }
26
+ );
15
27
  }
16
28
 
17
29
  module.exports = LegendCardHeader;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":"AAaE,SACC,KADD;AAbF,SAAS,oBAAoB;AAGd,SAAR,iBAAkC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,SACC,qBAAC,SAAI,WAAU,8CACd;AAAA,wBAAC,QAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAU,iBAClC,iBACF;AAAA,IACC,eACA,oBAAC,SAAI,SAAS,YACb,8BAAC,gBAAa,GACf;AAAA,KAEF;AAEF","sourcesContent":["import { IconLaunch16 } from \"@dhis2/ui\";\nimport React from \"react\";\n\nexport default function LegendCardHeader({\n\ttitle,\n\tcollapsible,\n\tonCollapse,\n}: {\n\ttitle: string;\n\tonCollapse?: () => void;\n\tcollapsible?: boolean;\n}) {\n\treturn (\n\t\t<div className=\"row w-100 space-between align-items-center\">\n\t\t\t<h4 style={{ margin: 0 }} className=\"legend-header\">\n\t\t\t\t{title}\n\t\t\t</h4>\n\t\t\t{collapsible && (\n\t\t\t\t<div onClick={onCollapse}>\n\t\t\t\t\t<IconLaunch16 />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/components/LegendCardHeader/index.tsx"],"names":[],"mappings":"AAaE,SASC,KATD;AAbF,SAAS,oBAAoB;AAGd,SAAR,iBAAkC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,SAAS;AAAA,MACV;AAAA,MAEA;AAAA,4BAAC,QAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAU,iBAClC,iBACF;AAAA,QACC,eACA,oBAAC,SAAI,SAAS,YACb,8BAAC,gBAAa,GACf;AAAA;AAAA;AAAA,EAEF;AAEF","sourcesContent":["import { IconLaunch16 } from \"@dhis2/ui\";\nimport React from \"react\";\n\nexport default function LegendCardHeader({\n\ttitle,\n\tcollapsible,\n\tonCollapse,\n}: {\n\ttitle: string;\n\tonCollapse?: () => void;\n\tcollapsible?: boolean;\n}) {\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tpadding: 8,\n\t\t\t}}\n\t\t>\n\t\t\t<h4 style={{ margin: 0 }} className=\"legend-header\">\n\t\t\t\t{title}\n\t\t\t</h4>\n\t\t\t{collapsible && (\n\t\t\t\t<div onClick={onCollapse}>\n\t\t\t\t\t<IconLaunch16 />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
@@ -175,14 +175,25 @@ function LegendArea({
175
175
  layers.filter((layer) => layer.enabled).map(getLegendComponent)
176
176
  );
177
177
  const { position, collapsible } = legendConfig ?? {};
178
- return /* @__PURE__ */ jsxRuntime.jsx(index_js.CustomControl, { position, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "column gap-16 align-items-end", children: legends?.map((legend, index) => /* @__PURE__ */ jsxRuntime.jsx(
179
- Legend,
178
+ return /* @__PURE__ */ jsxRuntime.jsx(index_js.CustomControl, { position, children: /* @__PURE__ */ jsxRuntime.jsx(
179
+ "div",
180
180
  {
181
- collapsible: collapsible ?? true,
182
- children: legend
183
- },
184
- `${index}-map-legend`
185
- )) }) });
181
+ style: {
182
+ display: "flex",
183
+ flexDirection: "column",
184
+ gap: 16,
185
+ alignItems: "flex-end"
186
+ },
187
+ children: legends?.map((legend, index) => /* @__PURE__ */ jsxRuntime.jsx(
188
+ Legend,
189
+ {
190
+ collapsible: collapsible ?? true,
191
+ children: legend
192
+ },
193
+ `${index}-map-legend`
194
+ ))
195
+ }
196
+ ) });
186
197
  }
187
198
 
188
199
  module.exports = LegendArea;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/index.tsx"],"names":[],"mappings":"AA0BS,cAkGP,YAlGO;AA1BT,SAAS,QAAQ,cAAc,QAAQ,cAAc;AAErD,SAAS,SAAS,YAAY;AAC9B,OAAO,SAAS,WAAW,QAAQ,gBAAgB;AAEnD,SAAS,qBAAqB;AAC9B;AAAA,EAKC;AAAA,OACM;AACP,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B,OAAO,aAAa;AACpB,SAAS,qBAAqB;AAE9B,MAAM,iBAAiB;AAEvB,SAAS,mBACR,OACC;AACD,MAAI,MAAM,SAAS,SAAS;AAC3B,WAAO,oBAAC,eAAY,MAAM,MAAM,OAAO;AAAA,EACxC;AAEA,MAAI,8BAA8B,SAAS,MAAM,IAAI,GAAG;AACvD,WACC;AAAA,MAAC;AAAA;AAAA,QACA,MAAM,MAAM,QAAQ;AAAA,QACpB;AAAA;AAAA,IACD;AAAA,EAEF;AAEA,QAAM,EAAE,MAAM,SAAS,SAAS,UAAU,MAAM,MAAM,QAAQ,IAC5D,SAAiC,CAAC;AAEpC,MAAI,CAAC,WAAW,CAAC,SAAS;AACzB,WAAO;AAAA,EACR;AACA,UAAQ,MAAM;AAAA,IACb,KAAK;AACJ,aACC;AAAA,QAAC;AAAA;AAAA,UACA,QACE,OAA6B,UAAU;AAAA,YACvC,KAAK;AAAA,YACL,KAAK;AAAA,UACN;AAAA,UAED,SAAS,WAAW,CAAC;AAAA,UACrB,MAAM,QAAQ,SAAS;AAAA,UACvB;AAAA,UACA,UAAU,KAAK,IAAI,GAAG,YAAY;AAAA;AAAA,MACnC;AAAA,IAEF,KAAK;AACJ,aACC;AAAA,QAAC;AAAA;AAAA,UACA,SAAS,WAAW,CAAC;AAAA,UACrB,MAAM,QAAQ,SAAS;AAAA,UACvB;AAAA,UACA,UAAU,KAAK,IAAI,GAAG,YAAY;AAAA;AAAA,MACnC;AAAA,EAEH;AACD;AAEA,SAAS,oBAAoB;AAAA,EAC5B;AAAA,EACA;AACD,GAGG;AACF,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,eAAe,OAAY,IAAI;AACrC,QAAM,gBAAgB,OAAY,IAAI;AACtC,QAAM,MAAM,OAAuB,IAAI;AAEvC,QAAM,eAAe,EAAE,MAAM,OAAO;AACpC,QAAM,iBAAiB;AAAA,IACtB,MAAM;AAAA,IACN,SAAS;AAAA,MACR,QAAQ,CAAC,GAAG,cAAc;AAAA,IAC3B;AAAA,EACD;AAEA,QAAM,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,SAAS,EAAE,aAAa,KAAK;AAAA,EAC9B;AAEA,QAAM,cAAc,MAAM;AACzB,iBAAa,cAAc,OAAO;AAElC,iBAAa,UAAU,WAAW,MAAM;AACvC,qBAAe,IAAI;AAAA,IACpB,GAAG,SAAS;AAAA,EACb;AAEA,QAAM,aAAa,MAAM;AACxB,iBAAa,aAAa,OAAO;AAEjC,kBAAc,UAAU,WAAW,MAAM;AACxC,qBAAe,KAAK;AAAA,IACrB,GAAG,UAAU;AAAA,EACd;AAEA;AAAA,IACC,MAAM,MAAM;AACX,mBAAa,aAAa,OAAO;AACjC,mBAAa,cAAc,OAAO;AAAA,IACnC;AAAA,IACA,CAAC;AAAA,EACF;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG;AAAA,MAC/B,WAAU;AAAA,MAEV;AAAA,4BAAC,gBAAa;AAAA,QACb,eACA;AAAA,UAAC;AAAA;AAAA,YAGA,WAAW,QAAQ,aAAa;AAAA,YAEhC;AAAA,cAAC;AAAA;AAAA,gBACA,WAAW,QAAQ,aAAa;AAAA,gBAChC,WAAW;AAAA,gBAGX,WAAW,CAAC,gBAAgB,cAAc,YAAY;AAAA,gBAEtD;AAAA,kBAAC;AAAA;AAAA,oBACA,OAAO;AAAA,sBACN,iBAAiB,GAAG,OAAO,OAAO;AAAA,sBAClC,cAAc;AAAA,sBACd,OAAO,GAAG,OAAO,KAAK;AAAA,sBACtB,SAAS;AAAA,oBACV;AAAA,oBACA,aAAW;AAAA,oBAEV;AAAA;AAAA,gBACF;AAAA;AAAA,YACD;AAAA;AAAA,QACD;AAAA;AAAA;AAAA,EAEF;AAEF;AAEA,SAAS,OAAO;AAAA,EACf;AAAA,EACA;AACD,GAGG;AACF,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,WAAW;AACtD,QAAM,cAAc,cAAc;AAClC,QAAM,aAAa,MAAM;AACxB,QAAI,aAAa;AAChB,mBAAa,CAAC,cAAc,CAAC,SAAS;AAAA,IACvC;AAAA,EACD;AAEA,QAAM,OAAO,KAAK,MAAM,SAAS,QAAQ,QAAQ,CAAyB,GACvE,MAAM;AAET,QAAM,iBAAiB,aAAa,CAAC;AAErC,SACC,oBAAC,SAAI,WAAU,SACb,2BACA,oBAAC,uBAAoB,MAAY,YAAwB,IAEzD,MAAM,SAAS;AAAA,IAAI;AAAA,IAAU,CAAC,UAC7B,MAAM,aAAa,OAAO,EAAE,aAAa,WAAW,CAAC;AAAA,EACtD,GAEF;AAEF;AAEe,SAAR,WAA4B;AAAA,EAClC;AAAA,EACA,SAAS;AACV,GAMG;AACF,QAAM,UAAyB;AAAA,IAC9B,OAAO,OAAO,CAAC,UAAU,MAAM,OAAO,EAAE,IAAI,kBAAkB;AAAA,EAC/D;AACA,QAAM,EAAE,UAAU,YAAY,IAAI,gBAAgB,CAAC;AAEnD,SACC,oBAAC,iBAAc,UACd,8BAAC,SAAI,WAAU,iCACb,mBAAS,IAAI,CAAC,QAAa,UAC3B;AAAA,IAAC;AAAA;AAAA,MACA,aAAa,eAAe;AAAA,MAG3B;AAAA;AAAA,IAFI,GAAG,KAAK;AAAA,EAGd,CACA,GACF,GACD;AAEF","sourcesContent":["import { colors, IconLegend24, Popper, Portal } from \"@dhis2/ui\";\nimport { ControlPosition } from \"leaflet\";\nimport { compact, head } from \"lodash\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { MapLegendConfig } from \"../../../MapArea/interfaces/index.js\";\nimport { CustomControl } from \"../../../MapControls/components/CustomControl/index.js\";\nimport {\n\tCustomBubbleLayer,\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tSUPPORTED_EARTH_ENGINE_LAYERS,\n} from \"../../interfaces/index.js\";\nimport PointLegend from \"../PointLayer/components/PointLegend/index.js\";\nimport BubbleLegend from \"../ThematicLayer/components/Bubble/components/BubbleLegend/index.js\";\nimport ChoroplethLegend from \"../ThematicLayer/components/Choropleth/components/ChoroplethLegend.js\";\nimport EarthEngineLegend from \"../GoogleEngineLayer/components/EarthEngineLegend.js\";\nimport classes from \"./LegendArea.module.css\";\nimport { usePrintMedia } from \"../../../../hooks/map.js\";\n\nconst TOOLTIP_OFFSET = 4;\n\nfunction getLegendComponent(\n\tlayer: CustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer,\n) {\n\tif (layer.type === \"point\") {\n\t\treturn <PointLegend name={layer.label} />;\n\t}\n\n\tif (SUPPORTED_EARTH_ENGINE_LAYERS.includes(layer.type)) {\n\t\treturn (\n\t\t\t<EarthEngineLegend\n\t\t\t\tname={layer.name ?? \"\"}\n\t\t\t\tlayer={layer as CustomGoogleEngineLayer}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst { type, enabled, control, dataItem, name, data, legends } =\n\t\t(layer as CustomThematicLayer) ?? {};\n\n\tif (!enabled || !control) {\n\t\treturn null;\n\t}\n\tswitch (type) {\n\t\tcase \"bubble\":\n\t\t\treturn (\n\t\t\t\t<BubbleLegend\n\t\t\t\t\tradius={\n\t\t\t\t\t\t(layer as CustomBubbleLayer)?.radius ?? {\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"choropleth\":\n\t\t\treturn (\n\t\t\t\t<ChoroplethLegend\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t}\n}\n\nfunction CollapsedLegendIcon({\n\tonCollapse,\n\tname,\n}: {\n\tname: string;\n\tonCollapse: () => void;\n}) {\n\tconst openDelay = 200;\n\tconst closeDelay = 200;\n\tconst [openTooltip, setOpenTooltip] = useState(false);\n\tconst openTimerRef = useRef<any>(null);\n\tconst closeTimerRef = useRef<any>(null);\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst hideModifier = { name: \"hide\" };\n\tconst offsetModifier = {\n\t\tname: \"offset\",\n\t\toptions: {\n\t\t\toffset: [0, TOOLTIP_OFFSET],\n\t\t},\n\t};\n\n\tconst flipModifier = {\n\t\tname: \"flip\",\n\t\toptions: { altBoundary: true },\n\t};\n\n\tconst onMouseOver = () => {\n\t\tclearTimeout(closeTimerRef.current);\n\n\t\topenTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(true);\n\t\t}, openDelay);\n\t};\n\n\tconst onMouseOut = () => {\n\t\tclearTimeout(openTimerRef.current);\n\n\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(false);\n\t\t}, closeDelay);\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tclearTimeout(openTimerRef.current);\n\t\t\tclearTimeout(closeTimerRef.current);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tonMouseOver={onMouseOver}\n\t\t\tonMouseOut={onMouseOut}\n\t\t\tonClick={onCollapse}\n\t\t\tstyle={{ width: 28, height: 28 }}\n\t\t\tclassName=\"legend-card collapsed\"\n\t\t>\n\t\t\t<IconLegend24 />\n\t\t\t{openTooltip && (\n\t\t\t\t<Portal\n\t\t\t\t\t/*\n\t\t\t // @ts-ignore */\n\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t>\n\t\t\t\t\t<Popper\n\t\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t\t\treference={ref}\n\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\tmodifiers={[offsetModifier, flipModifier, hideModifier]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: `${colors.grey900}`,\n\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\tcolor: `${colors.white}`,\n\t\t\t\t\t\t\t\tpadding: \"4px 6px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-test={`content`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popper>\n\t\t\t\t</Portal>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction Legend({\n\tchildren,\n\tcollapsible,\n}: {\n\tchildren: React.ReactElement;\n\tcollapsible: boolean;\n}) {\n\tconst [collapsed, setCollapsed] = useState(collapsible);\n\tconst inPrintMode = usePrintMedia();\n\tconst onCollapse = () => {\n\t\tif (collapsible) {\n\t\t\tsetCollapsed((prevState) => !prevState);\n\t\t}\n\t};\n\n\tconst name = head(React.Children.toArray(children) as React.ReactElement[])\n\t\t?.props.name;\n\n\tconst shouldCollapse = collapsed && !inPrintMode;\n\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t{shouldCollapse ? (\n\t\t\t\t<CollapsedLegendIcon name={name} onCollapse={onCollapse} />\n\t\t\t) : (\n\t\t\t\tReact.Children.map(children, (child) =>\n\t\t\t\t\tReact.cloneElement(child, { collapsible, onCollapse }),\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default function LegendArea({\n\tlayers,\n\tlegends: legendConfig,\n}: {\n\tlayers: Array<\n\t\tCustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer\n\t>;\n\tposition: ControlPosition;\n\tlegends?: MapLegendConfig;\n}) {\n\tconst legends: JSX.Element[] = compact(\n\t\tlayers.filter((layer) => layer.enabled).map(getLegendComponent),\n\t);\n\tconst { position, collapsible } = legendConfig ?? {};\n\n\treturn (\n\t\t<CustomControl position={position}>\n\t\t\t<div className=\"column gap-16 align-items-end\">\n\t\t\t\t{legends?.map((legend: any, index) => (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\tcollapsible={collapsible ?? true}\n\t\t\t\t\t\tkey={`${index}-map-legend`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Legend>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</CustomControl>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { colors, IconLegend24, Popper, Portal } from \"@dhis2/ui\";\nimport { ControlPosition } from \"leaflet\";\nimport { compact, head } from \"lodash\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { MapLegendConfig } from \"../../../MapArea/interfaces/index.js\";\nimport { CustomControl } from \"../../../MapControls/components/CustomControl/index.js\";\nimport {\n\tCustomBubbleLayer,\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tSUPPORTED_EARTH_ENGINE_LAYERS,\n} from \"../../interfaces/index.js\";\nimport PointLegend from \"../PointLayer/components/PointLegend/index.js\";\nimport BubbleLegend from \"../ThematicLayer/components/Bubble/components/BubbleLegend/index.js\";\nimport ChoroplethLegend from \"../ThematicLayer/components/Choropleth/components/ChoroplethLegend.js\";\nimport EarthEngineLegend from \"../GoogleEngineLayer/components/EarthEngineLegend.js\";\nimport classes from \"./LegendArea.module.css\";\nimport { usePrintMedia } from \"../../../../hooks/map.js\";\n\nconst TOOLTIP_OFFSET = 4;\n\nfunction getLegendComponent(\n\tlayer: CustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer,\n) {\n\tif (layer.type === \"point\") {\n\t\treturn <PointLegend name={layer.label} />;\n\t}\n\n\tif (SUPPORTED_EARTH_ENGINE_LAYERS.includes(layer.type)) {\n\t\treturn (\n\t\t\t<EarthEngineLegend\n\t\t\t\tname={layer.name ?? \"\"}\n\t\t\t\tlayer={layer as CustomGoogleEngineLayer}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst { type, enabled, control, dataItem, name, data, legends } =\n\t\t(layer as CustomThematicLayer) ?? {};\n\n\tif (!enabled || !control) {\n\t\treturn null;\n\t}\n\tswitch (type) {\n\t\tcase \"bubble\":\n\t\t\treturn (\n\t\t\t\t<BubbleLegend\n\t\t\t\t\tradius={\n\t\t\t\t\t\t(layer as CustomBubbleLayer)?.radius ?? {\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"choropleth\":\n\t\t\treturn (\n\t\t\t\t<ChoroplethLegend\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t}\n}\n\nfunction CollapsedLegendIcon({\n\tonCollapse,\n\tname,\n}: {\n\tname: string;\n\tonCollapse: () => void;\n}) {\n\tconst openDelay = 200;\n\tconst closeDelay = 200;\n\tconst [openTooltip, setOpenTooltip] = useState(false);\n\tconst openTimerRef = useRef<any>(null);\n\tconst closeTimerRef = useRef<any>(null);\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst hideModifier = { name: \"hide\" };\n\tconst offsetModifier = {\n\t\tname: \"offset\",\n\t\toptions: {\n\t\t\toffset: [0, TOOLTIP_OFFSET],\n\t\t},\n\t};\n\n\tconst flipModifier = {\n\t\tname: \"flip\",\n\t\toptions: { altBoundary: true },\n\t};\n\n\tconst onMouseOver = () => {\n\t\tclearTimeout(closeTimerRef.current);\n\n\t\topenTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(true);\n\t\t}, openDelay);\n\t};\n\n\tconst onMouseOut = () => {\n\t\tclearTimeout(openTimerRef.current);\n\n\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(false);\n\t\t}, closeDelay);\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tclearTimeout(openTimerRef.current);\n\t\t\tclearTimeout(closeTimerRef.current);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tonMouseOver={onMouseOver}\n\t\t\tonMouseOut={onMouseOut}\n\t\t\tonClick={onCollapse}\n\t\t\tstyle={{ width: 28, height: 28 }}\n\t\t\tclassName=\"legend-card collapsed\"\n\t\t>\n\t\t\t<IconLegend24 />\n\t\t\t{openTooltip && (\n\t\t\t\t<Portal\n\t\t\t\t\t/*\n\t\t\t // @ts-ignore */\n\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t>\n\t\t\t\t\t<Popper\n\t\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t\t\treference={ref}\n\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\tmodifiers={[offsetModifier, flipModifier, hideModifier]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: `${colors.grey900}`,\n\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\tcolor: `${colors.white}`,\n\t\t\t\t\t\t\t\tpadding: \"4px 6px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-test={`content`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popper>\n\t\t\t\t</Portal>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction Legend({\n\tchildren,\n\tcollapsible,\n}: {\n\tchildren: React.ReactElement;\n\tcollapsible: boolean;\n}) {\n\tconst [collapsed, setCollapsed] = useState(collapsible);\n\tconst inPrintMode = usePrintMedia();\n\tconst onCollapse = () => {\n\t\tif (collapsible) {\n\t\t\tsetCollapsed((prevState) => !prevState);\n\t\t}\n\t};\n\n\tconst name = head(React.Children.toArray(children) as React.ReactElement[])\n\t\t?.props.name;\n\n\tconst shouldCollapse = collapsed && !inPrintMode;\n\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t{shouldCollapse ? (\n\t\t\t\t<CollapsedLegendIcon name={name} onCollapse={onCollapse} />\n\t\t\t) : (\n\t\t\t\tReact.Children.map(children, (child) =>\n\t\t\t\t\tReact.cloneElement(child, { collapsible, onCollapse }),\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default function LegendArea({\n\tlayers,\n\tlegends: legendConfig,\n}: {\n\tlayers: Array<\n\t\tCustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer\n\t>;\n\tposition: ControlPosition;\n\tlegends?: MapLegendConfig;\n}) {\n\tconst legends: JSX.Element[] = compact(\n\t\tlayers.filter((layer) => layer.enabled).map(getLegendComponent),\n\t);\n\tconst { position, collapsible } = legendConfig ?? {};\n\n\treturn (\n\t\t<CustomControl position={position}>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 16,\n\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legends?.map((legend: any, index) => (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\tcollapsible={collapsible ?? true}\n\t\t\t\t\t\tkey={`${index}-map-legend`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Legend>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</CustomControl>\n\t);\n}\n"]}
@@ -7,10 +7,12 @@ var react = require('react');
7
7
  var helpers_js = require('../../../../../../utils/helpers.js');
8
8
  var LegendCardHeader = require('../../../LegendArea/components/LegendCardHeader/index.js');
9
9
  var index_js = require('../../hooks/index.js');
10
+ var i18n = require('@dhis2/d2-i18n');
10
11
 
11
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
13
 
13
14
  var LegendCardHeader__default = /*#__PURE__*/_interopDefault(LegendCardHeader);
15
+ var i18n__default = /*#__PURE__*/_interopDefault(i18n);
14
16
 
15
17
  function PointLegends({
16
18
  orgUnitGroups,
@@ -21,12 +23,23 @@ function PointLegends({
21
23
  return /* @__PURE__ */ jsxRuntime.jsxs(
22
24
  "div",
23
25
  {
24
- style: { minWidth: 100, alignItems: "flex-start" },
25
- className: "w-100 p-8 legend-list column",
26
+ style: {
27
+ minWidth: 100,
28
+ alignItems: "flex-start",
29
+ width: "100%",
30
+ padding: 8,
31
+ display: "flex",
32
+ flexDirection: "column"
33
+ },
26
34
  children: [
27
35
  icon && /* @__PURE__ */ jsxRuntime.jsxs(
28
36
  "div",
29
37
  {
38
+ style: {
39
+ display: "flex",
40
+ gap: 16,
41
+ alignItems: "center"
42
+ },
30
43
  className: "row gap-16 align-items-center",
31
44
  children: [
32
45
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -77,7 +90,7 @@ function PointLegend({ collapsible, onCollapse }, ref) {
77
90
  {
78
91
  collapsible,
79
92
  onCollapse,
80
- title: label ?? "Points"
93
+ title: label ?? i18n__default.default.t("Points")
81
94
  }
82
95
  ),
83
96
  /* @__PURE__ */ jsxRuntime.jsx(ui.Divider, { margin: "0" }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.tsx"],"names":["name"],"mappings":"AAwBI,SAIC,KAJD;AAxBJ,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAgB,kBAAkB;AAClC,SAAS,kBAAkB;AAC3B,OAAO,sBAAsB;AAC7B,SAAS,qBAAqB;AAE9B,SAAS,aAAa;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,QAAM,EAAE,QAAQ,IAAI,UAAU;AAE9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO,EAAE,UAAU,KAAK,YAAY,aAAa;AAAA,MACjD,WAAU;AAAA,MAET;AAAA,gBACA;AAAA,UAAC;AAAA;AAAA,YAEA,WAAU;AAAA,YAEV;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACA,QAAQ;AAAA,kBACR,OAAO;AAAA,kBACP,KAAK,GAAG,IAAI;AAAA,kBACZ,KAAK,WAAW,MAAM,EAAE,QAAQ,CAAC;AAAA;AAAA,cAClC;AAAA,cACA,oBAAC,OAAG,iBAAM;AAAA;AAAA;AAAA,UATL,GAAG,IAAI;AAAA,QAUb;AAAA,QAEA,cAAc,IAAI,CAAC,EAAE,MAAAA,OAAM,OAAO,MAAM;AACxC,iBACC;AAAA,YAAC;AAAA;AAAA,cAEA,WAAU;AAAA,cAEV;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACA,QAAQ;AAAA,oBACR,OAAO;AAAA,oBACP,KAAK,GAAGA,KAAI;AAAA,oBACZ,KAAK,WAAW,UAAU,IAAI,EAAE,QAAQ,CAAC;AAAA;AAAA,gBAC1C;AAAA,gBACA,oBAAC,OAAG,UAAAA,OAAK;AAAA;AAAA;AAAA,YATJ,GAAGA,KAAI;AAAA,UAUb;AAAA,QAEF,CAAC;AAAA;AAAA;AAAA,EACF;AAEF;AAEA,SAAS,YACR,EAAE,aAAa,WAAW,GAC1B,KACC;AACD,QAAM,aAAa,cAAc;AACjC,QAAM,EAAE,OAAO,MAAM,IAAI,cAAc,CAAC;AAExC,SACC,qBAAC,SAAI,KAAU,WAAU,eACxB;AAAA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,SAAS;AAAA;AAAA,IACjB;AAAA,IACA,oBAAC,WAAQ,QAAQ,KAAK;AAAA,IACtB;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,eAAe,OAAO,iBAAiB,CAAC;AAAA,QACxC,MAAM,OAAO;AAAA;AAAA,IACd;AAAA,KACD;AAEF;AAEA,IAAO,sBAAQ,WAAW,WAAW","sourcesContent":["import { useConfig } from \"@dhis2/app-runtime\";\nimport { Divider } from \"@dhis2/ui\";\nimport React, { forwardRef } from \"react\";\nimport { getIconUrl } from \"../../../../../../utils/helpers.js\";\nimport LegendCardHeader from \"../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { usePointLayer } from \"../../hooks/index.js\";\n\nfunction PointLegends({\n\torgUnitGroups,\n\ticon,\n\tlabel,\n}: {\n\torgUnitGroups: { name: string; symbol: string }[];\n\ticon?: string;\n\tlabel?: string;\n}) {\n\tconst { baseUrl } = useConfig();\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ minWidth: 100, alignItems: \"flex-start\" }}\n\t\t\tclassName=\"w-100 p-8 legend-list column\"\n\t\t>\n\t\t\t{icon && (\n\t\t\t\t<div\n\t\t\t\t\tkey={`${icon}-legend`}\n\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\theight={20}\n\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\tsrc={getIconUrl(icon, { baseUrl })}\n\t\t\t\t\t/>\n\t\t\t\t\t<p>{label}</p>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{orgUnitGroups.map(({ name, symbol }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={`${name}-legend`}\n\t\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\t\tsrc={getIconUrl(symbol ?? \"\", { baseUrl })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<p>{name}</p>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nfunction PointLegend(\n\t{ collapsible, onCollapse }: any,\n\tref: React.LegacyRef<HTMLDivElement>,\n) {\n\tconst pointLayer = usePointLayer();\n\tconst { label, style } = pointLayer ?? {};\n\n\treturn (\n\t\t<div ref={ref} className=\"legend-card\">\n\t\t\t<LegendCardHeader\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t\ttitle={label ?? \"Points\"}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<PointLegends\n\t\t\t\tlabel={label}\n\t\t\t\torgUnitGroups={style?.orgUnitGroups ?? []}\n\t\t\t\ticon={style?.icon}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(PointLegend);\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.tsx"],"names":["name"],"mappings":"AA+BI,SASC,KATD;AA/BJ,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAgB,kBAAkB;AAClC,SAAS,kBAAkB;AAC3B,OAAO,sBAAsB;AAC7B,SAAS,qBAAqB;AAC9B,OAAO,UAAU;AAEjB,SAAS,aAAa;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,QAAM,EAAE,QAAQ,IAAI,UAAU;AAE9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAO;AAAA,QACN,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,eAAe;AAAA,MAChB;AAAA,MAEC;AAAA,gBACA;AAAA,UAAC;AAAA;AAAA,YAEA,OAAO;AAAA,cACN,SAAS;AAAA,cACT,KAAK;AAAA,cACL,YAAY;AAAA,YACb;AAAA,YACA,WAAU;AAAA,YAEV;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACA,QAAQ;AAAA,kBACR,OAAO;AAAA,kBACP,KAAK,GAAG,IAAI;AAAA,kBACZ,KAAK,WAAW,MAAM,EAAE,QAAQ,CAAC;AAAA;AAAA,cAClC;AAAA,cACA,oBAAC,OAAG,iBAAM;AAAA;AAAA;AAAA,UAdL,GAAG,IAAI;AAAA,QAeb;AAAA,QAEA,cAAc,IAAI,CAAC,EAAE,MAAAA,OAAM,OAAO,MAAM;AACxC,iBACC;AAAA,YAAC;AAAA;AAAA,cAEA,WAAU;AAAA,cAEV;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACA,QAAQ;AAAA,oBACR,OAAO;AAAA,oBACP,KAAK,GAAGA,KAAI;AAAA,oBACZ,KAAK,WAAW,UAAU,IAAI,EAAE,QAAQ,CAAC;AAAA;AAAA,gBAC1C;AAAA,gBACA,oBAAC,OAAG,UAAAA,OAAK;AAAA;AAAA;AAAA,YATJ,GAAGA,KAAI;AAAA,UAUb;AAAA,QAEF,CAAC;AAAA;AAAA;AAAA,EACF;AAEF;AAEA,SAAS,YACR,EAAE,aAAa,WAAW,GAC1B,KACC;AACD,QAAM,aAAa,cAAc;AACjC,QAAM,EAAE,OAAO,MAAM,IAAI,cAAc,CAAC;AAExC,SACC,qBAAC,SAAI,KAAU,WAAU,eACxB;AAAA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,SAAS,KAAK,EAAE,QAAQ;AAAA;AAAA,IAChC;AAAA,IACA,oBAAC,WAAQ,QAAQ,KAAK;AAAA,IACtB;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,eAAe,OAAO,iBAAiB,CAAC;AAAA,QACxC,MAAM,OAAO;AAAA;AAAA,IACd;AAAA,KACD;AAEF;AAEA,IAAO,sBAAQ,WAAW,WAAW","sourcesContent":["import { useConfig } from \"@dhis2/app-runtime\";\nimport { Divider } from \"@dhis2/ui\";\nimport React, { forwardRef } from \"react\";\nimport { getIconUrl } from \"../../../../../../utils/helpers.js\";\nimport LegendCardHeader from \"../../../LegendArea/components/LegendCardHeader/index.js\";\nimport { usePointLayer } from \"../../hooks/index.js\";\nimport i18n from \"@dhis2/d2-i18n\";\n\nfunction PointLegends({\n\torgUnitGroups,\n\ticon,\n\tlabel,\n}: {\n\torgUnitGroups: { name: string; symbol: string }[];\n\ticon?: string;\n\tlabel?: string;\n}) {\n\tconst { baseUrl } = useConfig();\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tminWidth: 100,\n\t\t\t\talignItems: \"flex-start\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tpadding: 8,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t}}\n\t\t>\n\t\t\t{icon && (\n\t\t\t\t<div\n\t\t\t\t\tkey={`${icon}-legend`}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\theight={20}\n\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\tsrc={getIconUrl(icon, { baseUrl })}\n\t\t\t\t\t/>\n\t\t\t\t\t<p>{label}</p>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{orgUnitGroups.map(({ name, symbol }) => {\n\t\t\t\treturn (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={`${name}-legend`}\n\t\t\t\t\t\tclassName=\"row gap-16 align-items-center\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\theight={20}\n\t\t\t\t\t\t\twidth={20}\n\t\t\t\t\t\t\talt={`${name}-icon`}\n\t\t\t\t\t\t\tsrc={getIconUrl(symbol ?? \"\", { baseUrl })}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<p>{name}</p>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n\nfunction PointLegend(\n\t{ collapsible, onCollapse }: any,\n\tref: React.LegacyRef<HTMLDivElement>,\n) {\n\tconst pointLayer = usePointLayer();\n\tconst { label, style } = pointLayer ?? {};\n\n\treturn (\n\t\t<div ref={ref} className=\"legend-card\">\n\t\t\t<LegendCardHeader\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t\ttitle={label ?? i18n.t(\"Points\")}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<PointLegends\n\t\t\t\tlabel={label}\n\t\t\t\torgUnitGroups={style?.orgUnitGroups ?? []}\n\t\t\t\ticon={style?.icon}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(PointLegend);\n"]}
@@ -15,7 +15,14 @@ var L__default = /*#__PURE__*/_interopDefault(L);
15
15
 
16
16
  function PointLayer() {
17
17
  const pointLayer = index_js.usePointLayer();
18
- const { enabled, label, points: orgUnits, style } = pointLayer ?? {};
18
+ const {
19
+ enabled,
20
+ label,
21
+ points: orgUnits,
22
+ style,
23
+ customEventHandlers,
24
+ onLayerClick
25
+ } = pointLayer ?? {};
19
26
  const { baseUrl } = appRuntime.useConfig();
20
27
  return /* @__PURE__ */ jsxRuntime.jsx(
21
28
  reactLeaflet.LayersControl.Overlay,
@@ -36,6 +43,14 @@ function PointLayer() {
36
43
  )
37
44
  });
38
45
  },
46
+ eventHandlers: {
47
+ ...customEventHandlers ?? {},
48
+ mousedown: (e) => {
49
+ if (onLayerClick) {
50
+ onLayerClick(e, { orgUnit: area });
51
+ }
52
+ }
53
+ },
39
54
  data: area.geoJSON,
40
55
  interactive: true,
41
56
  children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/PointLayer/index.tsx"],"names":[],"mappings":"AA2BM,SAeC,KAfD;AA3BN,SAAS,iBAAiB;AAC1B,OAAO,UAAU;AACjB,OAAO,OAAO;AAEd;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,SAAS,kBAAkB;AACpC,SAAS,qBAAqB;AAEvB,SAAS,aAAa;AAC5B,QAAM,aAAa,cAAc;AACjC,QAAM,EAAE,SAAS,OAAO,QAAQ,UAAU,MAAM,IAAI,cAAc,CAAC;AACnE,QAAM,EAAE,QAAQ,IAAI,UAAU;AAC9B,SACC;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACA,SAAS;AAAA,MACT,MAAM,SAAS,KAAK,EAAE,QAAQ;AAAA,MAE9B,8BAAC,cACC,oBAAU,IAAI,CAAC,SAAuB;AACtC,eACC;AAAA,UAAC;AAAA;AAAA,YACA,cAAc,CAAC,GAAG,gBAAgB;AACjC,qBAAO,EAAE,OAAO,aAAa;AAAA,gBAC5B,MAAM;AAAA,kBACL;AAAA,oBACC,KAAK,KAAK,QAAQ,OAAO;AAAA,oBACzB,EAAE,QAAQ;AAAA,kBACX;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,YACA,MAAM,KAAK;AAAA,YACX,aAAW;AAAA,YAGX;AAAA,kCAAC,WAAS,eAAK,MAAK;AAAA,cACpB,oBAAC,SAAM,UAAU,IAChB,8BAAC,QAAI,eAAK,MAAK,GAChB;AAAA;AAAA;AAAA,UALK,GAAG,KAAK,EAAE;AAAA,QAMhB;AAAA,MAEF,CAAC,GACF;AAAA;AAAA,EACD;AAEF","sourcesContent":["import { useConfig } from \"@dhis2/app-runtime\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport L from \"leaflet\";\nimport React from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTooltip,\n} from \"react-leaflet\";\nimport { PointOrgUnit } from \"../../../../interfaces/index.js\";\nimport { getIcon, getIconUrl } from \"../../../../utils/helpers.js\";\nimport { usePointLayer } from \"./hooks/index.js\";\n\nexport function PointLayer() {\n\tconst pointLayer = usePointLayer();\n\tconst { enabled, label, points: orgUnits, style } = pointLayer ?? {};\n\tconst { baseUrl } = useConfig();\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={label ?? i18n.t(\"Points\")}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t{orgUnits?.map((area: PointOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<GeoJSON\n\t\t\t\t\t\t\tpointToLayer={(_, coordinates) => {\n\t\t\t\t\t\t\t\treturn L.marker(coordinates, {\n\t\t\t\t\t\t\t\t\ticon: getIcon(\n\t\t\t\t\t\t\t\t\t\tgetIconUrl(\n\t\t\t\t\t\t\t\t\t\t\tarea.icon.icon ?? style?.icon,\n\t\t\t\t\t\t\t\t\t\t\t{ baseUrl },\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata={area.geoJSON}\n\t\t\t\t\t\t\tinteractive\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t\t\t\t\t<Popup minWidth={80}>\n\t\t\t\t\t\t\t\t<h3>{area.name}</h3>\n\t\t\t\t\t\t\t</Popup>\n\t\t\t\t\t\t</GeoJSON>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/PointLayer/index.tsx"],"names":[],"mappings":"AAkCM,SAuBC,KAvBD;AAlCN,SAAS,iBAAiB;AAC1B,OAAO,UAAU;AACjB,OAAO,OAAO;AAEd;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,SAAS,SAAS,kBAAkB;AACpC,SAAS,qBAAqB;AAEvB,SAAS,aAAa;AAC5B,QAAM,aAAa,cAAc;AACjC,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,cAAc,CAAC;AACnB,QAAM,EAAE,QAAQ,IAAI,UAAU;AAC9B,SACC;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACA,SAAS;AAAA,MACT,MAAM,SAAS,KAAK,EAAE,QAAQ;AAAA,MAE9B,8BAAC,cACC,oBAAU,IAAI,CAAC,SAAuB;AACtC,eACC;AAAA,UAAC;AAAA;AAAA,YACA,cAAc,CAAC,GAAG,gBAAgB;AACjC,qBAAO,EAAE,OAAO,aAAa;AAAA,gBAC5B,MAAM;AAAA,kBACL;AAAA,oBACC,KAAK,KAAK,QAAQ,OAAO;AAAA,oBACzB,EAAE,QAAQ;AAAA,kBACX;AAAA,gBACD;AAAA,cACD,CAAC;AAAA,YACF;AAAA,YACA,eAAe;AAAA,cACd,GAAI,uBAAuB,CAAC;AAAA,cAC5B,WAAW,CAAC,MAAM;AACjB,oBAAI,cAAc;AACjB,+BAAa,GAAG,EAAE,SAAS,KAAK,CAAC;AAAA,gBAClC;AAAA,cACD;AAAA,YACD;AAAA,YACA,MAAM,KAAK;AAAA,YACX,aAAW;AAAA,YAGX;AAAA,kCAAC,WAAS,eAAK,MAAK;AAAA,cACpB,oBAAC,SAAM,UAAU,IAChB,8BAAC,QAAI,eAAK,MAAK,GAChB;AAAA;AAAA;AAAA,UALK,GAAG,KAAK,EAAE;AAAA,QAMhB;AAAA,MAEF,CAAC,GACF;AAAA;AAAA,EACD;AAEF","sourcesContent":["import { useConfig } from \"@dhis2/app-runtime\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport L from \"leaflet\";\nimport React from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTooltip,\n} from \"react-leaflet\";\nimport { PointOrgUnit } from \"../../../../interfaces/index.js\";\nimport { getIcon, getIconUrl } from \"../../../../utils/helpers.js\";\nimport { usePointLayer } from \"./hooks/index.js\";\n\nexport function PointLayer() {\n\tconst pointLayer = usePointLayer();\n\tconst {\n\t\tenabled,\n\t\tlabel,\n\t\tpoints: orgUnits,\n\t\tstyle,\n\t\tcustomEventHandlers,\n\t\tonLayerClick,\n\t} = pointLayer ?? {};\n\tconst { baseUrl } = useConfig();\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={label ?? i18n.t(\"Points\")}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t{orgUnits?.map((area: PointOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<GeoJSON\n\t\t\t\t\t\t\tpointToLayer={(_, coordinates) => {\n\t\t\t\t\t\t\t\treturn L.marker(coordinates, {\n\t\t\t\t\t\t\t\t\ticon: getIcon(\n\t\t\t\t\t\t\t\t\t\tgetIconUrl(\n\t\t\t\t\t\t\t\t\t\t\tarea.icon.icon ?? style?.icon,\n\t\t\t\t\t\t\t\t\t\t\t{ baseUrl },\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\teventHandlers={{\n\t\t\t\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\t\t\t\tonLayerClick(e, { orgUnit: area });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata={area.geoJSON}\n\t\t\t\t\t\t\tinteractive\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t\t\t\t\t<Popup minWidth={80}>\n\t\t\t\t\t\t\t\t<h3>{area.name}</h3>\n\t\t\t\t\t\t\t</Popup>\n\t\t\t\t\t\t</GeoJSON>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
@@ -22,7 +22,9 @@ function Bubble({
22
22
  data,
23
23
  highestData,
24
24
  legends,
25
- radius
25
+ radius,
26
+ customEventHandlers,
27
+ onLayerClick
26
28
  }) {
27
29
  const { orgUnit, data: value } = data ?? {};
28
30
  const geoJSONObject = orgUnit.geoJSON;
@@ -36,7 +38,13 @@ function Bubble({
36
38
  interactive: true,
37
39
  eventHandlers: {
38
40
  mouseover: (e) => map_js.highlightFeature(e, highlightStyle),
39
- mouseout: (e) => map_js.resetHighlight(e, defaultStyle)
41
+ mouseout: (e) => map_js.resetHighlight(e, defaultStyle),
42
+ ...customEventHandlers ?? {},
43
+ mousedown: (e) => {
44
+ if (onLayerClick) {
45
+ onLayerClick(e, data);
46
+ }
47
+ }
40
48
  },
41
49
  pathOptions: {
42
50
  fillColor: map_js.getColorFromLegendSet(legends, data.data),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.tsx"],"names":[],"mappings":"AAyCE,mBAgBE,WAhBF;AAzCF,SAAS,cAAc;AAEvB,SAAS,eAAe;AACxB,SAAgB,eAAe;AAC/B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP,OAAO,mBAAmB;AAE1B,MAAM,eAAe;AAAA,EACpB,QAAQ;AACT;AACA,MAAM,iBAAiB;AAAA,EACtB,QAAQ;AACT;AAEe,SAAR,OAAwB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAKG;AACF,QAAM,EAAE,SAAS,MAAM,MAAM,IAAI,QAAQ,CAAC;AAE1C,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,SAAS,QAAQ,aAAa,EAAE,UAAU,EAAE,UAAU;AAE5D,QAAM,eAAe,QAAQ,MAAM;AAClC,YAAS,SAAS,MAAM,QAAQ,OAAO,MAAO;AAAA,EAC/C,GAAG,CAAC,QAAQ,MAAM,WAAW,CAAC;AAE9B,SACC,gCACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAW;AAAA,MACX,eAAe;AAAA,QACd,WAAW,CAAC,MAAM,iBAAiB,GAAG,cAAc;AAAA,QACpD,UAAU,CAAC,MAAM,eAAe,GAAG,YAAY;AAAA,MAChD;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,sBAAsB,SAAS,KAAK,IAAI;AAAA,QACnD,aAAa;AAAA,QACb,OAAO,OAAO;AAAA,QACd,QAAQ;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MAEA,8BAAC,iBAAc,MAAY;AAAA;AAAA,EAC5B,GACD;AAEF","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport { geoJSON } from \"leaflet\";\nimport React, { useMemo } from \"react\";\nimport { CircleMarker } from \"react-leaflet\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils/map.js\";\nimport { ThematicLayerData } from \"../../../../interfaces/index.js\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\nexport default function Bubble({\n\tdata,\n\thighestData,\n\tlegends,\n\tradius,\n}: {\n\tdata: ThematicLayerData;\n\thighestData: number;\n\tlegends: Legend[];\n\tradius?: { min: number; max: number };\n}) {\n\tconst { orgUnit, data: value } = data ?? {};\n\n\tconst geoJSONObject = orgUnit.geoJSON;\n\tconst center = geoJSON(geoJSONObject).getBounds().getCenter();\n\n\tconst circleRadius = useMemo(() => {\n\t\treturn ((value ?? 0) * (radius?.max ?? 50)) / highestData;\n\t}, [radius, data, highestData]);\n\n\treturn (\n\t\t<>\n\t\t\t<CircleMarker\n\t\t\t\tinteractive\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t}}\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: getColorFromLegendSet(legends, data.data),\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tradius={circleRadius}\n\t\t\t\tcenter={center}\n\t\t\t>\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</CircleMarker>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../../../../../src/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.tsx"],"names":[],"mappings":"AA2DE,mBAsBE,WAtBF;AA3DF,SAAS,cAAc;AAEvB;AAAA,EACC;AAAA,OAGM;AACP,SAAgB,eAAe;AAC/B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAKP,OAAO,mBAAmB;AAG1B,MAAM,eAAe;AAAA,EACpB,QAAQ;AACT;AACA,MAAM,iBAAiB;AAAA,EACtB,QAAQ;AACT;AAQe,SAAR,OAAwB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAOG;AACF,QAAM,EAAE,SAAS,MAAM,MAAM,IAAI,QAAQ,CAAC;AAE1C,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,SAAS,QAAQ,aAAa,EAAE,UAAU,EAAE,UAAU;AAE5D,QAAM,eAAe,QAAQ,MAAM;AAClC,YAAS,SAAS,MAAM,QAAQ,OAAO,MAAO;AAAA,EAC/C,GAAG,CAAC,QAAQ,MAAM,WAAW,CAAC;AAE9B,SACC,gCACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAW;AAAA,MACX,eAAe;AAAA,QACd,WAAW,CAAC,MAAM,iBAAiB,GAAG,cAAc;AAAA,QACpD,UAAU,CAAC,MAAM,eAAe,GAAG,YAAY;AAAA,QAC/C,GAAI,uBAAuB,CAAC;AAAA,QAC5B,WAAW,CAAC,MAAM;AACjB,cAAI,cAAc;AACjB,yBAAa,GAAG,IAAI;AAAA,UACrB;AAAA,QACD;AAAA,MACD;AAAA,MACA,aAAa;AAAA,QACZ,WAAW,sBAAsB,SAAS,KAAK,IAAI;AAAA,QACnD,aAAa;AAAA,QACb,OAAO,OAAO;AAAA,QACd,QAAQ;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MAEA,8BAAC,iBAAc,MAAY;AAAA;AAAA,EAC5B,GACD;AAEF","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport type { Legend } from \"@hisptz/dhis2-utils\";\nimport {\n\tgeoJSON,\n\ttype LeafletEventHandlerFnMap,\n\ttype LeafletMouseEvent,\n} from \"leaflet\";\nimport React, { useMemo } from \"react\";\nimport { CircleMarker } from \"react-leaflet\";\nimport {\n\tgetColorFromLegendSet,\n\thighlightFeature,\n\tresetHighlight,\n} from \"../../../../../../utils/map.js\";\nimport {\n\tThematicLayerData,\n\tThematicLayerDataItem,\n} from \"../../../../interfaces/index.js\";\nimport CustomTooltip from \"../CustomTooltip/index.js\";\nimport { MapOrgUnit } from \"../../../../../../interfaces/index.js\";\n\nconst defaultStyle = {\n\tweight: 1,\n};\nconst highlightStyle = {\n\tweight: 2,\n};\n\ninterface LayerData {\n\torgUnit: MapOrgUnit;\n\tdata?: number;\n\tdataItem: ThematicLayerDataItem;\n}\n\nexport default function Bubble({\n\tdata,\n\thighestData,\n\tlegends,\n\tradius,\n\tcustomEventHandlers,\n\tonLayerClick,\n}: {\n\tdata: ThematicLayerData;\n\thighestData: number;\n\tlegends: Legend[];\n\tradius?: { min: number; max: number };\n\tcustomEventHandlers?: LeafletEventHandlerFnMap;\n\tonLayerClick?: (e: LeafletMouseEvent, data: LayerData) => void;\n}) {\n\tconst { orgUnit, data: value } = data ?? {};\n\n\tconst geoJSONObject = orgUnit.geoJSON;\n\tconst center = geoJSON(geoJSONObject).getBounds().getCenter();\n\n\tconst circleRadius = useMemo(() => {\n\t\treturn ((value ?? 0) * (radius?.max ?? 50)) / highestData;\n\t}, [radius, data, highestData]);\n\n\treturn (\n\t\t<>\n\t\t\t<CircleMarker\n\t\t\t\tinteractive\n\t\t\t\teventHandlers={{\n\t\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t\t\t...(customEventHandlers ?? {}),\n\t\t\t\t\tmousedown: (e) => {\n\t\t\t\t\t\tif (onLayerClick) {\n\t\t\t\t\t\t\tonLayerClick(e, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tpathOptions={{\n\t\t\t\t\tfillColor: getColorFromLegendSet(legends, data.data),\n\t\t\t\t\tfillOpacity: 1,\n\t\t\t\t\tcolor: colors.grey900,\n\t\t\t\t\tweight: 1,\n\t\t\t\t}}\n\t\t\t\tradius={circleRadius}\n\t\t\t\tcenter={center}\n\t\t\t>\n\t\t\t\t<CustomTooltip data={data} />\n\t\t\t</CircleMarker>\n\t\t</>\n\t);\n}\n"]}