From 09cb77cde7f8ea3ba3b7e4f9154a736b5c9b284e Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Thu, 7 May 2026 20:56:36 +0000 Subject: [PATCH] Generalize color scheme evaluating logic --- app/assets/javascripts/index/element.js | 2 +- app/assets/javascripts/leaflet.map.js | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/index/element.js b/app/assets/javascripts/index/element.js index e4b6aa1ab..08f27e21e 100644 --- a/app/assets/javascripts/index/element.js +++ b/app/assets/javascripts/index/element.js @@ -92,7 +92,7 @@ } function getLocalizedResponse(entity) { - const siteScheme = ({ light: "Q101608434", dark: "Q6545942" })[$("html").data("bs-theme")]; + const siteScheme = OSM.isDark("bs") ? "Q6545942" : "Q101608434"; const scheme = ({ qualifiers }) => qualifiers?.P8798?.some(q => q?.datavalue?.value?.id === siteScheme) ?? 0; const rank = ({ rank }) => ({ preferred: 2, normal: 0, deprecated: -2 })[rank] ?? 0; const toBestClaim = (out, claim) => (rank(claim) + scheme(claim) > rank(out) + scheme(out)) ? claim : out; diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index 64697ea60..f44bfebb9 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -17,7 +17,7 @@ L.OSM.Map = L.Map.extend({ if (nameId) layerOptions.name = OSM.i18n.t(`javascripts.map.base.${nameId}`); let layerConstructor; - if (OSM.isDarkMap()) { + if (OSM.isDark("map")) { layerConstructor = L.OSM[leafletOsmDarkId] ?? L.OSM[leafletOsmId] ?? L.OSM.TileLayer; layerOptions.url = layerOptions.urlDark ?? layerOptions.url; } else { @@ -30,7 +30,7 @@ L.OSM.Map = L.Map.extend({ layer.on("add", () => { this.fire("baselayerchange", { layer: layer }); }); - layer.options.style = (OSM.isDarkMap() && styleDark) || style; + layer.options.style = (OSM.isDark("map") && styleDark) || style; return layer; }); @@ -400,9 +400,10 @@ L.OSM.Map = L.Map.extend({ } }); -OSM.isDarkMap = function () { - const mapTheme = $("body").attr("data-map-theme"); - if (mapTheme) return mapTheme === "dark"; +OSM.isDark = function (subject) { + const data = `${subject}-theme`, + theme = $(`[data-${data}]`).first().data(data); + if (theme) return theme === "dark"; return window.matchMedia("(prefers-color-scheme: dark)").matches; }; -- 2.39.5