]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index/query.js
Pre-fill directions 'from' field with search query, if any.
[rails.git] / app / assets / javascripts / index / query.js
index cabb93f50148f1b0d844e5077cd59bae84601909..29916272e6285dfd51db9af120f3119e9944989d 100644 (file)
@@ -4,7 +4,7 @@ OSM.Query = function(map) {
   var protocol = document.location.protocol === "https:" ? "https:" : "http:",
     url = protocol + OSM.OVERPASS_URL,
     queryButton = $(".control-query .control-button"),
-    uninterestingTags = ['source', 'source_ref', 'source:ref', 'history', 'attribution', 'created_by', 'tiger:county', 'tiger:tlid', 'tiger:upload_uuid'],
+    uninterestingTags = ['source', 'source_ref', 'source:ref', 'history', 'attribution', 'created_by', 'tiger:county', 'tiger:tlid', 'tiger:upload_uuid', 'KSJ2:curve_id', 'KSJ2:lat', 'KSJ2:lon', 'KSJ2:coordinate', 'KSJ2:filename', 'note:ja'],
     marker;
 
   var featureStyle = {
@@ -19,13 +19,9 @@ OSM.Query = function(map) {
     e.preventDefault();
     e.stopPropagation();
 
-    if (queryButton.hasClass("disabled")) return;
-
     if (queryButton.hasClass("active")) {
-      if ($("#content").hasClass("overlay-sidebar")) {
-        disableQueryMode();
-      }
-    } else {
+      disableQueryMode();
+    } else if (!queryButton.hasClass("disabled")) {
       enableQueryMode();
     }
   }).on("disabled", function (e) {
@@ -85,8 +81,11 @@ OSM.Query = function(map) {
     var tags = feature.tags;
     var prefix = "";
 
-    if (tags.boundary === "administrative") {
-      prefix = I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level)
+    if (tags.boundary === "administrative" && tags.admin_level) {
+      prefix =
+      I18n.t("geocoder.search_osm_nominatim.admin_levels.level" + tags.admin_level, {
+        defaultValue: I18n.t("geocoder.search_osm_nominatim.prefix.boundary.administrative")
+      })
     } else {
       var prefixes = I18n.t("geocoder.search_osm_nominatim.prefix");
 
@@ -96,14 +95,20 @@ OSM.Query = function(map) {
         if (prefixes[key]) {
           if (prefixes[key][value]) {
             return prefixes[key][value];
-          } else {
-            var first = value.substr(0, 1).toUpperCase(),
-              rest = value.substr(1).replace(/_/g, " ");
-
-            return first + rest;
           }
         }
       }
+
+      for (var key in tags) {
+        var value = tags[key];
+
+        if (prefixes[key]) {
+          var first = value.substr(0, 1).toUpperCase(),
+            rest = value.substr(1).replace(/_/g, " ");
+
+          return first + rest;
+        }
+      }
     }
 
     if (!prefix) {
@@ -114,7 +119,14 @@ OSM.Query = function(map) {
   }
 
   function featureName(feature) {
-    var tags = feature.tags;
+    var tags = feature.tags,
+      locales = I18n.locales.get();
+
+    for (var i = 0; i < locales.length; i++) {
+      if (tags["name:" + locales[i]]) {
+        return tags["name:" + locales[i]];
+      }
+    }
 
     if (tags["name"]) {
       return tags["name"];
@@ -319,11 +331,12 @@ OSM.Query = function(map) {
     }
 
     queryOverpass(params.lat, params.lon);
-    enableQueryMode();
   };
 
-  page.unload = function() {
-    disableQueryMode();
+  page.unload = function(sameController) {
+    if (!sameController) {
+      disableQueryMode();
+    }
   };
 
   return page;