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
  • 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)

    boolean



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

def first_page?
  page_number > first_page_number
end

#first_page_numberInteger

Page number of first page

Returns:

  • (Integer)


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

def first_page_number
  1
end

#fromInteger

Find out the offset ‘from`

Returns:

  • (Integer)


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

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

#last_page?Boolean

Check and see if it’s the last page

Returns:

  • (Boolean)

    boolean



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

def last_page?
  page_number < last_page_number
end

#last_page_numberInteger

Page number of last page

Returns:

  • (Integer)


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

def last_page_number
  number_of_pages
end

#next_page?Boolean

Check and see if it’s the next page

Returns:

  • (Boolean)

    boolean



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

def next_page?
  page_number < last_page_number
end

#next_page_numberInteger

Page number of next page

Returns:

  • (Integer)


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

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

#number_of_pagesInteger

Total number of pages

Returns:

  • (Integer)


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

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

#page_numberInteger

Find out the current page number

Returns:

  • (Integer)

Raises:



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

def page_number
  raise NotImplemented
end

#page_sizeInteger

Find out the current page size

Returns:

  • (Integer)

Raises:



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

def page_size
  raise NotImplemented
end

#paginatable?Boolean

If a collection has pagination feature

Returns:

  • (Boolean)

Raises:



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

def paginatable?
  raise NotImplemented
end

#prev_page?Boolean

Check and see if it’s the previous page

Returns:

  • (Boolean)

    boolean



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

def prev_page?
  page_number > first_page_number
end

#prev_page_numberInteger

Page number of previous page

Returns:

  • (Integer)


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

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

#toInteger

Find out the offset ‘to`

Returns:

  • (Integer)


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

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

#totalInteger

Find out the total count of current query

Returns:

  • (Integer)

Raises:



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

def total
  raise NotImplemented
end