From 72f4b88e1daa2fe4313b03119b6ccd9cc537eb74 Mon Sep 17 00:00:00 2001 From: Joshua Date: Mon, 16 Dec 2024 15:12:04 +0530 Subject: [PATCH 1/4] overrideByName causes legend to omit shields #1165 --- package-lock.json | 4 ++-- src/js/legend_control.js | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6a14114c4..1e617218d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ "typescript": "^4.9.5" }, "engines": { - "node": ">=18", + "node": ">=18 <=20", "npm": ">=8.3.0" } }, @@ -6300,7 +6300,7 @@ }, "shieldlib": { "name": "@americana/maplibre-shield-generator", - "version": "0.0.5", + "version": "0.0.7", "license": "CC0-1.0", "dependencies": { "@types/node": "^20.8.4", diff --git a/src/js/legend_control.js b/src/js/legend_control.js index 3ff1905a1..11c1bd6bb 100644 --- a/src/js/legend_control.js +++ b/src/js/legend_control.js @@ -466,7 +466,10 @@ export default class LegendControl { let unrecognizedNetworks = new Set(); for (let image of images) { if (!(image.network in imagesByNetwork)) { - imagesByNetwork[image.network] = { overridesByRef: {} }; + imagesByNetwork[image.network] = { + overridesByRef: {}, + overridesByName: {}, + }; } let networkImages = imagesByNetwork[image.network]; @@ -476,13 +479,15 @@ export default class LegendControl { if (!networkImages.overridesByRef[image.ref]) { networkImages.overridesByRef[image.ref] = image.imageName; } + } else if (image.name && shieldDef?.overrideByName?.[image.name]) { + // Store a different image for each override in the shield definition. + if (!networkImages.overridesByName[image.name]) { + networkImages.overridesByName[image.name] = + shieldDef.overrideByName[image.name].spriteBlank; + } } else if (!networkImages.ref && image.ref) { - // Store the numbered variant of a shield if required by the shield - // definition. networkImages.ref = image.imageName; } else if (!networkImages.noRef && !image.ref) { - // Store the unnumbered variant of a shield if required by the shield - // definition. networkImages.noRef = image.imageName; } @@ -501,6 +506,7 @@ export default class LegendControl { images.noRef, images.ref, ...Object.values(images.overridesByRef), + ...Object.values(images.overridesByName), // Add overrides by name ].filter((i) => i); }; From 63ad5416300aa27403a17e23df903db8856a8b70 Mon Sep 17 00:00:00 2001 From: Joshua Date: Mon, 16 Dec 2024 15:40:31 +0530 Subject: [PATCH 2/4] overrideByName causes legend to omit shields #1165 --- src/js/legend_control.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/js/legend_control.js b/src/js/legend_control.js index 11c1bd6bb..53e7a8d1c 100644 --- a/src/js/legend_control.js +++ b/src/js/legend_control.js @@ -486,8 +486,12 @@ export default class LegendControl { shieldDef.overrideByName[image.name].spriteBlank; } } else if (!networkImages.ref && image.ref) { + // Store the numbered variant of a shield if required by the shield + // definition. networkImages.ref = image.imageName; } else if (!networkImages.noRef && !image.ref) { + // Store the unnumbered variant of a shield if required by the shield + // definition. networkImages.noRef = image.imageName; } From 6be58c75e4f821a4c096a9a41da461d681f62f5f Mon Sep 17 00:00:00 2001 From: Joshua Date: Tue, 31 Dec 2024 14:19:35 +0530 Subject: [PATCH 3/4] overrideByName causes legend to omit shields --- src/js/legend_control.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/legend_control.js b/src/js/legend_control.js index 53e7a8d1c..fc96c3044 100644 --- a/src/js/legend_control.js +++ b/src/js/legend_control.js @@ -507,7 +507,7 @@ export default class LegendControl { let images = imagesByNetwork[network]; if (!images) return []; return [ - images.noRef, + Object.values(images.overridesByName).length > 0 ? "" : images.noRef, images.ref, ...Object.values(images.overridesByRef), ...Object.values(images.overridesByName), // Add overrides by name From de2c1f876e226acbc996517fd087bef1fa930451 Mon Sep 17 00:00:00 2001 From: Joshua Date: Wed, 1 Jan 2025 10:58:37 +0530 Subject: [PATCH 4/4] Remove comment --- src/js/legend_control.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/legend_control.js b/src/js/legend_control.js index fc96c3044..ff3a9063c 100644 --- a/src/js/legend_control.js +++ b/src/js/legend_control.js @@ -510,7 +510,7 @@ export default class LegendControl { Object.values(images.overridesByName).length > 0 ? "" : images.noRef, images.ref, ...Object.values(images.overridesByRef), - ...Object.values(images.overridesByName), // Add overrides by name + ...Object.values(images.overridesByName), ].filter((i) => i); };