]> git.openstreetmap.org Git - rails.git/commitdiff
Introduce drag event callback for route endpoints
authorAnton Khorev <tony29@yandex.ru>
Sat, 15 Jun 2024 18:51:48 +0000 (21:51 +0300)
committerAnton Khorev <tony29@yandex.ru>
Sat, 15 Jun 2024 18:51:48 +0000 (21:51 +0300)
Avoids calling getRoute() from within endpoint objects.

app/assets/javascripts/index/directions.js

index 9c5ff2a8d2af724697f2b166e3de7be1b139c352..8d9263323e44c154f60a77ede80f1eb8425da3df 100644 (file)
@@ -20,9 +20,15 @@ OSM.Directions = function (map) {
     weight: 12
   });
 
+  var endpointDragCallback = function (dragging) {
+    if (map.hasLayer(polyline)) {
+      getRoute(false, !dragging);
+    }
+  };
+
   var endpoints = [
-    Endpoint($("input[name='route_from']"), OSM.MARKER_GREEN),
-    Endpoint($("input[name='route_to']"), OSM.MARKER_RED)
+    Endpoint($("input[name='route_from']"), OSM.MARKER_GREEN, endpointDragCallback),
+    Endpoint($("input[name='route_to']"), OSM.MARKER_RED, endpointDragCallback)
   ];
 
   var expiry = new Date();
@@ -42,7 +48,7 @@ OSM.Directions = function (map) {
     select.append("<option value='" + i + "'>" + I18n.t("javascripts.directions.engines." + engine.id) + "</option>");
   });
 
-  function Endpoint(input, iconUrl) {
+  function Endpoint(input, iconUrl, dragCallback) {
     var endpoint = {};
 
     endpoint.marker = L.marker([0, 0], {
@@ -63,9 +69,7 @@ OSM.Directions = function (map) {
       if (dragging && !chosenEngine.draggable) return;
       if (dragging && awaitingRoute) return;
       endpoint.setLatLng(e.target.getLatLng());
-      if (map.hasLayer(polyline)) {
-        getRoute(false, !dragging);
-      }
+      dragCallback(dragging);
     });
 
     input.on("keydown", function () {