]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/edit/id.js.erb
Merge remote-tracking branch 'upstream/pull/5233'
[rails.git] / app / assets / javascripts / edit / id.js.erb
1 $(document).ready(function () {
2   const id = $("#id-embed"),
3         idData = id.data();
4
5   if (!idData.configured) {
6     // eslint-disable-next-line no-alert
7     alert(I18n.t("site.edit.id_not_configured"));
8     return;
9   }
10
11   const hash = location.hash.substring(1);
12   const hashParams = hash ? OSM.params(hash) : {};
13   const hashArgs = OSM.parseHash(location.hash);
14   const mapParams = OSM.mapParams();
15   const params = new URLSearchParams();
16   let { zoom, lat, lon } = mapParams;
17
18   if (mapParams.object) {
19     params.set("id", mapParams.object.type + "/" + mapParams.object.id);
20     if (hashArgs.center) ({ zoom, center: { lat, lng: lon } } = hashArgs);
21   } else if (idData.lat && idData.lon) {
22     ({ zoom, lat, lon } = { zoom: 16, ...idData });
23   }
24   params.set("map", [zoom || 17, lat, lon].join("/"));
25
26   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"];
27   for (const key of passThroughKeys) {
28     if (hashParams[key]) params.set(key, hashParams[key]);
29   }
30
31   if (mapParams.layers.includes("N")) params.set("notes", "true");
32
33   if (idData.gpx) params.set("gpx", idData.gpx);
34
35   id.attr("src", idData.url + "#" + params.toString().replace(/\+/g, "%20"));
36 });