]> 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 d0e9cc299e999058d9c4743aea95cba74f9adc36..29916272e6285dfd51db9af120f3119e9944989d 100644 (file)
@@ -19,11 +19,9 @@ OSM.Query = function(map) {
     e.preventDefault();
     e.stopPropagation();
 
-    if (queryButton.hasClass("disabled")) return;
-
     if (queryButton.hasClass("active")) {
       disableQueryMode();
-    } else {
+    } else if (!queryButton.hasClass("disabled")) {
       enableQueryMode();
     }
   }).on("disabled", function (e) {
@@ -83,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");
 
@@ -94,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) {
@@ -112,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"];