class Wallaby::ModelPaginationProvider
Model pagination provider interface
Public Class Methods
@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
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
Page number of first page @return [Integer]
# File lib/interfaces/wallaby/model_pagination_provider.rb, line 79 def first_page_number 1 end
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
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
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
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
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
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
Find out the current page number @return [Integer]
# File lib/interfaces/wallaby/model_pagination_provider.rb, line 73 def page_number raise NotImplemented end
Find out the current page size @return [Integer]
# File lib/interfaces/wallaby/model_pagination_provider.rb, line 67 def page_size raise NotImplemented end
If a collection has pagination feature @return [Boolean]
# File lib/interfaces/wallaby/model_pagination_provider.rb, line 19 def paginatable? raise NotImplemented end
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
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
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
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