From 4411d972f1ebdb6fa6ce05b106f192a7bbba46eb Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 19 Mar 2026 18:22:54 +0000 Subject: [PATCH] Group pagination data into a struct --- app/controllers/changesets_controller.rb | 2 +- app/controllers/concerns/pagination_methods.rb | 12 +++++++----- app/controllers/diary_entries_controller.rb | 2 +- app/controllers/issues_controller.rb | 4 ++-- app/controllers/old_nodes_controller.rb | 2 +- app/controllers/old_relations_controller.rb | 2 +- app/controllers/old_ways_controller.rb | 2 +- app/controllers/traces_controller.rb | 2 +- app/controllers/user_blocks_controller.rb | 2 +- .../users/changeset_comments_controller.rb | 2 +- app/controllers/users/diary_comments_controller.rb | 2 +- app/controllers/users/issued_blocks_controller.rb | 2 +- app/controllers/users/lists_controller.rb | 2 +- app/controllers/users/received_blocks_controller.rb | 2 +- app/views/changesets/index.atom.builder | 4 ++-- app/views/changesets/index.html.erb | 12 ++++++------ app/views/diary_entries/_page.html.erb | 10 +++------- app/views/diary_entries/index.html.erb | 2 +- app/views/issues/_page.html.erb | 12 ++++-------- app/views/old_elements/index.html.erb | 10 +++++----- app/views/old_elements/index.turbo_stream.erb | 12 ++++++------ app/views/shared/_pagination.html.erb | 12 ++++++------ app/views/traces/_page.html.erb | 10 +++------- app/views/traces/index.html.erb | 2 +- app/views/user_blocks/_page.html.erb | 8 +++----- app/views/user_blocks/index.html.erb | 2 +- app/views/users/changeset_comments/_page.html.erb | 10 +++------- app/views/users/comments/index.html.erb | 2 +- app/views/users/diary_comments/_page.html.erb | 10 +++------- app/views/users/issued_blocks/show.html.erb | 2 +- app/views/users/lists/_page.html.erb | 10 ++++------ app/views/users/received_blocks/show.html.erb | 2 +- 32 files changed, 75 insertions(+), 97 deletions(-) diff --git a/app/controllers/changesets_controller.rb b/app/controllers/changesets_controller.rb index 9c156d62a..1c040f687 100644 --- a/app/controllers/changesets_controller.rb +++ b/app/controllers/changesets_controller.rb @@ -68,7 +68,7 @@ class ChangesetsController < ApplicationController changesets = changesets.where(:user => current_user.nearby) end - @changesets, @newer_changesets_id, @older_changesets_id = get_page_items(changesets, :includes => [:user, :changeset_tags, :comments]) + @changesets = get_page_items(changesets, :includes => [:user, :changeset_tags, :comments]) render :action => :index, :layout => false end diff --git a/app/controllers/concerns/pagination_methods.rb b/app/controllers/concerns/pagination_methods.rb index 60754764c..ebfaae720 100644 --- a/app/controllers/concerns/pagination_methods.rb +++ b/app/controllers/concerns/pagination_methods.rb @@ -3,6 +3,8 @@ module PaginationMethods extend ActiveSupport::Concern + Paginator = Struct.new(:items, :newer_items_cursor, :older_items_cursor) + private ## @@ -27,10 +29,10 @@ module PaginationMethods newer_items_cursor = page_items.first&.send cursor_column older_items_cursor = page_items.last&.send cursor_column - [ - page_items, - (newer_items_cursor if page_items.any? && items.exists?(["#{qualified_cursor_column} > ?", newer_items_cursor])), - (older_items_cursor if page_items.any? && items.exists?(["#{qualified_cursor_column} < ?", older_items_cursor])) - ] + Paginator.new( + :items => page_items, + :newer_items_cursor => (newer_items_cursor if page_items.any? && items.exists?(["#{qualified_cursor_column} > ?", newer_items_cursor])), + :older_items_cursor => (older_items_cursor if page_items.any? && items.exists?(["#{qualified_cursor_column} < ?", older_items_cursor])) + ) end end diff --git a/app/controllers/diary_entries_controller.rb b/app/controllers/diary_entries_controller.rb index 48db4cba5..a544ececa 100644 --- a/app/controllers/diary_entries_controller.rb +++ b/app/controllers/diary_entries_controller.rb @@ -53,7 +53,7 @@ class DiaryEntriesController < ApplicationController @params = params.permit(:display_name, :friends, :nearby, :language) - @entries, @newer_entries_id, @older_entries_id = get_page_items(entries, :includes => [:user, :language]) + @entries = get_page_items(entries, :includes => [:user, :language]) end def show diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 389a30cc6..3b8fa5600 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -45,10 +45,10 @@ class IssuesController < ApplicationController @issues = @issues.where(:updated_by => last_updated_by) end - @issues, @newer_issues_id, @older_issues_id = get_page_items(@issues, :limit => @params[:limit]) + @issues = get_page_items(@issues, :limit => @params[:limit]) @unique_reporters_limit = 3 - @unique_reporters = @issues.each_with_object({}) do |issue, reporters| + @unique_reporters = @issues.items.each_with_object({}) do |issue, reporters| user_ids = issue.reports.reorder(:created_at => :desc).pluck(:user_id).uniq reporters[issue.id] = { :count => user_ids.size, diff --git a/app/controllers/old_nodes_controller.rb b/app/controllers/old_nodes_controller.rb index 45695c86f..9abe3578f 100644 --- a/app/controllers/old_nodes_controller.rb +++ b/app/controllers/old_nodes_controller.rb @@ -4,7 +4,7 @@ class OldNodesController < OldElementsController def index @type = "node" @current_feature = @feature = Node.preload(:element_tags).find(params[:id]) - @old_features, @newer_features_version, @older_features_version = get_page_items( + @old_features = get_page_items( OldNode.where(:node_id => params[:id]), :cursor_column => :version, :includes => [:old_tags, { :changeset => [:changeset_tags, :user] }] diff --git a/app/controllers/old_relations_controller.rb b/app/controllers/old_relations_controller.rb index 4c2f6e049..bedc21f98 100644 --- a/app/controllers/old_relations_controller.rb +++ b/app/controllers/old_relations_controller.rb @@ -4,7 +4,7 @@ class OldRelationsController < OldElementsController def index @type = "relation" @current_feature = @feature = Relation.preload(:element_tags).find(params[:id]) - @old_features, @newer_features_version, @older_features_version = get_page_items( + @old_features = get_page_items( OldRelation.where(:relation_id => params[:id]), :cursor_column => :version, :includes => [:old_tags, { :changeset => [:changeset_tags, :user], :old_members => :member }] diff --git a/app/controllers/old_ways_controller.rb b/app/controllers/old_ways_controller.rb index 92c7345a4..22594ca65 100644 --- a/app/controllers/old_ways_controller.rb +++ b/app/controllers/old_ways_controller.rb @@ -4,7 +4,7 @@ class OldWaysController < OldElementsController def index @type = "way" @current_feature = @feature = Way.preload(:element_tags).find(params[:id]) - @old_features, @newer_features_version, @older_features_version = get_page_items( + @old_features = get_page_items( OldWay.where(:way_id => params[:id]), :cursor_column => :version, :includes => [:old_tags, { :changeset => [:changeset_tags, :user], :old_nodes => { :node => [:element_tags, :ways] } }] diff --git a/app/controllers/traces_controller.rb b/app/controllers/traces_controller.rb index e54e1c954..4aa98d30c 100644 --- a/app/controllers/traces_controller.rb +++ b/app/controllers/traces_controller.rb @@ -63,7 +63,7 @@ class TracesController < ApplicationController @params = params.permit(:display_name, :tag, :before, :after) - @traces, @newer_traces_id, @older_traces_id = get_page_items(traces, :includes => [:user, :tags]) + @traces = get_page_items(traces, :includes => [:user, :tags]) # final helper vars for view @target_user = target_user diff --git a/app/controllers/user_blocks_controller.rb b/app/controllers/user_blocks_controller.rb index 3e929b63d..8c9051013 100644 --- a/app/controllers/user_blocks_controller.rb +++ b/app/controllers/user_blocks_controller.rb @@ -22,7 +22,7 @@ class UserBlocksController < ApplicationController user_blocks = UserBlock.all - @user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) + @user_blocks = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) @show_user_name = true @show_creator_name = true diff --git a/app/controllers/users/changeset_comments_controller.rb b/app/controllers/users/changeset_comments_controller.rb index 9378c4750..81b4ff932 100644 --- a/app/controllers/users/changeset_comments_controller.rb +++ b/app/controllers/users/changeset_comments_controller.rb @@ -10,7 +10,7 @@ module Users @params = params.permit(:display_name, :before, :after) - @comments, @newer_comments_id, @older_comments_id = get_page_items(comments, :includes => [:author, :changeset]) + @comments = get_page_items(comments, :includes => [:author, :changeset]) end end end diff --git a/app/controllers/users/diary_comments_controller.rb b/app/controllers/users/diary_comments_controller.rb index 5ec606bcf..eaf287355 100644 --- a/app/controllers/users/diary_comments_controller.rb +++ b/app/controllers/users/diary_comments_controller.rb @@ -10,7 +10,7 @@ module Users @params = params.permit(:display_name, :before, :after) - @comments, @newer_comments_id, @older_comments_id = get_page_items(comments, :includes => [:user, :diary_entry]) + @comments = get_page_items(comments, :includes => [:user, :diary_entry]) end end end diff --git a/app/controllers/users/issued_blocks_controller.rb b/app/controllers/users/issued_blocks_controller.rb index e098d63ed..73fac9421 100644 --- a/app/controllers/users/issued_blocks_controller.rb +++ b/app/controllers/users/issued_blocks_controller.rb @@ -22,7 +22,7 @@ module Users user_blocks = UserBlock.where(:creator => @user) - @user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) + @user_blocks = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) @show_user_name = true @show_creator_name = false diff --git a/app/controllers/users/lists_controller.rb b/app/controllers/users/lists_controller.rb index 19680e8db..44d40b7db 100644 --- a/app/controllers/users/lists_controller.rb +++ b/app/controllers/users/lists_controller.rb @@ -27,7 +27,7 @@ module Users @users_count = users.limit(501).count @users_count = I18n.t("count.at_least_pattern", :count => 500) if @users_count > 500 - @users, @newer_users_id, @older_users_id = get_page_items(users, :limit => 50) + @users = get_page_items(users, :limit => 50) end ## diff --git a/app/controllers/users/received_blocks_controller.rb b/app/controllers/users/received_blocks_controller.rb index 5945d4d7b..06d660cc7 100644 --- a/app/controllers/users/received_blocks_controller.rb +++ b/app/controllers/users/received_blocks_controller.rb @@ -23,7 +23,7 @@ module Users user_blocks = UserBlock.where(:user => @user) - @user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) + @user_blocks = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) @show_user_name = false @show_creator_name = true diff --git a/app/views/changesets/index.atom.builder b/app/views/changesets/index.atom.builder index d8708528e..abf5edfce 100644 --- a/app/views/changesets/index.atom.builder +++ b/app/views/changesets/index.atom.builder @@ -7,7 +7,7 @@ atom_feed(:language => I18n.locale, :schema_date => 2009, "xmlns:georss" => "http://www.georss.org/georss") do |feed| feed.title changeset_index_title(params, current_user) - feed.updated @changesets.map { |e| [e.created_at, e.closed_at].max }.max + feed.updated @changesets.items.map { |e| [e.created_at, e.closed_at].max }.max feed.icon image_url("favicon.ico") feed.logo image_url("mag_map-rss2.0.png") @@ -15,7 +15,7 @@ atom_feed(:language => I18n.locale, :schema_date => 2009, xhtml.a "Open Data Commons Open Database License", :href => "https://opendatacommons.org/licenses/odbl/" end - @changesets.each do |changeset| + @changesets.items.each do |changeset| feed.entry(changeset, :updated => changeset.closed_at, :id => changeset_url(changeset.id, :only_path => false)) do |entry| entry.link :rel => "alternate", :href => api_changeset_url(changeset, :only_path => false), diff --git a/app/views/changesets/index.html.erb b/app/views/changesets/index.html.erb index 4ede3d9d1..e265d661e 100644 --- a/app/views/changesets/index.html.erb +++ b/app/views/changesets/index.html.erb @@ -1,4 +1,4 @@ -<% if @newer_changesets_id %> +<% if @changesets.newer_items_cursor %>
<% end %> -<% if @changesets.present? %> +<% if @changesets.items.present? %>
    - <%= render @changesets %> + <%= render @changesets.items %>
