class Wallaby::ModelPaginationProvider

Model pagination provider interface

Public Class Methods

new(collection, params, options: {}, model_decorator: nil) click to toggle source

@param collection [#to_a] @param params [ActionController::Parameters] @param options [Hash] options @param model_decorator [Wallaby::ModelDecorator, nil]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 10
def initialize(collection, params, options: {}, model_decorator: nil)
  @collection = collection
  @params = params
  @options = options
  @model_decorator = model_decorator
end

Public Instance Methods

first_page?() click to toggle source

Check and see if it's the first page @return [Boolean]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 25
def first_page?
  page_number > first_page_number
end
first_page_number() click to toggle source

Page number of first page @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 79
def first_page_number
  1
end
from() click to toggle source

Find out the offset `from` @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 49
def from
  total.zero? ? total : (page_number - 1) * page_size + 1
end
last_page?() click to toggle source

Check and see if it's the last page @return [Boolean]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 37
def last_page?
  page_number < last_page_number
end
last_page_number() click to toggle source

Page number of last page @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 85
def last_page_number
  number_of_pages
end
next_page?() click to toggle source

Check and see if it's the next page @return [Boolean]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 43
def next_page?
  page_number < last_page_number
end
next_page_number() click to toggle source

Page number of next page @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 97
def next_page_number
  [page_number + 1, last_page_number].min
end
number_of_pages() click to toggle source

Total number of pages @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 103
def number_of_pages
  (total / page_size.to_f).ceil
end
page_number() click to toggle source

Find out the current page number @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 73
def page_number
  raise NotImplemented
end
page_size() click to toggle source

Find out the current page size @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 67
def page_size
  raise NotImplemented
end
paginatable?() click to toggle source

If a collection has pagination feature @return [Boolean]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 19
def paginatable?
  raise NotImplemented
end
prev_page?() click to toggle source

Check and see if it's the previous page @return [Boolean]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 31
def prev_page?
  page_number > first_page_number
end
prev_page_number() click to toggle source

Page number of previous page @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 91
def prev_page_number
  [page_number - 1, first_page_number].max
end
to() click to toggle source

Find out the offset `to` @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 55
def to
  [page_number * page_size, total].min
end
total() click to toggle source

Find out the total count of current query @return [Integer]

# File lib/interfaces/wallaby/model_pagination_provider.rb, line 61
def total
  raise NotImplemented
end