Class: Wallaby::ModelPaginationProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/interfaces/wallaby/model_pagination_provider.rb

Overview

Model pagination provider interface

Direct Known Subclasses

ActiveRecord::ModelPaginationProvider

Instance Method Summary collapse

Constructor Details

#initialize(collection, params, options: {}, model_decorator: nil) ⇒ ModelPaginationProvider

Returns a new instance of ModelPaginationProvider.

Parameters:

  • collection (#to_a)
  • params (ActionController::Parameters)
  • options (Hash) (defaults to: {})

    options

  • model_decorator (Wallaby::ModelDecorator, nil) (defaults to: nil)


8
9
10
11
12
13
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 8

def initialize(collection, params, options: {}, model_decorator: nil)
  @collection = collection
  @params = params
  @options = options
  @model_decorator = model_decorator
end

Instance Method Details

#first_page?Boolean

Check and see if it’s the first page

Returns:

  • (Boolean)


23
24
25
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 23

def first_page?
  page_number > first_page_number
end

#first_page_numberInteger

Page number of first page

Returns:

  • (Integer)


77
78
79
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 77

def first_page_number
  1
end

#fromInteger

Find out the offset ‘from`

Returns:

  • (Integer)


47
48
49
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 47

def from
  (page_number - 1) * page_size + 1
end

#last_page?Boolean

Check and see if it’s the last page

Returns:

  • (Boolean)


35
36
37
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 35

def last_page?
  page_number < last_page_number
end

#last_page_numberInteger

Page number of last page

Returns:

  • (Integer)


83
84
85
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 83

def last_page_number
  number_of_pages
end

#next_page?Boolean

Check and see if it’s the next page

Returns:

  • (Boolean)


41
42
43
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 41

def next_page?
  page_number < last_page_number
end

#next_page_numberInteger

Page number of next page

Returns:

  • (Integer)


95
96
97
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 95

def next_page_number
  [page_number + 1, last_page_number].min
end

#number_of_pagesInteger

Total number of pages

Returns:

  • (Integer)


101
102
103
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 101

def number_of_pages
  (total / page_size.to_f).ceil
end

#page_numberInteger

Find out the current page number

Returns:

  • (Integer)

Raises:



71
72
73
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 71

def page_number
  raise NotImplemented
end

#page_sizeInteger

Find out the current page size

Returns:

  • (Integer)

Raises:



65
66
67
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 65

def page_size
  raise NotImplemented
end

#paginatable?Boolean

If a collection has pagination feature

Returns:

  • (Boolean)

Raises:



17
18
19
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 17

def paginatable?
  raise NotImplemented
end

#prev_page?Boolean

Check and see if it’s the previous page

Returns:

  • (Boolean)


29
30
31
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 29

def prev_page?
  page_number > first_page_number
end

#prev_page_numberInteger

Page number of previous page

Returns:

  • (Integer)


89
90
91
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 89

def prev_page_number
  [page_number - 1, first_page_number].max
end

#toInteger

Find out the offset ‘to`

Returns:

  • (Integer)


53
54
55
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 53

def to
  [page_number * page_size, total].min
end

#totalInteger

Find out the total count of current query

Returns:

  • (Integer)

Raises:



59
60
61
# File 'lib/interfaces/wallaby/model_pagination_provider.rb', line 59

def total
  raise NotImplemented
end