]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/index/layers/notes.js
Merge remote-tracking branch 'upstream/pull/5577'
[rails.git] / app / assets / javascripts / index / layers / notes.js
index eaa5c36547829691d53b881e0c002267b8bfae6f..24bf969b3380581e9e3b07f35873b36a9fe6a170 100644 (file)
@@ -1,6 +1,7 @@
 OSM.initializeNotesLayer = function (map) {
-  var noteLayer = map.noteLayer,
-      notes = {};
+  let noteLoader;
+  const noteLayer = map.noteLayer;
+  let notes = {};
 
   var noteIcons = {
     "new": L.icon({
@@ -20,20 +21,18 @@ OSM.initializeNotesLayer = function (map) {
     })
   };
 
-  map.on("layeradd", function (e) {
-    if (e.layer === noteLayer) {
-      loadNotes();
-      map.on("moveend", loadNotes);
-    }
-  }).on("layerremove", function (e) {
-    if (e.layer === noteLayer) {
-      map.off("moveend", loadNotes);
-      noteLayer.clearLayers();
-      notes = {};
-    }
-  });
-
-  noteLayer.on("click", function (e) {
+  noteLayer.on("add", () => {
+    loadNotes();
+    map.on("moveend", loadNotes);
+    map.fire("overlayadd", { layer: noteLayer });
+  }).on("remove", () => {
+    if (noteLoader) noteLoader.abort();
+    noteLoader = null;
+    map.off("moveend", loadNotes);
+    noteLayer.clearLayers();
+    notes = {};
+    map.fire("overlayremove", { layer: noteLayer });
+  }).on("click", function (e) {
     if (e.layer.id) {
       OSM.router.route("/note/" + e.layer.id);
     }
@@ -44,9 +43,16 @@ OSM.initializeNotesLayer = function (map) {
     if (marker) {
       marker.setIcon(noteIcons[feature.properties.status]);
     } else {
+      let title;
+      const description = feature.properties.comments[0];
+
+      if (description?.action === "opened") {
+        title = description.text;
+      }
+
       marker = L.marker(feature.geometry.coordinates.reverse(), {
         icon: noteIcons[feature.properties.status],
-        title: feature.properties.comments[0].text,
+        title,
         opacity: 0.8,
         interactive: true
       });
@@ -60,8 +66,6 @@ OSM.initializeNotesLayer = function (map) {
     return marker.id;
   };
 
-  var noteLoader;
-
   function loadNotes() {
     var bounds = map.getBounds();
     var size = bounds.getSize();