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')
|
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
|
||||||
|
|
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 @@
|
||||||
<%
|
<% 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 %>
|
||||||
|
|
|
@ -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' %>
|
|
||||||
|
|
|
@ -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' %>
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue