Skip to content

Commit

Permalink
Merge branch 'pull/5592'
Browse files Browse the repository at this point in the history
  • Loading branch information
AntonKhorev committed Feb 3, 2025
2 parents 3aa1b10 + 46cd3a1 commit 55c1033
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 252 deletions.
27 changes: 13 additions & 14 deletions app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
//= require oauth
//= require matomo
//= require richtext
//= require qs/dist/qs

{
const application_data = $("head").data();
Expand Down Expand Up @@ -45,34 +44,34 @@
*/
window.updateLinks = function (loc, zoom, layers, object) {
$(".geolink").each(function (index, link) {
var href = link.href.split(/[?#]/)[0],
args = Qs.parse(link.search.substring(1)),
editlink = $(link).hasClass("editlink");
let href = link.href.split(/[?#]/)[0];
const queryArgs = new URLSearchParams(link.search),
editlink = $(link).hasClass("editlink");

delete args.node;
delete args.way;
delete args.relation;
delete args.changeset;
delete args.note;
queryArgs.delete("node");
queryArgs.delete("way");
queryArgs.delete("relation");
queryArgs.delete("changeset");
queryArgs.delete("note");

if (object && editlink) {
args[object.type] = object.id;
queryArgs.set(object.type, object.id);
}

var query = Qs.stringify(args);
const query = queryArgs.toString();
if (query) href += "?" + query;

args = {
const hashArgs = {
lat: loc.lat,
lon: "lon" in loc ? loc.lon : loc.lng,
zoom: zoom
};

if (layers && !editlink) {
args.layers = layers;
hashArgs.layers = layers;
}

href += OSM.formatHash(args);
href += OSM.formatHash(hashArgs);

link.href = href;
});
Expand Down
8 changes: 3 additions & 5 deletions app/assets/javascripts/auth_providers.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
//= require qs/dist/qs

$(document).ready(function () {
// Attach referer to authentication buttons
$(".auth_button").each(function () {
var params = Qs.parse(this.search.substring(1));
params.referer = $("#referer").val();
this.search = Qs.stringify(params);
const params = new URLSearchParams(this.search);
params.set("referer", $("#referer").val());
this.search = params.toString();
});
});
52 changes: 25 additions & 27 deletions app/assets/javascripts/edit/id.js.erb
Original file line number Diff line number Diff line change
@@ -1,51 +1,49 @@
//= require qs/dist/qs

$(document).ready(function () {
var id = $("#id-embed");

if (id.data("configured") === true) {
var hash = location.hash.substring(1);
var hashParams = hash ? OSM.params(hash) : {};
var mapParams = OSM.mapParams();
var params = {};
var params = new URLSearchParams();

if (mapParams.object) {
params.id = mapParams.object.type + "/" + mapParams.object.id;
params.set("id", mapParams.object.type + "/" + mapParams.object.id);
mapParams = OSM.parseHash(location.hash);
if (mapParams.center) {
params.map = mapParams.zoom + "/" + mapParams.center.lat + "/" + mapParams.center.lng;
params.set("map", mapParams.zoom + "/" + mapParams.center.lat + "/" + mapParams.center.lng);
}
} else if (id.data("lat") && id.data("lon")) {
params.map = "16/" + id.data("lat") + "/" + id.data("lon");
params.set("map", "16/" + id.data("lat") + "/" + id.data("lon"));
} else {
params.map = (mapParams.zoom || 17) + "/" + mapParams.lat + "/" + mapParams.lon;
params.set("map", (mapParams.zoom || 17) + "/" + mapParams.lat + "/" + mapParams.lon);
}

if (hashParams.background) params.background = hashParams.background;
if (hashParams.comment) params.comment = hashParams.comment;
if (hashParams.disable_features) params.disable_features = hashParams.disable_features;
if (hashParams.hashtags) params.hashtags = hashParams.hashtags;
if (hashParams.locale) params.locale = hashParams.locale;
if (hashParams.maprules) params.maprules = hashParams.maprules;
if (hashParams.offset) params.offset = hashParams.offset;
if (hashParams.photo) params.photo = hashParams.photo;
if (hashParams.photo_dates) params.photo_dates = hashParams.photo_dates;
if (hashParams.photo_overlay) params.photo_overlay = hashParams.photo_overlay;
if (hashParams.photo_username) params.photo_username = hashParams.photo_username;
if (hashParams.presets) params.presets = hashParams.presets;
if (hashParams.source) params.source = hashParams.source;
if (hashParams.validationDisable) params.validationDisable = hashParams.validationDisable;
if (hashParams.validationWarning) params.validationWarning = hashParams.validationWarning;
if (hashParams.validationError) params.validationError = hashParams.validationError;
if (hashParams.walkthrough) params.walkthrough = hashParams.walkthrough;
if (hashParams.background) params.set("background", hashParams.background);
if (hashParams.comment) params.set("comment", hashParams.comment);
if (hashParams.disable_features) params.set("disable_features", hashParams.disable_features);
if (hashParams.hashtags) params.set("hashtags", hashParams.hashtags);
if (hashParams.locale) params.set("locale", hashParams.locale);
if (hashParams.maprules) params.set("maprules", hashParams.maprules);
if (hashParams.offset) params.set("offset", hashParams.offset);
if (hashParams.photo) params.set("photo", hashParams.photo);
if (hashParams.photo_dates) params.set("photo_dates", hashParams.photo_dates);
if (hashParams.photo_overlay) params.set("photo_overlay", hashParams.photo_overlay);
if (hashParams.photo_username) params.set("photo_username", hashParams.photo_username);
if (hashParams.presets) params.set("presets", hashParams.presets);
if (hashParams.source) params.set("source", hashParams.source);
if (hashParams.validationDisable) params.set("validationDisable", hashParams.validationDisable);
if (hashParams.validationWarning) params.set("validationWarning", hashParams.validationWarning);
if (hashParams.validationError) params.set("validationError", hashParams.validationError);
if (hashParams.walkthrough) params.set("walkthrough", hashParams.walkthrough);

if (id.data("gpx")) {
params.gpx = id.data("gpx");
params.set("gpx", id.data("gpx"));
} else if (hashParams.gpx) {
params.gpx = hashParams.gpx;
params.set("gpx", hashParams.gpx);
}

id.attr("src", id.data("url") + "#" + Qs.stringify(params));
id.attr("src", id.data("url") + "#" + params);
} else {
alert(I18n.t("site.edit.id_not_configured"));
}
Expand Down
19 changes: 9 additions & 10 deletions app/assets/javascripts/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
//= require index/changeset
//= require index/query
//= require router
//= require qs/dist/qs

$(document).ready(function () {
var map = new L.OSM.Map("map", {
Expand Down Expand Up @@ -239,18 +238,18 @@ $(document).ready(function () {
function remoteEditHandler(bbox, object) {
var remoteEditHost = "http://127.0.0.1:8111",
osmHost = location.protocol + "//" + location.host,
query = {
query = new URLSearchParams({
left: bbox.getWest() - 0.0001,
top: bbox.getNorth() + 0.0001,
right: bbox.getEast() + 0.0001,
bottom: bbox.getSouth() - 0.0001
};
});

if (object && object.type !== "note") query.select = object.type + object.id; // can't select notes
sendRemoteEditCommand(remoteEditHost + "/load_and_zoom?" + Qs.stringify(query), function () {
if (object && object.type !== "note") query.set("select", object.type + object.id); // can't select notes
sendRemoteEditCommand(remoteEditHost + "/load_and_zoom?" + query, function () {
if (object && object.type === "note") {
var noteQuery = { url: osmHost + OSM.apiUrl(object) };
sendRemoteEditCommand(remoteEditHost + "/import?" + Qs.stringify(noteQuery));
const noteQuery = new URLSearchParams({ url: osmHost + OSM.apiUrl(object) });
sendRemoteEditCommand(remoteEditHost + "/import?" + noteQuery);
}
});

Expand Down Expand Up @@ -294,9 +293,9 @@ $(document).ready(function () {
};

page.load = function () {
var params = Qs.parse(location.search.substring(1));
if (params.query) {
$("#sidebar .search_form input[name=query]").value(params.query);
const params = new URLSearchParams(location.search);
if (params.has("query")) {
$("#sidebar .search_form input[name=query]").value(params.get("query"));
}
if (!("autofocus" in document.createElement("input"))) {
$("#sidebar .search_form input[name=query]").focus();
Expand Down
12 changes: 5 additions & 7 deletions app/assets/javascripts/index/contextmenu.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
//= require qs/dist/qs

OSM.initializeContextMenu = function (map) {
map.contextmenu.addItem({
text: I18n.t("javascripts.context.directions_from"),
callback: function directionsFromHere(e) {
const latlng = OSM.cropLocation(e.latlng, map.getZoom());

OSM.router.route("/directions?" + Qs.stringify({
OSM.router.route("/directions?" + new URLSearchParams({
from: latlng.join(","),
to: getDirectionsEndpointCoordinatesFromInput($("#route_to"))
}));
Expand All @@ -18,7 +16,7 @@ OSM.initializeContextMenu = function (map) {
callback: function directionsToHere(e) {
const latlng = OSM.cropLocation(e.latlng, map.getZoom());

OSM.router.route("/directions?" + Qs.stringify({
OSM.router.route("/directions?" + new URLSearchParams({
from: getDirectionsEndpointCoordinatesFromInput($("#route_from")),
to: latlng.join(",")
}));
Expand All @@ -30,7 +28,7 @@ OSM.initializeContextMenu = function (map) {
callback: function addNoteHere(e) {
const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());

OSM.router.route("/note/new?" + Qs.stringify({ lat, lon }));
OSM.router.route("/note/new?" + new URLSearchParams({ lat, lon }));
}
});

Expand All @@ -39,7 +37,7 @@ OSM.initializeContextMenu = function (map) {
callback: function describeLocation(e) {
const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom()).map(encodeURIComponent);

OSM.router.route("/search?" + Qs.stringify({ lat, lon }));
OSM.router.route("/search?" + new URLSearchParams({ lat, lon }));
}
});

Expand All @@ -48,7 +46,7 @@ OSM.initializeContextMenu = function (map) {
callback: function queryFeatures(e) {
const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());

OSM.router.route("/query?" + Qs.stringify({ lat, lon }));
OSM.router.route("/query?" + new URLSearchParams({ lat, lon }));
}
});

Expand Down
17 changes: 8 additions & 9 deletions app/assets/javascripts/index/directions.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
//= require ./directions-endpoint
//= require_self
//= require_tree ./directions
//= require qs/dist/qs

OSM.Directions = function (map) {
var routeRequest = null; // jqXHR object of an ongoing route request or null
Expand Down Expand Up @@ -67,7 +66,7 @@ OSM.Directions = function (map) {
}
endpoints[0].swapCachedReverseGeocodes(endpoints[1]);

OSM.router.route("/directions?" + Qs.stringify({
OSM.router.route("/directions?" + new URLSearchParams({
route: routeTo + ";" + routeFrom
}));
});
Expand Down Expand Up @@ -120,7 +119,7 @@ OSM.Directions = function (map) {
if (!points[0] || !points[1]) return;
$("header").addClass("closed");

OSM.router.replace("/directions?" + Qs.stringify({
OSM.router.replace("/directions?" + new URLSearchParams({
engine: chosenEngine.id,
route: points.map(p => OSM.cropLocation(p, map.getZoom()).join()).join(";")
}));
Expand Down Expand Up @@ -287,19 +286,19 @@ OSM.Directions = function (map) {
endpoints[0].enable();
endpoints[1].enable();

var params = Qs.parse(location.search.substring(1)),
route = (params.route || "").split(";");
const params = new URLSearchParams(location.search),
route = (params.get("route") || "").split(";");

if (params.engine) {
var engineIndex = findEngine(params.engine);
if (params.has("engine")) {
var engineIndex = findEngine(params.get("engine"));

if (engineIndex >= 0) {
setEngine(engineIndex);
}
}

endpoints[0].setValue(params.from || route[0] || "");
endpoints[1].setValue(params.to || route[1] || "");
endpoints[0].setValue(params.get("from") || route[0] || "");
endpoints[1].setValue(params.get("to") || route[1] || "");

map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng);
};
Expand Down
8 changes: 3 additions & 5 deletions app/assets/javascripts/index/new_note.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
//= require qs/dist/qs

OSM.NewNote = function (map) {
var noteLayer = map.noteLayer,
content = $("#sidebar_content"),
Expand Down Expand Up @@ -133,11 +131,11 @@ OSM.NewNote = function (map) {

map.addLayer(noteLayer);

var params = Qs.parse(path.substring(path.indexOf("?") + 1));
const params = new URLSearchParams(path.substring(path.indexOf("?")));
var markerLatlng;

if (params.lat && params.lon) {
markerLatlng = L.latLng(params.lat, params.lon);
if (params.has("lat") && params.has("lon")) {
markerLatlng = L.latLng(params.get("lat"), params.get("lon"));
} else {
markerLatlng = map.getCenter();
}
Expand Down
10 changes: 4 additions & 6 deletions app/assets/javascripts/index/query.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
//= require qs/dist/qs

OSM.Query = function (map) {
var url = OSM.OVERPASS_URL,
credentials = OSM.OVERPASS_CREDENTIALS,
Expand Down Expand Up @@ -301,7 +299,7 @@ OSM.Query = function (map) {
function clickHandler(e) {
const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());

OSM.router.route("/query?" + Qs.stringify({ lat, lon }));
OSM.router.route("/query?" + new URLSearchParams({ lat, lon }));
}

function enableQueryMode() {
Expand All @@ -326,16 +324,16 @@ OSM.Query = function (map) {
};

page.load = function (path, noCentre) {
var params = Qs.parse(path.substring(path.indexOf("?") + 1)),
latlng = L.latLng(params.lat, params.lon);
const params = new URLSearchParams(path.substring(path.indexOf("?"))),
latlng = L.latLng(params.get("lat"), params.get("lon"));

if (!window.location.hash && !noCentre && !map.getBounds().contains(latlng)) {
OSM.router.withoutMoveListener(function () {
map.setView(latlng, 15);
});
}

queryOverpass(params.lat, params.lon);
queryOverpass(params.get("lat"), params.get("lon"));
};

page.unload = function (sameController) {
Expand Down
14 changes: 6 additions & 8 deletions app/assets/javascripts/index/search.js
Original file line number Diff line number Diff line change
@@ -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() === "") {
Expand Down Expand Up @@ -35,7 +33,7 @@ OSM.Search = function (map) {
$("header").addClass("closed");
const [lat, lon] = OSM.cropLocation(map.getCenter(), map.getZoom()).map(encodeURIComponent);

OSM.router.route("/search?" + Qs.stringify({ lat, lon }));
OSM.router.route("/search?" + new URLSearchParams({ lat, lon }));
});

$("#sidebar_content")
Expand Down Expand Up @@ -115,12 +113,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);
Expand Down
Loading

0 comments on commit 55c1033

Please sign in to comment.