Use the rails paginator to paginate the trace list, and abstract some
common template code into a partial.
This commit is contained in:
parent
96eea9da7f
commit
07ad4a36ea
5 changed files with 26 additions and 53 deletions
|
@ -9,7 +9,6 @@ class TraceController < ApplicationController
|
|||
def list (target_user = nil, paging_action = 'list')
|
||||
@title = 'public GPS traces'
|
||||
@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
|
||||
|
||||
# from display name, pick up user id if one user's traces only
|
||||
|
@ -52,18 +51,9 @@ class TraceController < ApplicationController
|
|||
end
|
||||
|
||||
opt[:conditions] = conditions
|
||||
opt[:per_page] = 20
|
||||
|
||||
# count traces using all options except limit
|
||||
@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)
|
||||
@trace_pages, @traces = paginate(:traces, opt)
|
||||
|
||||
# put together SET of tags across traces, for related links
|
||||
tagset = Hash.new
|
||||
|
@ -79,8 +69,8 @@ class TraceController < ApplicationController
|
|||
# final helper vars for view
|
||||
@display_name = display_name
|
||||
@all_tags = tagset.values
|
||||
@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
|
||||
## @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
|
||||
end
|
||||
|
||||
def mine
|
||||
|
|
13
app/views/trace/_trace_list.rhtml
Normal file
13
app/views/trace/_trace_list.rhtml
Normal 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' %>
|
|
@ -1,19 +1,12 @@
|
|||
<%
|
||||
range_start = ((@page - 1) * @traces_per_page) + 1
|
||||
range_end = (@page==@max_page ? @max_trace : (@page * @traces_per_page))
|
||||
%>
|
||||
<% current_page = @trace_pages.current_page %>
|
||||
|
||||
Showing page
|
||||
<%= @page %> (<%= range_start %><%
|
||||
if (@max_trace != range_start) # if more than 1 trace on page
|
||||
%>-<%= range_end %><%
|
||||
<%= 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 <%= @max_trace %>)
|
||||
of <%= @trace_pages.item_count %>)
|
||||
|
||||
<% if @page > 1 %>
|
||||
| <%= link_to 'previous page', {:controller => 'trace', :display_name => @display_name, :action => @paging_action, :page => @page-1}, {:title => 'previous page'} %>
|
||||
<% end %>
|
||||
|
||||
<% if @page < @max_page %>
|
||||
| <%= link_to 'next page', {:controller => 'trace', :display_name => @display_name, :action => @paging_action, :page => @page+1}, {:title => 'next page'} %>
|
||||
<% if @trace_pages.page_count > 1 %>
|
||||
| <%= pagination_links(@trace_pages) %>
|
||||
<% end %>
|
||||
|
|
|
@ -10,19 +10,7 @@
|
|||
| <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %>
|
||||
<% end %>
|
||||
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<%= render :partial => 'trace_paging_nav' %>
|
||||
|
||||
<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' %>
|
||||
<%= render :partial => 'trace_list' %>
|
||||
|
|
|
@ -25,19 +25,8 @@
|
|||
<%= submit_tag 'Upload' %> | <a href="http://wiki.openstreetmap.org/index.php/Upload">help</a>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<% end %>
|
||||
|
||||
<%= 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_list' %>
|
||||
|
||||
<% end %>
|
||||
|
||||
<%= render :partial => 'trace_optionals' %>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue