From 2f0181e327a004afa21df57d85a766679be128db Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 2 Apr 2025 02:51:45 +0300 Subject: [PATCH] Make 'Load more' button behave as link on history pages --- app/assets/javascripts/index/history.js | 38 +++++++++++++++++-------- app/views/changesets/index.html.erb | 4 +-- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/app/assets/javascripts/index/history.js b/app/assets/javascripts/index/history.js index c9810332d..a05987214 100644 --- a/app/assets/javascripts/index/history.js +++ b/app/assets/javascripts/index/history.js @@ -134,7 +134,6 @@ OSM.History = function (map) { function loadFirstChangesets() { const data = new URLSearchParams(); - const params = new URLSearchParams(location.search); disableChangesetIntersectionObserver(); @@ -145,14 +144,7 @@ OSM.History = function (map) { feedLink.attr("href", feedHref + "?" + data); } - data.set("list", "1"); - - if (params.has("before")) { - data.set("before", params.get("before")); - } - if (params.has("after")) { - data.set("after", params.get("after")); - } + setListFetchData(data, location); fetch(location.pathname + "?" + data) .then(response => response.text()) @@ -160,11 +152,11 @@ OSM.History = function (map) { displayFirstChangesets(html); enableChangesetIntersectionObserver(); - if (params.has("before")) { + if (data.has("before")) { const [firstItem] = $("#sidebar_content .changesets ol").children().first(); firstItem?.scrollIntoView(); } - if (params.has("after")) { + if (data.has("after")) { const [lastItem] = $("#sidebar_content .changesets ol").children().last(); lastItem?.scrollIntoView(false); } @@ -182,7 +174,16 @@ OSM.History = function (map) { $(this).hide(); div.find(".loader").show(); - fetch($(this).attr("href")) + const data = new URLSearchParams(); + + if (location.pathname === "/history") { + data.set("bbox", map.getBounds().wrap().toBBoxString()); + } + + const url = new URL($(this).attr("href"), location); + setListFetchData(data, url); + + fetch(url.pathname + "?" + data) .then(response => response.text()) .then(function (html) { displayMoreChangesets(div, html); @@ -192,6 +193,19 @@ OSM.History = function (map) { }); } + function setListFetchData(data, url) { + const params = new URLSearchParams(url.search); + + data.set("list", "1"); + + if (params.has("before")) { + data.set("before", params.get("before")); + } + if (params.has("after")) { + data.set("after", params.get("after")); + } + } + function reloadChangesetsBecauseOfMapMovement() { OSM.router.replace("/history" + window.location.hash); loadFirstChangesets(); diff --git a/app/views/changesets/index.html.erb b/app/views/changesets/index.html.erb index 3f25cf134..d6b074461 100644 --- a/app/views/changesets/index.html.erb +++ b/app/views/changesets/index.html.erb @@ -1,6 +1,6 @@ <% if @newer_changesets_id %>
- <%= link_to t(".load_more"), url_for(@params.merge(:before => nil, :after => @newer_changesets_id)), :class => "btn btn-primary" %> + <%= link_to t(".load_more"), url_for(:after => @newer_changesets_id), :class => "btn btn-primary" %>
<%= t("browse.start_rjs.loading") %> @@ -21,7 +21,7 @@ <% end %> <% if @older_changesets_id -%>
- <%= link_to t(".load_more"), url_for(@params.merge(:before => @older_changesets_id, :after => nil)), :class => "btn btn-primary" %> + <%= link_to t(".load_more"), url_for(:before => @older_changesets_id), :class => "btn btn-primary" %>
<%= t("browse.start_rjs.loading") %> -- 2.39.5