]> git.openstreetmap.org Git - rails.git/commitdiff
Convert newHalo() to addHalo() and removeHalo()
authorAnton Khorev <tony29@yandex.ru>
Wed, 25 Dec 2024 01:38:23 +0000 (04:38 +0300)
committerAnton Khorev <tony29@yandex.ru>
Tue, 31 Dec 2024 22:53:55 +0000 (01:53 +0300)
newHalo() wasn't always creating new halos. It had an event type argument that was checked against drag event. Depending on this check, newHalo() could remove the halo.

app/assets/javascripts/index/new_note.js

index 0ce77f8ca8f8cacf70fddec0b5a3f05c4f012639..712d03dc50f780a6f2f740dc51e3ac9a94ba68d1 100644 (file)
@@ -59,23 +59,22 @@ OSM.NewNote = function (map) {
     marker.addTo(noteLayer);
   }
 
-  function newHalo(loc, a) {
-    var hasHalo = halo && map.hasLayer(halo);
+  function addHalo(latlng) {
+    if (halo) map.removeLayer(halo);
 
-    if (a === "dragstart" && hasHalo) {
-      map.removeLayer(halo);
-    } else {
-      if (hasHalo) map.removeLayer(halo);
+    halo = L.circleMarker(latlng, {
+      weight: 2.5,
+      radius: 20,
+      fillOpacity: 0.5,
+      color: "#FF6200"
+    });
 
-      halo = L.circleMarker(loc, {
-        weight: 2.5,
-        radius: 20,
-        fillOpacity: 0.5,
-        color: "#FF6200"
-      });
+    map.addLayer(halo);
+  }
 
-      map.addLayer(halo);
-    }
+  function removeHalo() {
+    if (halo) map.removeLayer(halo);
+    halo = null;
   }
 
   page.pushstate = page.popstate = function (path) {
@@ -112,11 +111,14 @@ OSM.NewNote = function (map) {
     });
 
     newNoteMarker.on("dragstart dragend", function (a) {
-      newHalo(newNoteMarker.getLatLng(), a.type);
+      removeHalo();
+      if (a.type !== "dragstart") {
+        addHalo(newNoteMarker.getLatLng());
+      }
     });
 
     newNoteMarker.addTo(map);
-    newHalo(newNoteMarker.getLatLng());
+    addHalo(newNoteMarker.getLatLng());
 
     newNoteMarker.on("remove", function () {
       addNoteButton.removeClass("active");
@@ -156,7 +158,7 @@ OSM.NewNote = function (map) {
 
   page.unload = function () {
     if (newNoteMarker) map.removeLayer(newNoteMarker);
-    if (halo) map.removeLayer(halo);
+    removeHalo();
     addNoteButton.removeClass("active");
   };