Module: Filemaker::Model::Pagination

Included in:
Criteria
Defined in:
lib/filemaker/model/pagination.rb

Instance Method Summary collapse

Instance Method Details

#__pageObject

A simple getter to retrieve the current page value. If no one set it up through the ‘page(4)` way, then at least it defaults to 1.



19
20
21
# File 'lib/filemaker/model/pagination.rb', line 19

def __page
  @_page || 1
end

#__perObject

A simple getter to retrieve the limit value. It will default to Model.per_page

Will have stacklevel too deep if we have ‘per(nil)`. Somehow, the `per_page` must be set either at the `Model.per_page`, `Kaminari.config.default_per_page`, or right here where I just throw a 25 value at it.



30
31
32
33
# File 'lib/filemaker/model/pagination.rb', line 30

def __per
  per(klass.per_page || 25) unless limit?
  options[:max]
end

#page(value) ⇒ Object

Calling ‘page` will trigger pagination.



5
6
7
8
9
10
# File 'lib/filemaker/model/pagination.rb', line 5

def page(value)
  value = 1 if value.nil?
  chains << :page
  @_page = positive_page(value.to_i)
  update_skip
end

#per(value) ⇒ Object



12
13
14
15
# File 'lib/filemaker/model/pagination.rb', line 12

def per(value)
  limit(value)
  update_skip
end

#positive_page(page) ⇒ Object



41
42
43
44
# File 'lib/filemaker/model/pagination.rb', line 41

def positive_page(page)
  return 1 if page.nil? || !page.is_a?(Integer)
  page.positive? ? page : 1
end

#update_skipObject



35
36
37
38
39
# File 'lib/filemaker/model/pagination.rb', line 35

def update_skip
  skip = (__page - 1) * __per
  skip(skip) unless skip.zero?
  self
end