Improve pagination in changeset details
authorJohn Firebaugh <john.firebaugh@gmail.com>
Thu, 7 Nov 2013 01:28:24 +0000 (17:28 -0800)
committerJohn Firebaugh <john.firebaugh@gmail.com>
Thu, 7 Nov 2013 01:28:39 +0000 (17:28 -0800)
app/assets/stylesheets/common.css.scss
app/helpers/browse_helper.rb
app/views/browse/_paging_nav.html.erb
app/views/browse/changeset.html.erb
config/locales/en.yml

index a2d3bb95555d4f2914e12576567bf9c2dfd4d7ea..dc38ec6c341d35aebdd2e7095e57e2bc7fc47b57 100644 (file)
@@ -1120,19 +1120,13 @@ a.donate {
 
     h4 {
       padding: 0;
+    }
+
+    .paginate {
+      float: right;
+      padding: 1px 6px;
+      border: 1px solid #eee;
       border-radius: 3px;
-    
-      &.paginate {
-        margin-top: 4px;
-        padding: 1px 6px;
-        border: 1px solid #eee;
-        span {
-          padding: 0 0 0 14px;
-          float: right;
-          border-left: 1px solid #eee;
-          > a { padding-left: 5px; }
-        }
-      }
     }
   }
 
index c4e4d425a5ef997a97dbb84cc2d75eeac53a5cac..b3145ebced39d71799b8435f6998cc51f607dced 100644 (file)
@@ -1,8 +1,4 @@
 module BrowseHelper
-  def link_to_page(page, page_param)
-    return link_to(page, page_param => page)
-  end
-
   def printable_name(object, version=false)
     if object.id.is_a?(Array)
       id = object.id[0]
@@ -61,6 +57,18 @@ module BrowseHelper
     end
   end
 
+  def type_and_paginated_count(type, pages)
+    if pages.page_count == 1
+      t "browse.changeset_details.#{type}",
+        :count => pages.item_count
+    else
+      t "browse.changeset_details.#{type}_paginated",
+        :x => pages.current_page.first_item,
+        :y => pages.current_page.last_item,
+        :count => pages.item_count
+    end
+  end
+
 private
 
   ICON_TAGS = [
index 50e75bff89f5bd4cca9d4ebe8ebdde24364cd9b4..67f1c75a3bc3a21303c9e184e45de389fab1a956 100644 (file)
@@ -1,13 +1,5 @@
-<h4 class="paginate">
-<% current_page = pages.current_page %>
 <% if pages.page_count > 1 %>
-    <%= t'browse.paging_nav.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 %>
-    <%= t'browse.paging_nav.of'%> <%= pages.item_count %>)
-
-<span><%= raw pagination_links_each(pages, {}) { |n| link_to_page(n, page_param) } %></span>
+  <span class="paginate">
+    <%= raw pagination_links_each(pages, {}) { |n| link_to(n, page_param => n) } %>
+  </span>
 <% end %>
-</h4>
index 0d64ffae62e07cface5b51821c7f3510471f8865..fb08987bb751594ebd5e05232d6ebe065050656c 100644 (file)
@@ -1,52 +1,54 @@
-<h2><%= t 'browse.changeset.changeset', :id => @changeset.id %>
+<h2>
+  <%= t 'browse.changeset.changeset', :id => @changeset.id %>
   <a class="geolink" href="<%= root_path %>"><span class="icon close"></span></a>
 </h2>
+
 <div class="browse-section">
-  <p>
-    <%=
-        @changeset.tags['comment'].to_s.presence || t('browse.changeset_details.no_comment')
-    %>
-  </p>
+  <p><%= @changeset.tags['comment'].to_s.presence || t('browse.changeset_details.no_comment') %></p>
   <span><%= changeset_time_ago(@changeset) %></span>
 </div>
-  
-<%=
-  render :partial => "tag_details", :object => @changeset.tags.except('comment')
-%>
+
+<%= render :partial => "tag_details", :object => @changeset.tags.except('comment') %>
 
 <% unless @nodes.empty? %>
   <div class='browse-section paginate'>
