Use the rails paginator to paginate the trace list, and abstract some

common template code into a partial.
This commit is contained in:
Tom Hughes 2007-08-08 23:58:37 +00:00
parent 96eea9da7f
commit 07ad4a36ea
5 changed files with 26 additions and 53 deletions

View file

@ -9,7 +9,6 @@ class TraceController < ApplicationController
def list (target_user = nil, paging_action = 'list') def list (target_user = nil, paging_action = 'list')
@title = 'public GPS traces' @title = 'public GPS traces'
@title += " tagged with #{params[:tag]}" if params[:tag] @title += " tagged with #{params[:tag]}" if params[:tag]
@traces_per_page = 20
page_index = params[:page] ? params[:page].to_i - 1 : 0 # nice 1-based page -> 0-based page index page_index = params[:page] ? params[:page].to_i - 1 : 0 # nice 1-based page -> 0-based page index
# from display name, pick up user id if one user's traces only # from display name, pick up user id if one user's traces only
@ -52,18 +51,9 @@ class TraceController < ApplicationController
end end
opt[:conditions] = conditions opt[:conditions] = conditions
opt[:per_page] = 20
# count traces using all options except limit @trace_pages, @traces = paginate(:traces, opt)
@max_trace = Trace.count(opt)
@max_page = Integer((@max_trace + 1) / @traces_per_page)
# last step before fetch - add paging options
opt[:limit] = @traces_per_page
if page_index > 0
opt[:offset] = @traces_per_page * page_index
end
@traces = Trace.find(:all , opt)
# put together SET of tags across traces, for related links # put together SET of tags across traces, for related links
tagset = Hash.new tagset = Hash.new
@ -79,8 +69,8 @@ class TraceController < ApplicationController
# final helper vars for view # final helper vars for view
@display_name = display_name @display_name = display_name
@all_tags = tagset.values @all_tags = tagset.values
@paging_action = paging_action # the action that paging requests should route back to, e.g. 'list' or 'mine' ## @paging_action = paging_action # the action that paging requests should route back to, e.g. 'list' or 'mine'
@page = page_index + 1 # nice 1-based external page numbers ## @page = page_index + 1 # nice 1-based external page numbers
end end
def mine def mine

View file

@ -0,0 +1,13 @@
<%= render :partial => 'trace_paging_nav' %>
<table id="keyvalue" cellpadding="3">
<tr>
<th></th>
<th></th>
</tr>
<%= render :partial => 'trace', :collection => @traces unless @traces.nil? %>
</table>
<%= render :partial => 'trace_paging_nav' %>
<%= render :partial => 'trace_optionals' %>

View file

@ -1,19 +1,12 @@
<% <% current_page = @trace_pages.current_page %>
range_start = ((@page - 1) * @traces_per_page) + 1
range_end = (@page==@max_page ? @max_trace : (@page * @traces_per_page))
%>
Showing page Showing page
<%= @page %> (<%= range_start %><% <%= current_page.number %> (<%= current_page.first_item %><%
if (@max_trace != range_start) # if more than 1 trace on page if (current_page.first_item < current_page.last_item) # if more than 1 trace on page
%>-<%= range_end %><% %>-<%= current_page.last_item %><%
end %> end %>
of <%= @max_trace %>) of <%= @trace_pages.item_count %>)
<% if @page > 1 %> <% if @trace_pages.page_count > 1 %>
| <%= link_to 'previous page', {:controller => 'trace', :display_name => @display_name, :action => @paging_action, :page => @page-1}, {:title => 'previous page'} %> | <%= pagination_links(@trace_pages) %>
<% end %>
<% if @page < @max_page %>
| <%= link_to 'next page', {:controller => 'trace', :display_name => @display_name, :action => @paging_action, :page => @page+1}, {:title => 'next page'} %>
<% end %> <% end %>

View file

@ -10,19 +10,7 @@
| <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %> | <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %>
<% end %> <% end %>
<br /> <br />
<br /> <br />
<%= render :partial => 'trace_paging_nav' %> <%= render :partial => 'trace_list' %>
<table id="keyvalue" cellpadding="3">
<tr>
<th></th>
<th></th>
</tr>
<%= render :partial => 'trace', :collection => @traces %>
</table>
<%= render :partial => 'trace_paging_nav' %>
<%= render :partial => 'trace_optionals' %>

View file

@ -25,19 +25,8 @@
<%= submit_tag 'Upload' %> | <a href="http://wiki.openstreetmap.org/index.php/Upload">help</a> <%= submit_tag 'Upload' %> | <a href="http://wiki.openstreetmap.org/index.php/Upload">help</a>
</td></tr> </td></tr>
</table> </table>
<% end %> <% end %>
<%= render :partial => 'trace_paging_nav' %> <%= render :partial => 'trace_list' %>
<table id="keyvalue" cellpadding="3">
<tr>
<th></th>
<th></th>
</tr>
<%= render :partial => 'trace', :collection => @traces unless @traces.nil? %>
</table>
<%= render :partial => 'trace_paging_nav' %>
<% end %> <% end %>
<%= render :partial => 'trace_optionals' %>