Don't enable query mode when loading a query URL
authorTom Hughes <tom@compton.nu>
Wed, 5 Nov 2014 20:19:21 +0000 (20:19 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 5 Nov 2014 21:03:14 +0000 (21:03 +0000)
app/assets/javascripts/index/query.js
app/assets/javascripts/router.js

index 30a05419c05e2a30dddc5e56490a85da886471b3..b0fdd54ef0f6142fbd10add885d8bc49e6a50b1f 100644 (file)
@@ -317,11 +317,12 @@ OSM.Query = function(map) {
     }
 
     queryOverpass(params.lat, params.lon);
-    enableQueryMode();
   };
 
-  page.unload = function() {
-    disableQueryMode();
+  page.unload = function(sameController) {
+    if (!sameController) {
+      disableQueryMode();
+    }
   };
 
   return page;
index 9af70c21d5e714d4ee9384c5d6e48a170b662e08..dcf8ea6a8cbad7aa45c8a2717e71f67fdf19b6e0 100644 (file)
@@ -76,6 +76,8 @@ OSM.Router = function(map, rts) {
         });
       }
 
+      params = params.concat(Array.prototype.slice.call(arguments, 2));
+
       return (controller[action] || $.noop).apply(controller, params);
     };
 
@@ -101,11 +103,12 @@ OSM.Router = function(map, rts) {
   if (window.history && window.history.pushState) {
     $(window).on('popstate', function(e) {
       if (!e.originalEvent.state) return; // Is it a real popstate event or just a hash change?
-      var path = window.location.pathname + window.location.search;
+      var path = window.location.pathname + window.location.search,
+        route = routes.recognize(path);
       if (path === currentPath) return;
-      currentRoute.run('unload');
+      currentRoute.run('unload', null, route === currentRoute);
       currentPath = path;
-      currentRoute = routes.recognize(currentPath);
+      currentRoute = route;
       currentRoute.run('popstate', currentPath);
       map.setState(e.originalEvent.state, {animate: false});
     });
@@ -114,7 +117,7 @@ OSM.Router = function(map, rts) {
       var path = url.replace(/#.*/, ''),
         route = routes.recognize(path);
       if (!route) return false;
-      currentRoute.run('unload');
+      currentRoute.run('unload', null, route === currentRoute);
       var state = OSM.parseHash(url);
       map.setState(state);
       window.history.pushState(state, document.title, url);