From e802d975847ab3bb24c8ba39e63b0855bda1363d Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Sun, 27 Apr 2025 01:32:00 +0200 Subject: [PATCH] Refactor parseHash to avoid needing to destructure parseHash.center --- app/assets/javascripts/edit/id.js.erb | 2 +- app/assets/javascripts/osm.js.erb | 20 ++++++++------------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/edit/id.js.erb b/app/assets/javascripts/edit/id.js.erb index fd7b3bd7c..c66335768 100644 --- a/app/assets/javascripts/edit/id.js.erb +++ b/app/assets/javascripts/edit/id.js.erb @@ -21,7 +21,7 @@ $(function () { } if (mapParams.object) { params.set("id", mapParams.object.type + "/" + mapParams.object.id); - if (hashArgs.center) ({ zoom, center: { lat, lng: lon } } = hashArgs); + if (hashArgs.center) ({ zoom, lat, lon } = hashArgs); } if (lat && lon) params.set("map", [zoom || 17, lat, lon].join("/")); diff --git a/app/assets/javascripts/osm.js.erb b/app/assets/javascripts/osm.js.erb index c7887b63d..445ab4a08 100644 --- a/app/assets/javascripts/osm.js.erb +++ b/app/assets/javascripts/osm.js.erb @@ -89,9 +89,7 @@ OSM = { // Decide on a map starting position. Various ways of doing this. if (hash.center) { - mapParams.lon = hash.center.lng; - mapParams.lat = hash.center.lat; - mapParams.zoom = hash.zoom; + Object.assign(mapParams, hash); } else if (params.has("bbox")) { const [minlon, minlat, maxlon, maxlat] = params.get("bbox").split(","); mapParams.bounds = bboxToLatLngBounds({ minlon, minlat, maxlon, maxlat }); @@ -159,22 +157,20 @@ OSM = { }, parseHash: function (hash = location.hash) { - const args = {}; - const i = hash.indexOf("#"); - if (i < 0) { - return args; - } - - const hashParams = new URLSearchParams(hash.slice(i + 1)); + if (i < 0) return {}; - const map = (hashParams.get("map") || "").split("/"), + const hashParams = new URLSearchParams(hash.slice(i + 1)), + map = (hashParams.get("map") || "").split("/"), zoom = parseInt(map[0], 10), lat = parseFloat(map[1]), - lon = parseFloat(map[2]); + lon = parseFloat(map[2]), + args = {}; if (!isNaN(zoom) && !isNaN(lat) && !isNaN(lon)) { args.center = new L.LatLng(lat, lon); + args.lat = lat; + args.lon = lon; args.zoom = zoom; } -- 2.39.5