]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/edit/id.js.erb
Mark valid usecases for alert
[rails.git] / app / assets / javascripts / edit / id.js.erb
index 834eeb75b9b332b190526e3abd1239f29e3df93c..588aa1e86ae2918318518d6acc438771899f88fe 100644 (file)
@@ -1,37 +1,37 @@
 $(document).ready(function () {
-  var id = $("#id-embed");
+  const id = $("#id-embed");
 
-  if (id.data("key")) {
-    var hashParams = OSM.params(location.hash.substring(1)),
-        mapParams = OSM.mapParams(),
-        params = {};
-
-    if (mapParams.object) {
-      params.id = mapParams.object.type[0] + 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.hashtags) params.hashtags = hashParams.hashtags;
-    if (hashParams.offset) params.offset = hashParams.offset;
-    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") + "#" + querystring.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);
 });