X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e189bafa54d2b76d77989d329a3165232d5baf97..d90f353e5f30c35fdfc61a462fdb39b3504998ce:/app/assets/javascripts/index/search.js?ds=sidebyside diff --git a/app/assets/javascripts/index/search.js b/app/assets/javascripts/index/search.js index 476ad30a1..3c1af5056 100644 --- a/app/assets/javascripts/index/search.js +++ b/app/assets/javascripts/index/search.js @@ -1,5 +1,3 @@ -//= require qs/dist/qs - OSM.Search = function (map) { $(".search_form input[name=query]").on("input", function (e) { if ($(e.target).val() === "") { @@ -12,32 +10,26 @@ OSM.Search = function (map) { $(".search_form a.btn.switch_link").on("click", function (e) { e.preventDefault(); var query = $(this).closest("form").find("input[name=query]").val(); - if (query) { - OSM.router.route("/directions?from=" + encodeURIComponent(query) + OSM.formatHash(map)); - } else { - OSM.router.route("/directions" + OSM.formatHash(map)); - } + let search = ""; + if (query) search = "?" + new URLSearchParams({ from: query }); + OSM.router.route("/directions" + search + OSM.formatHash(map)); }); $(".search_form").on("submit", function (e) { e.preventDefault(); $("header").addClass("closed"); var query = $(this).find("input[name=query]").val(); - if (query) { - OSM.router.route("/search?query=" + encodeURIComponent(query) + OSM.formatHash(map)); - } else { - OSM.router.route("/" + OSM.formatHash(map)); - } + let search = "/"; + if (query) search = "/search?" + new URLSearchParams({ query }); + OSM.router.route(search + OSM.formatHash(map)); }); $(".describe_location").on("click", function (e) { e.preventDefault(); - var center = map.getCenter().wrap(), - precision = OSM.zoomPrecision(map.getZoom()), - lat = center.lat.toFixed(precision), - lng = center.lng.toFixed(precision); + $("header").addClass("closed"); + const [lat, lon] = OSM.cropLocation(map.getCenter(), map.getZoom()); - OSM.router.route("/search?lat=" + encodeURIComponent(lat) + "&lon=" + encodeURIComponent(lng)); + OSM.router.route("/search?" + new URLSearchParams({ lat, lon })); }); $("#sidebar_content") @@ -55,21 +47,19 @@ OSM.Search = function (map) { var div = $(this).parents(".search_more"), csrf_param = $("meta[name=csrf-param]").attr("content"), csrf_token = $("meta[name=csrf-token]").attr("content"), - params = {}; + params = new URLSearchParams(); $(this).hide(); div.find(".loader").show(); - params[csrf_param] = csrf_token; + params.set(csrf_param, csrf_token); - $.ajax({ - url: $(this).attr("href"), + fetch($(this).attr("href"), { method: "POST", - data: params, - success: function (data) { - div.replaceWith(data); - } - }); + body: params + }) + .then(response => response.text()) + .then(data => div.replaceWith(data)); } function showSearchResult() { @@ -117,12 +107,12 @@ OSM.Search = function (map) { var page = {}; page.pushstate = page.popstate = function (path) { - var params = Qs.parse(path.substring(path.indexOf("?") + 1)); - if (params.query) { - $(".search_form input[name=query]").val(params.query); + const params = new URLSearchParams(path.substring(path.indexOf("?"))); + if (params.has("query")) { + $(".search_form input[name=query]").val(params.get("query")); $(".describe_location").hide(); - } else if (params.lat && params.lon) { - $(".search_form input[name=query]").val(params.lat + ", " + params.lon); + } else if (params.has("lat") && params.has("lon")) { + $(".search_form input[name=query]").val(params.get("lat") + ", " + params.get("lon")); $(".describe_location").hide(); } OSM.loadSidebarContent(path, page.load); @@ -133,19 +123,20 @@ OSM.Search = function (map) { var entry = $(this), csrf_param = $("meta[name=csrf-param]").attr("content"), csrf_token = $("meta[name=csrf-token]").attr("content"), - params = { + params = new URLSearchParams({ zoom: map.getZoom(), minlon: map.getBounds().getWest(), minlat: map.getBounds().getSouth(), maxlon: map.getBounds().getEast(), maxlat: map.getBounds().getNorth() - }; - params[csrf_param] = csrf_token; - $.ajax({ - url: entry.data("href"), + }); + params.set(csrf_param, csrf_token); + fetch(entry.data("href"), { method: "POST", - data: params, - success: function (html) { + body: params + }) + .then(response => response.text()) + .then(function (html) { entry.html(html); // go to first result of first geocoder if (index === 0) { @@ -154,8 +145,7 @@ OSM.Search = function (map) { panToSearchResult(firstResult.data()); } } - } - }); + }); }); return map.getState();