-    <h4><%= t 'browse.changeset_details.has_nodes', :count => @node_pages.item_count %></h4>
+    <h4>
+      <%= type_and_paginated_count('node', @node_pages) %>
+      <%= render :partial => 'paging_nav', :locals => { :pages => @node_pages, :page_param => "node_page"} %>
+    </h4>
     <ul>
       <% @nodes.each do |node| %>
         <li><%= link_to h(printable_name(node, true)), { :action => "node", :id => node.node_id.to_s }, :class => link_class('node', node), :title => link_title(node) %></li>
       <% end %>
     </ul>
-    <%= render :partial => 'paging_nav', :locals => { :pages => @node_pages, :page_param => "node_page"} %>
   </div>
 <% end %>
 
 <% unless @ways.empty? %>
   <div class='browse-section  paginate'>
-    <h4><%= t 'browse.changeset_details.has_ways', :count => @way_pages.item_count %></h4>
+    <h4>
+      <%= type_and_paginated_count('way', @way_pages) %>
+      <%= render :partial => 'paging_nav', :locals => { :pages => @way_pages, :page_param => "way_page" } %>
+    </h4>
     <ul>
       <% @ways.each do |way| %>
         <li><%= link_to h(printable_name(way, true)), { :action => "way", :id => way.way_id.to_s }, :class => link_class('way', way), :title => link_title(way) %></li>
       <% end %>
     </ul>
-    <%= render :partial => 'paging_nav', :locals => { :pages => @way_pages, :page_param => "way_page" } %>
   </div>
 <% end %>
 
 <% unless @relations.empty? %>
   <div class='browse-section  paginate'>
-    <h4><%= t 'browse.changeset_details.has_relations', :count => @relation_pages.item_count %></h4>
-      <ul>
-        <% @relations.each do |relation| %>
-          <li><%= link_to h(printable_name(relation, true)), { :action => "relation", :id => relation.relation_id.to_s }, :class => link_class('relation', relation), :title => link_title(relation) %></li>
-        <% end %>
-      </ul>
+    <h4>
+      <%= type_and_paginated_count('relation', @relation_pages) %>
       <%= render :partial => 'paging_nav', :locals => { :pages => @relation_pages, :page_param => "relation_page" } %>
+    </h4>
+    <ul>
+      <% @relations.each do |relation| %>
+        <li><%= link_to h(printable_name(relation, true)), { :action => "relation", :id => relation.relation_id.to_s }, :class => link_class('relation', relation), :title => link_title(relation) %></li>
+      <% end %>
+    </ul>
   </div>
 <% end %>
 
index 127e810b1b8b0d2e85c11ff5782225cc76ec9c74..d032c58f1cbc77361682ac8e90c8e55bd0cc1212 100644 (file)
@@ -130,9 +130,12 @@ en:
       created_at: "Created"
       closed_at: "Closed"
       belongs_to: "Author"
-      has_nodes: "Nodes (%{count})"
-      has_ways: "Ways (%{count})"
-      has_relations: "Relations (%{count})"
+      node: "Nodes (%{count})"
+      node_paginated: "Nodes (%{x}-%{y} of %{count})"
+      way: "Ways (%{count})"
+      way_paginated: "Ways (%{x}-%{y} of %{count})"
+      relation: "Relations (%{count})"
+      relation_paginated: "Relations (%{x}-%{y} of %{count})"
       no_comment: "(no comment)"
       ago: "%{ago} ago"
       by: "by"
@@ -189,9 +192,6 @@ en:
         way: way
         relation: relation
         changeset: changeset
-    paging_nav:
-      showing_page: "page"
-      of: "of"
     redacted:
       redaction: "Redaction %{id}"
       message_html: "Version %{version} of this %{type} cannot be shown as it has been redacted. Please see %{redaction_link} for details."