From 35229a990f53463aa4bdf5d09fbb212b192f7360 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Thu, 3 Apr 2025 06:44:25 +0300 Subject: [PATCH] Don't set bbox history param when the entire world is visible --- app/assets/javascripts/index/history.js | 10 +++++++++- test/system/history_test.rb | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index 85b5e96eb..1a23ac7b1 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -213,7 +213,15 @@ OSM.History = function (map) { } function setBboxFetchData(data) { - data.set("bbox", map.getBounds().wrap().toBBoxString()); + const crs = map.options.crs; + const sw = map.getBounds().getSouthWest(); + const ne = map.getBounds().getNorthEast(); + const swClamped = crs.unproject(crs.project(sw)); + const neClamped = crs.unproject(crs.project(ne)); + + if (sw.lat >= swClamped.lat || ne.lat <= neClamped.lat || ne.lng - sw.lng < 360) { + data.set("bbox", map.getBounds().wrap().toBBoxString()); + } } function setListFetchData(data, url) { diff --git a/test/system/history_test.rb b/test/system/history_test.rb index 37b5cd0aa..5c66144c1 100644 --- a/test/system/history_test.rb +++ b/test/system/history_test.rb @@ -133,6 +133,27 @@ class HistoryTest < ApplicationSystemTestCase assert_current_path history_path end + test "all changesets are listed when fully zoomed out" do + user = create(:user) + [-177, -90, 0, 90, 177].each do |lon| + create(:changeset, :user => user, :num_changes => 1, + :min_lat => 0 * GeoRecord::SCALE, :min_lon => (lon - 1) * GeoRecord::SCALE, + :max_lat => 1 * GeoRecord::SCALE, :max_lon => (lon + 1) * GeoRecord::SCALE) do |changeset| + create(:changeset_tag, :changeset => changeset, :k => "comment", :v => "changeset-at-lon(#{lon})") + end + end + + visit history_path(:anchor => "map=0/0/0") + + within_sidebar do + assert_link "changeset-at-lon(-177)", :count => 1 + assert_link "changeset-at-lon(-90)", :count => 1 + assert_link "changeset-at-lon(0)", :count => 1 + assert_link "changeset-at-lon(90)", :count => 1 + assert_link "changeset-at-lon(177)", :count => 1 + end + end + private def create_visible_changeset(user, comment) -- 2.39.5