Merge remote-tracking branch 'upstream/pull/5754'
This commit is contained in:
commit
31ff609020
7 changed files with 77 additions and 51 deletions
|
@ -37,7 +37,7 @@ $(function () {
|
|||
|
||||
map.setSidebarOverlaid(false);
|
||||
|
||||
$("#sidebar_loader").show().addClass("delayed-fade-in");
|
||||
$("#sidebar_loader").prop("hidden", false).addClass("delayed-fade-in");
|
||||
|
||||
// Prevent caching the XHR response as a full-page URL
|
||||
// https://github.com/openstreetmap/openstreetmap-website/issues/5663
|
||||
|
@ -53,7 +53,7 @@ $(function () {
|
|||
fetch(content_path, { headers: { "accept": "text/html", "x-requested-with": "XMLHttpRequest" } })
|
||||
.then(response => {
|
||||
$("#flash").empty();
|
||||
$("#sidebar_loader").removeClass("delayed-fade-in").hide();
|
||||
$("#sidebar_loader").removeClass("delayed-fade-in").prop("hidden", true);
|
||||
|
||||
const title = response.headers.get("X-Page-Title");
|
||||
if (title) document.title = decodeURIComponent(title);
|
||||
|
|
|
@ -14,23 +14,16 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch
|
|||
autoPan: true
|
||||
});
|
||||
|
||||
endpoint.enable = function () {
|
||||
endpoint.enableListeners = function () {
|
||||
endpoint.marker.on("drag dragend", markerDragListener);
|
||||
input.on("keydown", inputKeydownListener);
|
||||
input.on("change", inputChangeListener);
|
||||
};
|
||||
|
||||
endpoint.disable = function () {
|
||||
endpoint.disableListeners = function () {
|
||||
endpoint.marker.off("drag dragend", markerDragListener);
|
||||
input.off("keydown", inputKeydownListener);
|
||||
input.off("change", inputChangeListener);
|
||||
|
||||
if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort();
|
||||
delete endpoint.geocodeRequest;
|
||||
removeLatLng();
|
||||
delete endpoint.value;
|
||||
input.val("");
|
||||
map.removeLayer(endpoint.marker);
|
||||
};
|
||||
|
||||
function markerDragListener(e) {
|
||||
|
@ -91,6 +84,15 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch
|
|||
}
|
||||
};
|
||||
|
||||
endpoint.clearValue = function () {
|
||||
if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort();
|
||||
delete endpoint.geocodeRequest;
|
||||
removeLatLng();
|
||||
delete endpoint.value;
|
||||
input.val("");
|
||||
map.removeLayer(endpoint.marker);
|
||||
};
|
||||
|
||||
endpoint.swapCachedReverseGeocodes = function (otherEndpoint) {
|
||||
const g0 = endpoint.cachedReverseGeocode;
|
||||
const g1 = otherEndpoint.cachedReverseGeocode;
|
||||
|
|
|
@ -134,7 +134,7 @@ OSM.Directions = function (map) {
|
|||
// copy loading item to sidebar and display it. we copy it, rather than
|
||||
// just using it in-place and replacing it in case it has to be used
|
||||
// again.
|
||||
$("#sidebar_content").html($(".directions_form .loader_copy").html());
|
||||
$("#directions_content").html($(".directions_form .loader_copy").html());
|
||||
map.setSidebarOverlaid(false);
|
||||
controller = new AbortController();
|
||||
chosenEngine.getRoute(points, controller.signal).then(function (route) {
|
||||
|
@ -158,16 +158,10 @@ OSM.Directions = function (map) {
|
|||
|
||||
const turnByTurnTable = $("<table class='table table-hover table-sm mb-3'>")
|
||||
.append($("<tbody>"));
|
||||
const directionsCloseButton = $("<button type='button' class='btn-close'>")
|
||||
.attr("aria-label", I18n.t("javascripts.close"));
|
||||
|
||||
$("#sidebar_content")
|
||||
$("#directions_content")
|
||||
.empty()
|
||||
.append(
|
||||
$("<div class='d-flex'>").append(
|
||||
$("<h2 class='flex-grow-1 text-break'>")
|
||||
.text(I18n.t("javascripts.directions.directions")),
|
||||
$("<div>").append(directionsCloseButton)),
|
||||
distanceText,
|
||||
turnByTurnTable
|
||||
);
|
||||
|
@ -203,27 +197,19 @@ OSM.Directions = function (map) {
|
|||
URL.revokeObjectURL(downloadURL);
|
||||
downloadURL = URL.createObjectURL(blob);
|
||||
|
||||
$("#sidebar_content").append(`<p class="text-center"><a href="${downloadURL}" download="${
|
||||
$("#directions_content").append(`<p class="text-center"><a href="${downloadURL}" download="${
|
||||
I18n.t("javascripts.directions.filename")
|
||||
}">${
|
||||
I18n.t("javascripts.directions.download")
|
||||
}</a></p>`);
|
||||
|
||||
$("#sidebar_content").append("<p class=\"text-center\">" +
|
||||
$("#directions_content").append("<p class=\"text-center\">" +
|
||||
I18n.t("javascripts.directions.instructions.courtesy", { link: chosenEngine.creditline }) +
|
||||
"</p>");
|
||||
|
||||
directionsCloseButton.on("click", function () {
|
||||
map.removeLayer(polyline);
|
||||
$("#sidebar_content").html("");
|
||||
popup.close();
|
||||
map.setSidebarOverlaid(true);
|
||||
// TODO: collapse width of sidebar back to previous
|
||||
});
|
||||
}).catch(function () {
|
||||
map.removeLayer(polyline);
|
||||
if (reportErrors) {
|
||||
$("#sidebar_content").html("<div class=\"alert alert-danger\">" + I18n.t("javascripts.directions.errors.no_route") + "</div>");
|
||||
$("#directions_content").html("<div class=\"alert alert-danger\">" + I18n.t("javascripts.directions.errors.no_route") + "</div>");
|
||||
}
|
||||
}).finally(function () {
|
||||
controller = null;
|
||||
|
@ -238,6 +224,15 @@ OSM.Directions = function (map) {
|
|||
}
|
||||
}
|
||||
|
||||
function hideRoute(e) {
|
||||
e.stopPropagation();
|
||||
map.removeLayer(polyline);
|
||||
$("#directions_content").html("");
|
||||
popup.close();
|
||||
map.setSidebarOverlaid(true);
|
||||
// TODO: collapse width of sidebar back to previous
|
||||
}
|
||||
|
||||
setEngine("fossgis_osrm_car");
|
||||
setEngine(Cookies.get("_osm_directions_engine"));
|
||||
|
||||
|
@ -284,11 +279,18 @@ OSM.Directions = function (map) {
|
|||
map.once("startinglocation", startingLocationListener);
|
||||
});
|
||||
|
||||
const page = {};
|
||||
function initializeFromParams() {
|
||||
const params = new URLSearchParams(location.search),
|
||||
route = (params.get("route") || "").split(";");
|
||||
|
||||
page.pushstate = page.popstate = function () {
|
||||
$(".search_form").hide();
|
||||
$(".directions_form").show();
|
||||
if (params.has("engine")) setEngine(params.get("engine"));
|
||||
|
||||
endpoints[0].setValue(params.get("from") || route[0] || lastLocation.join(", "));
|
||||
endpoints[1].setValue(params.get("to") || route[1] || "");
|
||||
}
|
||||
|
||||
function enableListeners() {
|
||||
$("#sidebar_content").on("click", ".btn-close", hideRoute);
|
||||
|
||||
$("#map").on("dragend dragover", function (e) {
|
||||
e.preventDefault();
|
||||
|
@ -308,32 +310,51 @@ OSM.Directions = function (map) {
|
|||
|
||||
map.on("locationfound", sendstartinglocation);
|
||||
|
||||
endpoints[0].enable();
|
||||
endpoints[1].enable();
|
||||
endpoints[0].enableListeners();
|
||||
endpoints[1].enableListeners();
|
||||
}
|
||||
|
||||
const params = new URLSearchParams(location.search),
|
||||
route = (params.get("route") || "").split(";");
|
||||
const page = {};
|
||||
|
||||
if (params.has("engine")) setEngine(params.get("engine"));
|
||||
page.pushstate = page.popstate = function () {
|
||||
if ($("#directions_content").length) {
|
||||
page.load();
|
||||
} else {
|
||||
initializeFromParams();
|
||||
|
||||
endpoints[0].setValue(params.get("from") || route[0] || lastLocation.join(", "));
|
||||
endpoints[1].setValue(params.get("to") || route[1] || "");
|
||||
$(".search_form").hide();
|
||||
$(".directions_form").show();
|
||||
|
||||
map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng);
|
||||
OSM.loadSidebarContent("/directions", enableListeners);
|
||||
|
||||
map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng);
|
||||
}
|
||||
};
|
||||
|
||||
page.load = function () {
|
||||
page.pushstate();
|
||||
initializeFromParams();
|
||||
|
||||
$(".search_form").hide();
|
||||
$(".directions_form").show();
|
||||
|
||||
enableListeners();
|
||||
|
||||
map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng);
|
||||
};
|
||||
|
||||
page.unload = function () {
|
||||
$(".search_form").show();
|
||||
$(".directions_form").hide();
|
||||
|
||||
$("#sidebar_content").off("click", ".btn-close", hideRoute);
|
||||
$("#map").off("dragend dragover drop");
|
||||
map.off("locationfound", sendstartinglocation);
|
||||
|
||||
endpoints[0].disable();
|
||||
endpoints[1].disable();
|
||||
endpoints[0].disableListeners();
|
||||
endpoints[1].disableListeners();
|
||||
|
||||
endpoints[0].clearValue();
|
||||
endpoints[1].clearValue();
|
||||
|
||||
map
|
||||
.removeLayer(popup)
|
||||
|
|
|
@ -336,10 +336,6 @@ body.small-nav {
|
|||
#sidebar {
|
||||
float: left;
|
||||
width: $sidebarWidth;
|
||||
|
||||
#sidebar_loader {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.overlay-sidebar #sidebar {
|
||||
|
@ -355,6 +351,7 @@ body.small-nav {
|
|||
display: block;
|
||||
}
|
||||
|
||||
#sidebar_loader,
|
||||
#sidebar_content {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -1 +1,5 @@
|
|||
<% content_for(:content_class) { "overlay-sidebar" } %>
|
||||
|
||||
<%= render "sidebar_header", :title => t(".title") %>
|
||||
|
||||
<div id="directions_content"></div>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
<div id="browse_status"></div>
|
||||
|
||||
<div id="sidebar_loader" class="my-3 text-center loader">
|
||||
<div id="sidebar_loader" class="my-3 text-center loader" hidden>
|
||||
<div class="spinner-border" role="status">
|
||||
<span class="visually-hidden"><%= t("browse.start_rjs.loading") %></span>
|
||||
</div>
|
||||
|
|
|
@ -1509,6 +1509,9 @@ en:
|
|||
results:
|
||||
no_results: "No results found"
|
||||
more_results: "More results"
|
||||
directions:
|
||||
search:
|
||||
title: Directions
|
||||
issues:
|
||||
index:
|
||||
title: Issues
|
||||
|
@ -3245,7 +3248,6 @@ en:
|
|||
directions:
|
||||
ascend: "Ascend"
|
||||
descend: "Descend"
|
||||
directions: "Directions"
|
||||
distance: "Distance"
|
||||
distance_m: "%{distance}m"
|
||||
distance_km: "%{distance}km"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue