|
87 | 87 | tileSource = "http://localhost:8080/{z}/{x}/{y}.pbf",
|
88 | 88 | paintObject,
|
89 | 89 | geojsonPromoteId = "areanm",
|
90 |
| - vectorMetricProperty = "Index of Multiple Deprivation (IMD) Rank", |
| 90 | + vectorMetricProperty = "Index of Multiple Deprivation (IMD) Decile", |
91 | 91 | vectorLayerName = "LSOA",
|
92 | 92 | borderColor = "#003300",
|
93 | 93 | labelSourceLayer = "place",
|
| 94 | + externalData = null, |
94 | 95 | }: {
|
95 | 96 | data: object[];
|
96 | 97 | paintObject?: object;
|
|
142 | 143 | vectorLayerName?: string;
|
143 | 144 | borderColor?: string;
|
144 | 145 | labelSourceLayer?: string;
|
145 |
| - usingExternalData: false; |
| 146 | + externalData?: object; |
146 | 147 | } = $props();
|
147 | 148 |
|
148 |
| - let usingExternalData = false; |
149 | 149 | const tileSourceId = "lsoas";
|
150 | 150 | const promoteProperty = "LSOA21NM";
|
151 | 151 |
|
|
180 | 180 | );
|
181 | 181 |
|
182 | 182 | let filteredGeoJsonData = $derived(filterGeo(geojsonData, year));
|
183 |
| - $inspect(breakCount); |
184 | 183 |
|
185 | 184 | let fillColors: string[] = $derived(
|
186 | 185 | setCustomPalette == true
|
|
190 | 189 |
|
191 | 190 | let tooFewColors = $derived(fillColors.length < breakCount);
|
192 | 191 |
|
193 |
| - let paint = $derived(() => { |
194 |
| - if (!map || !loaded) return; |
195 |
| -
|
196 |
| - const values = extractVectorMetricValues( |
197 |
| - map, |
198 |
| - vectorLayerName, |
199 |
| - vectorMetricProperty, |
200 |
| - ); |
201 |
| -
|
202 |
| - if (!values || values.length === 0) return; |
203 |
| -
|
204 |
| - let breaks: number[]; |
205 |
| -
|
206 |
| - if (breaksType === "quantile") { |
207 |
| - breaks = quantileBreaks(values, breakCount); |
208 |
| - } else if (breaksType === "jenks") { |
209 |
| - breaks = jenksBreaks(values, breakCount); |
210 |
| - } else { |
211 |
| - const min = Math.min(...values); |
212 |
| - const max = Math.max(...values); |
213 |
| - const step = (max - min) / breakCount; |
214 |
| - breaks = Array.from( |
215 |
| - { length: breakCount }, |
216 |
| - (_, i) => min + step * (i + 1), |
217 |
| - ); |
218 |
| - } |
219 |
| -
|
220 |
| - const paint = createPaintObjectFromMetric( |
221 |
| - vectorMetricProperty, |
222 |
| - breaks, |
223 |
| - fillColors, |
224 |
| - fillOpacity, |
225 |
| - ); |
226 |
| -
|
227 |
| - map.setPaintProperty(vectorLayerName, "fill-color", paint["fill-color"]); |
228 |
| - map.setPaintProperty( |
229 |
| - vectorLayerName, |
230 |
| - "fill-opacity", |
231 |
| - paint["fill-opacity"], |
232 |
| - ); |
233 |
| - }); |
234 |
| -
|
235 | 192 | $effect(() => {
|
236 | 193 | if (tooFewColors) {
|
237 | 194 | console.warn("Too few colours for the number of breaks");
|
238 | 195 | }
|
239 | 196 | });
|
240 |
| -
|
241 | 197 | let map: maplibregl.Map | undefined = $state();
|
242 | 198 |
|
243 | 199 | let loaded = $state(false);
|
|
282 | 238 |
|
283 | 239 | if (cooperativeGestures) {
|
284 | 240 | map?.cooperativeGestures.enable();
|
285 |
| - $inspect(cooperativeGestures); |
286 | 241 | } else {
|
287 | 242 | map?.cooperativeGestures.disable();
|
288 |
| - $inspect(cooperativeGestures); |
289 | 243 | }
|
290 | 244 |
|
291 | 245 | if (interactive) {
|
|
324 | 278 | : customBreaks,
|
325 | 279 | );
|
326 | 280 | let vectorPaintObject = $derived(
|
327 |
| - usingExternalData |
| 281 | + externalData != null |
328 | 282 | ? createPaintObjectFromMetric(metric, breaks, fillColors, fillOpacity)
|
329 | 283 | : createPaintObjectFromMetric(
|
330 | 284 | vectorMetricProperty,
|
|
455 | 409 | {#if geoSource == "file"}
|
456 | 410 | <GeoJSON id="areas" data={merged} promoteId={geojsonPromoteId}>
|
457 | 411 | <FillLayer
|
| 412 | + id="main-fill-layer" |
458 | 413 | paint={{
|
459 | 414 | "fill-color": ["coalesce", ["get", "color"], "lightgrey"],
|
460 | 415 | "fill-opacity": changeOpacityOnHover
|
|
480 | 435 | />
|
481 | 436 | {#if showBorder}
|
482 | 437 | <LineLayer
|
| 438 | + id="border-layer" |
483 | 439 | layout={{ "line-cap": "round", "line-join": "round" }}
|
484 | 440 | paint={{
|
485 | 441 | "line-color": hoverStateFilter(borderColor, "orange"),
|
|
0 commit comments