X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/ae00fa84c8f981e909c61ab31b6115bb96e859cc..c855d86bf8ca9e1c240e6f0fa803deb3f69e5e6c:/app/assets/javascripts/edit/id.js.erb diff --git a/app/assets/javascripts/edit/id.js.erb b/app/assets/javascripts/edit/id.js.erb index 90318788c..588aa1e86 100644 --- a/app/assets/javascripts/edit/id.js.erb +++ b/app/assets/javascripts/edit/id.js.erb @@ -1,52 +1,37 @@ -//= require qs/dist/qs - $(document).ready(function () { - var id = $("#id-embed"); - - if (id.data("configured") === true) { - var hash = location.hash.substring(1); - var hashParams = hash ? OSM.params(hash) : {}; - var mapParams = OSM.mapParams(); - var params = {}; + const id = $("#id-embed"); - if (mapParams.object) { - params.id = mapParams.object.type + '/' + mapParams.object.id; - mapParams = OSM.parseHash(location.hash); - if (mapParams.center) { - params.map = mapParams.zoom + '/' + mapParams.center.lat + '/' + mapParams.center.lng; - } - } else if (id.data("lat") && id.data("lon")) { - params.map = "16/" + id.data("lat") + "/" + id.data("lon"); - } else { - params.map = (mapParams.zoom || 17) + '/' + mapParams.lat + '/' + mapParams.lon; - } + if (id.data("configured") === false) { + // eslint-disable-next-line no-alert + alert(I18n.t("site.edit.id_not_configured")); + return; + } - if (hashParams.background) params.background = hashParams.background; - if (hashParams.comment) params.comment = hashParams.comment; - if (hashParams.disable_features) params.disable_features = hashParams.disable_features; - if (hashParams.hashtags) params.hashtags = hashParams.hashtags; - if (hashParams.locale) params.locale = hashParams.locale; - if (hashParams.maprules) params.maprules = hashParams.maprules; - if (hashParams.offset) params.offset = hashParams.offset; - if (hashParams.photo) params.photo = hashParams.photo; - if (hashParams.photo_dates) params.photo_dates = hashParams.photo_dates; - if (hashParams.photo_overlay) params.photo_overlay = hashParams.photo_overlay; - if (hashParams.photo_username) params.photo_username = hashParams.photo_username; - if (hashParams.presets) params.presets = hashParams.presets; - if (hashParams.source) params.source = hashParams.source; - if (hashParams.validationDisable) params.validationDisable = hashParams.validationDisable; - if (hashParams.validationWarning) params.validationWarning = hashParams.validationWarning; - if (hashParams.validationError) params.validationError = hashParams.validationError; - if (hashParams.walkthrough) params.walkthrough = hashParams.walkthrough; + const hash = location.hash.substring(1); + const hashParams = hash ? OSM.params(hash) : {}; + const hashArgs = OSM.parseHash(location.hash); + const mapParams = OSM.mapParams(); + const params = new URLSearchParams(); - if (id.data("gpx")) { - params.gpx = id.data("gpx"); - } else if (hashParams.gpx) { - params.gpx = hashParams.gpx; + if (mapParams.object) { + params.set("id", mapParams.object.type + "/" + mapParams.object.id); + if (hashArgs.center) { + params.set("map", hashArgs.zoom + "/" + hashArgs.center.lat + "/" + hashArgs.center.lng); } - - id.attr("src", id.data("url") + "#" + Qs.stringify(params)); + } else if (id.data("lat") && id.data("lon")) { + params.set("map", "16/" + id.data("lat") + "/" + id.data("lon")); } else { - alert(I18n.t("site.edit.id_not_configured")); + params.set("map", (mapParams.zoom || 17) + "/" + mapParams.lat + "/" + mapParams.lon); + } + + const passThroughKeys = ["background", "comment", "disable_features", "gpx", "hashtags", "locale", "maprules", "notes", "offset", "photo", "photo_dates", "photo_overlay", "photo_username", "presets", "source", "validationDisable", "validationWarning", "validationError", "walkthrough"]; + for (const key of passThroughKeys) { + if (hashParams[key]) params.set(key, hashParams[key]); } + + if (mapParams.layers.includes("N")) params.set("notes", "true"); + + if (id.data("gpx")) params.set("gpx", id.data("gpx")); + + id.attr("src", id.data("url") + "#" + params); });