From: Anton Khorev Date: Sat, 15 Mar 2025 23:11:22 +0000 (+0300) Subject: Add 'before' parameter to history pages X-Git-Tag: live~9^2~2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/02f5b0a81893dc8b1a63e7e0f134ac10905a992e?ds=inline Add 'before' parameter to history pages --- diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index 6e4e73a23..dddd84354 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -57,6 +57,7 @@ OSM.History = function (map) { function update() { const data = new URLSearchParams(); + const params = new URLSearchParams(location.search); if (location.pathname === "/history") { data.set("bbox", map.getBounds().wrap().toBBoxString()); @@ -67,6 +68,10 @@ OSM.History = function (map) { data.set("list", "1"); + if (params.has("before")) { + data.set("before", params.get("before")); + } + fetch(location.pathname + "?" + data) .then(response => response.text()) .then(function (html) { diff --git a/test/system/history_test.rb b/test/system/history_test.rb index 679f711b3..4f2114f25 100644 --- a/test/system/history_test.rb +++ b/test/system/history_test.rb @@ -53,6 +53,36 @@ class HistoryTest < ApplicationSystemTestCase end end + test "user history starts before specified changeset" do + user = create(:user) + changeset1 = create_visible_changeset(user, "1st-changeset-in-history") + changeset2 = create_visible_changeset(user, "2nd-changeset-in-history") + changeset3 = create(:changeset) + + visit "#{user_path user}/history?before=#{changeset1.id}" + + within_sidebar do + assert_no_link "1st-changeset-in-history" + assert_no_link "2nd-changeset-in-history" + end + + visit "#{user_path user}/history?before=#{changeset2.id}" + + within_sidebar do + assert_link "1st-changeset-in-history" + assert_no_link "2nd-changeset-in-history" + end + + visit "#{user_path user}/history?before=#{changeset3.id}" + + within_sidebar do + assert_link "1st-changeset-in-history" + assert_link "2nd-changeset-in-history" + end + end + + private + def create_visible_changeset(user, comment) create(:changeset, :user => user, :num_changes => 1) do |changeset| create(:changeset_tag, :changeset => changeset, :k => "comment", :v => comment)