From 1e8394f04ce2a27f98982ab233defc2881c53cdc Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Mon, 28 Apr 2025 04:20:57 +0300 Subject: [PATCH] Schedule route request to be executed later if sidebar is not loaded --- app/assets/javascripts/index/directions.js | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/index/directions.js b/app/assets/javascripts/index/directions.js index c5d5cce15..5f7386518 100644 --- a/app/assets/javascripts/index/directions.js +++ b/app/assets/javascripts/index/directions.js @@ -8,6 +8,8 @@ OSM.Directions = function (map) { let lastLocation = []; let chosenEngine; + let scheduledRouteArguments = null; + const routeOutput = OSM.DirectionsRouteOutput(map); const endpointDragCallback = function (dragging) { @@ -86,7 +88,15 @@ OSM.Directions = function (map) { select.val(chosenEngine.provider); } - function getRoute(fitRoute, reportErrors) { + function getRoute(...routeArguments) { + if ($("#directions_content").length) { + getScheduledRoute(...routeArguments); + } else { + scheduledRouteArguments = routeArguments; + } + } + + function getScheduledRoute(fitRoute, reportErrors) { // Cancel any route that is already in progress if (controller) controller.abort(); @@ -220,7 +230,14 @@ OSM.Directions = function (map) { $(".search_form").hide(); $(".directions_form").show(); - OSM.loadSidebarContent("/directions", enableListeners); + OSM.loadSidebarContent("/directions", () => { + enableListeners(); + + if (scheduledRouteArguments) { + getScheduledRoute(...scheduledRouteArguments); + scheduledRouteArguments = null; + } + }); map.setSidebarOverlaid(!endpoints[0].latlng || !endpoints[1].latlng); } @@ -252,6 +269,8 @@ OSM.Directions = function (map) { endpoints[1].clearValue(); routeOutput.remove($("#directions_content")); + + scheduledRouteArguments = null; }; return page; -- 2.39.5