]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5921'
authorTom Hughes <tom@compton.nu>
Sun, 13 Apr 2025 09:38:39 +0000 (10:38 +0100)
committerTom Hughes <tom@compton.nu>
Sun, 13 Apr 2025 09:38:39 +0000 (10:38 +0100)
app/assets/javascripts/leaflet.key.js
app/assets/javascripts/osm.js.erb
lib/map_layers.rb
test/system/search_test.rb

index a5d7acb430507b98e4ef7c96608bc69f0f835abf..b432bcf8fce059381fe875ddb49f0045f285e0e2 100644 (file)
@@ -27,7 +27,7 @@ L.OSM.key = function (options) {
     }
 
     function updateButton() {
-      const disabled = OSM.LAYERS_WITH_MAP_KEY.indexOf(map.getMapBaseLayerId()) === -1;
+      const disabled = !map.getMapBaseLayer().options.hasLegend;
       button
         .toggleClass("disabled", disabled)
         .attr("data-bs-original-title",
index d73d1c16302d5c9b64017a885b4e07a04f2d90b9..31f92da84a846644e9e99fe2c653dc18bc983a9b 100644 (file)
@@ -27,8 +27,7 @@ OSM = {
 
   DEFAULT_LOCALE: <%= I18n.default_locale.to_json %>,
 
-  LAYER_DEFINITIONS: <%= MapLayers::full_definitions("config/layers.yml").to_json %>,
-  LAYERS_WITH_MAP_KEY: <%= YAML.load_file(Rails.root.join("config/key.yml")).keys.to_json %>,
+  LAYER_DEFINITIONS: <%= MapLayers::full_definitions("config/layers.yml", :legends => "config/key.yml").to_json %>,
 
   MARKER_BLUE: <%= image_path("marker-blue.png").to_json %>,
   MARKER_GREEN: <%= image_path("marker-green.png").to_json %>,
index 8a1bdea79789a02f23545f6d15ea42a999aaef55..f0727ed927bf528b843a4bc77c0bb4e1a7bf96f4 100644 (file)
@@ -1,5 +1,6 @@
 module MapLayers
-  def self.full_definitions(layers_filename)
+  def self.full_definitions(layers_filename, legends: nil)
+    legended_layers = YAML.load_file(Rails.root.join(legends)).keys if legends
     YAML.load_file(Rails.root.join(layers_filename))
         .reject { |layer| layer["apiKeyId"] && !Settings[layer["apiKeyId"]] }
         .map do |layer|
@@ -7,6 +8,7 @@ module MapLayers
             layer["apikey"] = Settings[layer["apiKeyId"]]
             layer.delete "apiKeyId"
           end
+          layer["hasLegend"] = true if legended_layers&.include?(layer["layerId"])
           layer
         end
   end
index bf05f92122a2e098093148370edd50545b5ae60a..0292e67f0f3389c25333ab0c0dce97f20a49723e 100644 (file)
@@ -1,7 +1,13 @@
 require "application_system_test_case"
 
 class SearchTest < ApplicationSystemTestCase
-  test "click on 'where is this' sets search input value and makes reverse geocoding request with zoom" do
+  def setup
+    stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/search\?})
+      .to_return(:status => 404)
+
+    stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?})
+      .to_return(:status => 404)
+
     stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?.*zoom=$})
       .to_return(:status => 400, :body => <<-BODY)
         <?xml version="1.0" encoding="UTF-8"?>
@@ -27,7 +33,9 @@ class SearchTest < ApplicationSystemTestCase
           </addressparts>
         </reversegeocode>
       BODY
+  end
 
+  test "click on 'where is this' sets search input value and makes reverse geocoding request with zoom" do
     visit "/#map=15/51.76320/-0.00760"
 
     assert_field "Search", :with => ""
@@ -37,28 +45,28 @@ class SearchTest < ApplicationSystemTestCase
     assert_link "Broxbourne, Hertfordshire, East of England, England, United Kingdom"
   end
 
-  test "query search link sets search input value" do
-    stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?})
-      .to_return(:status => 404)
+  test "'Show address' from context menu makes reverse geocoding request with zoom" do
+    visit "/#map=15/51.76320/-0.00760"
+
+    find_by_id("map").right_click
+    click_on "Show address"
 
+    assert_link "Broxbourne, Hertfordshire, East of England, England, United Kingdom"
+  end
+
+  test "query search link sets search input value" do
     visit search_path(:query => "2.341, 7.896")
 
     assert_field "Search", :with => "2.341, 7.896"
   end
 
   test "latlon search link sets search input value" do
-    stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?})
-      .to_return(:status => 404)
-
     visit search_path(:lat => "4.321", :lon => "9.876")
 
     assert_field "Search", :with => "4.321, 9.876"
   end
 
   test "search adds viewbox param to Nominatim link" do
-    stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/search\?})
-      .to_return(:status => 404)
-
     visit "/"
 
     fill_in "query", :with => "paris"
@@ -68,9 +76,6 @@ class SearchTest < ApplicationSystemTestCase
   end
 
   test "search adds zoom param to reverse Nominatim link" do
-    stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?})
-      .to_return(:status => 404)
-
     visit "/#map=7/1.234/6.789"
 
     fill_in "query", :with => "60 30"