]> git.openstreetmap.org Git - nominatim-ui.git/commitdiff
remove empty URL parameter when generating target_url
authormarc tobias <mtmail@gmx.net>
Tue, 7 Jul 2020 12:12:56 +0000 (14:12 +0200)
committermarc tobias <mtmail@gmx.net>
Tue, 7 Jul 2020 12:12:56 +0000 (14:12 +0200)
dist/assets/js/nominatim-ui.js
src/assets/js/controller.js

index 1b148a8558baee9e35b7fafb3bccdbd1f0b3cba6..87776c4e7286b21fe3faad9bee4996584f205d02 100644 (file)
@@ -774,19 +774,37 @@ jQuery(document).ready(function () {
     if (!url) return false;
     if (url.indexOf('?') === 0) return true;
     if (url.indexOf('/') === 0) return true;
+    if (url.indexOf('#') === 0) return false;
     if (url.match(/^http/)) return false;
     if (!url.match(/\.html/)) return true;
 
     return false;
   }
 
+  // remove any URL paramters with empty values
+  // '&empty=&filled=value' => 'filled=value'
+  function clean_up_url_parameters(url) {
+    var url_params = new URLSearchParams(url);
+    var to_delete = []; // deleting inside loop would skip iterations
+    url_params.forEach(function (value, key) {
+      if (value === '') to_delete.push(key);
+    });
+    for (var i=0; i<to_delete.length; i++) {
+      url_params.delete(to_delete[i]);
+    }
+    return url_params.toString();
+  }
+
   parse_url_and_load_page();
 
   // load page after form submit
   $(document).on('submit', 'form', function (e) {
     e.preventDefault();
 
-    window.history.pushState(myhistory, '', '?' + $(this).serialize());
+    var target_url = $(this).serialize();
+    target_url = clean_up_url_parameters(target_url);
+
+    window.history.pushState(myhistory, '', '?' + target_url);
 
     parse_url_and_load_page();
   });
index 4070d09ec79ff4164df14897a6602d271b323fc7..e7f010c861ca4e1d9c7057e6d60803f84c3a7e29 100644 (file)
@@ -22,19 +22,37 @@ jQuery(document).ready(function () {
     if (!url) return false;
     if (url.indexOf('?') === 0) return true;
     if (url.indexOf('/') === 0) return true;
+    if (url.indexOf('#') === 0) return false;
     if (url.match(/^http/)) return false;
     if (!url.match(/\.html/)) return true;
 
     return false;
   }
 
+  // remove any URL paramters with empty values
+  // '&empty=&filled=value' => 'filled=value'
+  function clean_up_url_parameters(url) {
+    var url_params = new URLSearchParams(url);
+    var to_delete = []; // deleting inside loop would skip iterations
+    url_params.forEach(function (value, key) {
+      if (value === '') to_delete.push(key);
+    });
+    for (var i=0; i<to_delete.length; i++) {
+      url_params.delete(to_delete[i]);
+    }
+    return url_params.toString();
+  }
+
   parse_url_and_load_page();
 
   // load page after form submit
   $(document).on('submit', 'form', function (e) {
     e.preventDefault();
 
-    window.history.pushState(myhistory, '', '?' + $(this).serialize());
+    var target_url = $(this).serialize();
+    target_url = clean_up_url_parameters(target_url);
+
+    window.history.pushState(myhistory, '', '?' + target_url);
 
     parse_url_and_load_page();
   });