Adding pagination to the changesets, thus allowing you to browe large changesets...
authorShaun McDonald <shaun@shaunmcdonald.me.uk>
Thu, 27 Nov 2008 17:06:43 +0000 (17:06 +0000)
committerShaun McDonald <shaun@shaunmcdonald.me.uk>
Thu, 27 Nov 2008 17:06:43 +0000 (17:06 +0000)
app/controllers/browse_controller.rb
app/helpers/browse_helper.rb
app/views/browse/_changeset_details.rhtml
app/views/browse/_paging_nav.rhtml [new file with mode: 0644]
vendor/plugins/classic_pagination/lib/pagination.rb

index 2c6c3dc5f6e26f42de0f5bc298407e8be71a5062..60f580963cda9719326173b4479c7b70734a46c2 100644 (file)
@@ -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 }] ) 
index c86ad5b71c0701bd1b3f65a7ce7381b4afcc74ad..34302a8af2d7f8af01c963d1b7ba1b2059216742 100644 (file)
@@ -1,2 +1,5 @@
 module BrowseHelper
+  def link_to_page(page, page_param)
+    return link_to(page, page_param => page)
+  end
 end
index 27335dd888e5bfb6a1198230614e3d222389f57e..765fe4778d721d7b38a4e31f7e54d0ca0cf2abfc 100644 (file)
@@ -5,6 +5,11 @@
     <td><%= h(changeset_details.created_at) %></td>
   </tr>
   
+  <tr>
+    <th>Closed at:</th>
+    <td><%= h(changeset_details.closed_at) %></td>
+  </tr>
+  
   <% if changeset_details.user.data_public? %>
     <tr>
       <th>Belongs to:</th>
         </table>
       </td>
     </tr>
-    <% end %>
+  <% else %>
+    <tr>
+      <th>Tags</th>
+      <td>There are no tags for this changeset</td>
+    </tr>
+  <% end %>
 
-  <% unless changeset_details.old_nodes.empty? %>
+  <% unless @nodes.empty? %>
     <tr valign="top">
-      <th>Has the following nodes:</th>
+      <th>Has the following <%= @node_pages.item_count %> nodes:</th>
       <td>
         <table padding="0">
-          <% changeset_details.old_nodes.each do |node| %>
+          <% @nodes.each do |node| %>
             <tr><td><%= link_to "Node #{node.id.to_s}, version #{node.version.to_s}", :action => "node", :id => node.id.to_s %></td></tr>
           <% end %>
         </table>
       </td>
     </tr>
+    <%= render :partial => 'paging_nav', :locals => { :pages => @node_pages, :page_param => "node_page"} %>
   <% end %>
   
-  <% unless changeset_details.old_ways.empty? %>
+  <% unless @ways.empty? %>
     <tr valign="top">
-      <th>Has the following ways:</th>
+      <th>Has the following <%= @way_pages.item_count %> ways:</th>
       <td>
         <table padding="0">
-          <% changeset_details.old_ways.each do |way| %>
+          <% @ways.each do |way| %>
             <tr><td><%= link_to "Way #{way.id.to_s}, version #{way.version.to_s}", :action => "way", :id => way.id.to_s %></td></tr>
           <% end %>
           <%=
           %>
         </table>
       </td>
-    </tr>      
+    </tr>
+    <%= render :partial => 'paging_nav', :locals => { :pages => @way_pages, :page_param => "way_page" } %>
   <% end %>
   
-  <% unless changeset_details.old_relations.empty? %>
+  <% unless @relations.empty? %>
     <tr valign="top">
-      <th>Has the following relations:</th>
+      <th>Has the following <%= @relation_pages.item_count %> relations:</th>
       <td>
         <table padding="0">
-          <% changeset_details.old_relations.each do |relation| %>
+          <% @relations.each do |relation| %>
             <tr><td><%= link_to "Relation #{relation.id.to_s}, version #{relation.version.to_s}", :action => "relation", :id => relation.id.to_s %></td></tr>
           <% end %>
         </table>
       </td>
     </tr>
+    <%= render :partial => 'paging_nav', :locals => { :pages => @relation_pages, :page_param => "relation_page" } %>
   <% end %>
 
 </table>
diff --git a/app/views/browse/_paging_nav.rhtml b/app/views/browse/_paging_nav.rhtml
new file mode 100644 (file)
index 0000000..fcfbb05
--- /dev/null
@@ -0,0 +1,15 @@
+<tr><td colspan='2'>
+<% 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 %>
+</td>
+</tr>
index b6e9cf4bc5378d03a7bbf81fd6f8d264acefb681..6a3e1a97b0f661cb63937fc8bbcc6b0b6c533a38 100644 (file)
@@ -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