]> git.openstreetmap.org Git - rails.git/commitdiff
Show only description as a marker tooltip in note layer
authorAnton Khorev <tony29@yandex.ru>
Wed, 29 Jan 2025 14:57:26 +0000 (17:57 +0300)
committerAnton Khorev <tony29@yandex.ru>
Wed, 29 Jan 2025 15:02:01 +0000 (18:02 +0300)
app/assets/javascripts/index/layers/notes.js
test/system/note_layer_test.rb [new file with mode: 0644]

index c0ba35d7e1b0d6f7c2e3819af78f1a7aada91f6f..1068472d5171bd0ab48c5ada2944be454ad79013 100644 (file)
@@ -40,9 +40,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
       });
diff --git a/test/system/note_layer_test.rb b/test/system/note_layer_test.rb
new file mode 100644 (file)
index 0000000..792c341
--- /dev/null
@@ -0,0 +1,40 @@
+require "application_system_test_case"
+
+class NoteLayerTest < ApplicationSystemTestCase
+  test "note marker should have description as a title" do
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note, :latitude => position, :longitude => position) do |note|
+      create(:note_comment, :note => note, :body => "Note description")
+    end
+
+    visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
+    all "img.leaflet-marker-icon", :count => 1 do |marker|
+      assert_equal "Note description", marker["title"]
+    end
+  end
+
+  test "note marker should not have a title if the note has no visible description" do
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note, :latitude => position, :longitude => position) do |note|
+      create(:note_comment, :note => note, :body => "Note description is hidden", :visible => false)
+      create(:note_comment, :note => note, :body => "Note comment visible", :event => "commented")
+    end
+
+    visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
+    all "img.leaflet-marker-icon", :count => 1 do |marker|
+      assert_equal "", marker["title"]
+    end
+  end
+
+  test "note marker should not have a title if the note has no visible description and comments" do
+    position = (1.1 * GeoRecord::SCALE).to_i
+    create(:note, :latitude => position, :longitude => position) do |note|
+      create(:note_comment, :note => note, :body => "Note description is hidden", :visible => false)
+    end
+
+    visit root_path(:anchor => "map=18/1.1/1.1&layers=N")
+    all "img.leaflet-marker-icon", :count => 1 do |marker|
+      assert_equal "", marker["title"]
+    end
+  end
+end