class Godmin::Paginator
Constants
- WINDOW_SIZE
Attributes
current_page[R]
per_page[R]
Public Class Methods
new(resources, per_page: 25, current_page: nil)
click to toggle source
# File lib/godmin/paginator.rb, line 7 def initialize(resources, per_page: 25, current_page: nil) @resources = resources @per_page = per_page @current_page = current_page ? current_page.to_i : 1 end
Public Instance Methods
pages()
click to toggle source
# File lib/godmin/paginator.rb, line 17 def pages @pages ||= begin pages = (1..total_pages).to_a return pages unless total_pages > WINDOW_SIZE if current_page < WINDOW_SIZE pages.slice(0, WINDOW_SIZE) elsif current_page > (total_pages - WINDOW_SIZE) pages.slice(-WINDOW_SIZE, WINDOW_SIZE) else pages.slice(pages.index(current_page) - (WINDOW_SIZE / 2), WINDOW_SIZE) end end end
paginate()
click to toggle source
# File lib/godmin/paginator.rb, line 13 def paginate @resources.limit(per_page).offset(offset) end
total_pages()
click to toggle source
# File lib/godmin/paginator.rb, line 33 def total_pages @total_pages ||= (total_resources.to_f / per_page).ceil end
total_resources()
click to toggle source
# File lib/godmin/paginator.rb, line 37 def total_resources @total_resources ||= begin count = @resources.count if count.respond_to?(:count) count.count else count end end end
Private Instance Methods
offset()
click to toggle source
# File lib/godmin/paginator.rb, line 51 def offset (current_page * per_page) - per_page end