<% elsif params[:bbox] %>

<%= params[:before] ? t(".no_more_area") : t(".empty_area") %>

@@ -23,7 +23,7 @@ <% else %>

<%= params[:before] ? t(".no_more") : t(".empty") %>

<% end %> -<% if @older_changesets_id -%> +<% if @changesets.older_items_cursor -%>
diff --git a/app/views/diary_entries/_page.html.erb b/app/views/diary_entries/_page.html.erb index 63070e073..ec3efac04 100644 --- a/app/views/diary_entries/_page.html.erb +++ b/app/views/diary_entries/_page.html.erb @@ -3,13 +3,9 @@

<%= t ".recent_entries" %>

- <%= render "shared/pagination", - :newer_id => @newer_entries_id, - :older_id => @older_entries_id %> + <%= render "shared/pagination", :paginator => @entries %> - <%= render @entries, :truncated => true %> + <%= render @entries.items, :truncated => true %> - <%= render "shared/pagination", - :newer_id => @newer_entries_id, - :older_id => @older_entries_id %> + <%= render "shared/pagination", :paginator => @entries %>
diff --git a/app/views/diary_entries/index.html.erb b/app/views/diary_entries/index.html.erb index a6688d7a7..73645c1bd 100644 --- a/app/views/diary_entries/index.html.erb +++ b/app/views/diary_entries/index.html.erb @@ -16,7 +16,7 @@
<% end %> -<% if @entries.empty? %> +<% if @entries.items.empty? %>

