| Class | Wee::Pager |
| In: |
lib/wee/components/pager.rb
|
| Parent: | Wee::Component |
| current_page | [R] | |
| entries_per_page | [RW] | |
| num_entries | [RW] |
# File lib/wee/components/pager.rb, line 5 def initialize(num_entries=0) super() @num_entries = num_entries @current_page = 0 @entries_per_page = 20 yield self if block_given? end
Go to page with index page Note that page-indices start with zero!
# File lib/wee/components/pager.rb, line 59 def goto(page) @current_page = page validate end
Returns the number of pages
# File lib/wee/components/pager.rb, line 15 def num_pages n, rest = @num_entries.divmod(@entries_per_page) if rest > 0 then n + 1 else n end end
Go to previous page
# File lib/wee/components/pager.rb, line 46 def prev goto(@current_page - 1) end
# File lib/wee/components/pager.rb, line 64 def render(r) return if num_pages() <= 0 render_arrow(r, :first, "<<", "Go to first page"); r.space(2) render_arrow(r, :prev, "<", "Go to previous page"); r.space(2) render_index(r); r.space(2) render_arrow(r, :next, ">", "Go to next page"); r.space(2) render_arrow(r, :last, ">>", "Go to last page") end
# File lib/wee/components/pager.rb, line 75 def render_arrow(r, sym, text, tooltip=text) r.anchor.callback(&method(sym)).tooltip(tooltip).with { r.encode_text(text) } end
# File lib/wee/components/pager.rb, line 79 def render_index(r) last = last_page_index() (0 .. last).each do |i| if i == @current_page render_page_num(r, i, true) else render_page_num(r, i, false) end r.space if i < last end end
# File lib/wee/components/pager.rb, line 91 def render_page_num(r, num, current) if current r.bold(num+1) else r.anchor.callback{ goto(num) }.with(num+1) end end