From 2ed84e26cdeaaa20b8f607624d65b7891fcf1fed Mon Sep 17 00:00:00 2001 From: Shaun McDonald Date: Thu, 27 Nov 2008 17:06:43 +0000 Subject: [PATCH] Adding pagination to the changesets, thus allowing you to browe large changesets, without MySQL complaining about memory. Probably needs some fine tuning. You currently can only page one of nodes, ways, and relations, without manually setting the relations. Fixing deprection notice for the classic_pagination plugin. --- app/controllers/browse_controller.rb | 3 ++ app/helpers/browse_helper.rb | 3 ++ app/views/browse/_changeset_details.rhtml | 35 +++++++++++++------ app/views/browse/_paging_nav.rhtml | 15 ++++++++ .../classic_pagination/lib/pagination.rb | 4 +-- 5 files changed, 47 insertions(+), 13 deletions(-) create mode 100644 app/views/browse/_paging_nav.rhtml diff --git a/app/controllers/browse_controller.rb b/app/controllers/browse_controller.rb index 2c6c3dc5f..60f580963 100644 --- a/app/controllers/browse_controller.rb +++ b/app/controllers/browse_controller.rb @@ -116,6 +116,9 @@ class BrowseController < ApplicationController def changeset begin @changeset = Changeset.find(params[:id]) + @node_pages, @nodes = paginate(:old_nodes, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'node_page') + @way_pages, @ways = paginate(:old_ways, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'way_page') + @relation_pages, @relations = paginate(:old_relations, :conditions => {:changeset_id => @changeset.id}, :per_page => 20, :parameter => 'relation_page') @title = "Changeset | #{@changeset.id}" @next = Changeset.find(:first, :order => "id ASC", :conditions => [ "id > :id", { :id => @changeset.id }] ) diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index c86ad5b71..34302a8af 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -1,2 +1,5 @@ module BrowseHelper + def link_to_page(page, page_param) + return link_to(page, page_param => page) + end end diff --git a/app/views/browse/_changeset_details.rhtml b/app/views/browse/_changeset_details.rhtml index 27335dd88..765fe4778 100644 --- a/app/views/browse/_changeset_details.rhtml +++ b/app/views/browse/_changeset_details.rhtml @@ -5,6 +5,11 @@ <%= h(changeset_details.created_at) %> + + Closed at: + <%= h(changeset_details.closed_at) %> + + <% if changeset_details.user.data_public? %> Belongs to: @@ -21,27 +26,33 @@ - <% end %> + <% else %> + + Tags + There are no tags for this changeset + + <% end %> - <% unless changeset_details.old_nodes.empty? %> + <% unless @nodes.empty? %> - Has the following nodes: + Has the following <%= @node_pages.item_count %> nodes: - <% changeset_details.old_nodes.each do |node| %> + <% @nodes.each do |node| %> <% end %>
<%= link_to "Node #{node.id.to_s}, version #{node.version.to_s}", :action => "node", :id => node.id.to_s %>
+ <%= render :partial => 'paging_nav', :locals => { :pages => @node_pages, :page_param => "node_page"} %> <% end %> - <% unless changeset_details.old_ways.empty? %> + <% unless @ways.empty? %> - Has the following ways: + Has the following <%= @way_pages.item_count %> ways: - <% changeset_details.old_ways.each do |way| %> + <% @ways.each do |way| %> <% end %> <%= @@ -49,20 +60,22 @@ %>
<%= link_to "Way #{way.id.to_s}, version #{way.version.to_s}", :action => "way", :id => way.id.to_s %>
- + + <%= render :partial => 'paging_nav', :locals => { :pages => @way_pages, :page_param => "way_page" } %> <% end %> - <% unless changeset_details.old_relations.empty? %> + <% unless @relations.empty? %> - Has the following relations: + Has the following <%= @relation_pages.item_count %> relations: - <% changeset_details.old_relations.each do |relation| %> + <% @relations.each do |relation| %> <% end %>
<%= link_to "Relation #{relation.id.to_s}, version #{relation.version.to_s}", :action => "relation", :id => relation.id.to_s %>
+ <%= render :partial => 'paging_nav', :locals => { :pages => @relation_pages, :page_param => "relation_page" } %> <% end %> diff --git a/app/views/browse/_paging_nav.rhtml b/app/views/browse/_paging_nav.rhtml new file mode 100644 index 000000000..fcfbb05dc --- /dev/null +++ b/app/views/browse/_paging_nav.rhtml @@ -0,0 +1,15 @@ + +<% current_page = pages.current_page %> + +Showing page +<%= current_page.number %> (<%= current_page.first_item %><% +if (current_page.first_item < current_page.last_item) # if more than 1 trace on page + %>-<%= current_page.last_item %><% +end %> +of <%= pages.item_count %>) + +<% if pages.page_count > 1 %> +| <%= pagination_links_each(pages, {}) { |n| link_to_page(n, page_param) } %> +<% end %> + + diff --git a/vendor/plugins/classic_pagination/lib/pagination.rb b/vendor/plugins/classic_pagination/lib/pagination.rb index b6e9cf4bc..6a3e1a97b 100644 --- a/vendor/plugins/classic_pagination/lib/pagination.rb +++ b/vendor/plugins/classic_pagination/lib/pagination.rb @@ -97,8 +97,8 @@ module ActionController "Unknown options: #{unknown_option_keys.join(', ')}" unless unknown_option_keys.empty? - options[:singular_name] ||= Inflector.singularize(collection_id.to_s) - options[:class_name] ||= Inflector.camelize(options[:singular_name]) + options[:singular_name] ||= ActiveSupport::Inflector.singularize(collection_id.to_s) + options[:class_name] ||= ActiveSupport::Inflector.camelize(options[:singular_name]) end # Returns a paginator and a collection of Active Record model instances -- 2.43.2