<%= t ".no_entries" %>

<% else %> <%= render :partial => "page" %> diff --git a/app/views/issues/_page.html.erb b/app/views/issues/_page.html.erb index d9711abad..0ee4426fc 100644 --- a/app/views/issues/_page.html.erb +++ b/app/views/issues/_page.html.erb @@ -1,7 +1,7 @@ <%# locals: () %> - <% if @issues.length == 0 %> + <% if @issues.items.length == 0 %>

<% if params[:search_by_user].present? && !@find_user %> <%= t ".user_not_found" %> @@ -10,9 +10,7 @@ <% end %>

<% else %> - <%= render "shared/pagination", - :newer_id => @newer_issues_id, - :older_id => @older_issues_id %> + <%= render "shared/pagination", :paginator => @issues %> @@ -27,7 +25,7 @@ - <% @issues.each do |issue| %> + <% @issues.items.each do |issue| %> @@ -47,8 +45,6 @@
<%= t ".states.#{issue.status}" %> <%= link_to t(".reports_count", :count => issue.reports_count), issue %>
- <%= render "shared/pagination", - :newer_id => @newer_issues_id, - :older_id => @older_issues_id %> + <%= render "shared/pagination", :paginator => @issues %> <% end %>
diff --git a/app/views/old_elements/index.html.erb b/app/views/old_elements/index.html.erb index a9dee5bed..8f436b568 100644 --- a/app/views/old_elements/index.html.erb +++ b/app/views/old_elements/index.html.erb @@ -2,11 +2,11 @@ <%= render "sidebar_header", :title => t(".#{@type}.title_html", :name => printable_element_name(@feature)) %> -<% if @newer_features_version %> +<% if @old_features.newer_items_cursor %>