]> git.openstreetmap.org Git - rails.git/commitdiff
Add 'before' parameter to history pages
authorAnton Khorev <tony29@yandex.ru>
Sat, 15 Mar 2025 23:11:22 +0000 (02:11 +0300)
committerAnton Khorev <tony29@yandex.ru>
Sat, 15 Mar 2025 23:22:16 +0000 (02:22 +0300)
app/assets/javascripts/index/history.js
test/system/history_test.rb

index 6e4e73a23fa7e5564bcad943a6b78f4111a96680..dddd84354473d6a126895b1f738f6261b40cfda5 100644 (file)
@@ -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) {
index 679f711b307fbcaf156f1e35f366c719983d5e91..4f2114f25dbc1669bc11642d86e75cf737a77b5b 100644 (file)
@@ -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)