Class: Pagoid::Pager

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/pagoid/pager.rb

Instance Method Summary collapse

Constructor Details

#initialize(paginatable, options = {}) ⇒ Pager

Initialize

Parameters:

  • paginatable (Object)

    Some object(like an Array or ActiveRecord Object) for pagination

  • options (Hash) (defaults to: {})

    options hash for tweaking pagination

Options Hash (options):

  • :page (Fixnum)

    The page number

  • :per_page (Fixnum)

    The page size

  • :order_by (Fixnum)

    Callable on each element (or column) to sort by

  • :direction (Fixnum)

    “desc” or “asc”



24
25
26
27
# File 'lib/pagoid/pager.rb', line 24

def initialize(paginatable, options = {})
  self.paginatable = AdapterRouter.new(paginatable).route
  self.options = options.dup
end

Instance Method Details

#display_headers?Boolean

Describes whether or not to publish paging reference

Returns:

  • (Boolean)

    boolean describing whether to display pagination headers



54
55
56
# File 'lib/pagoid/pager.rb', line 54

def display_headers?
  !paginated.nil?
end

#headersHash

Hash of data for publishing on a payload for Paging reference

Returns:

  • (Hash)

    hash of paging data



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/pagoid/pager.rb', line 39

def headers
  {
    total: paginated.total_count,
    total_pages: paginated.total_pages,
    first_page: paginated.first_page?,
    last_page: paginated.last_page?,
    current_page: paginated.current_page,
    limit: paginated.limit_value,
    offset: paginated.offset_value
  }
end

#paginatedObject

Memoized method of Paged, Sized, and Ordered output

Returns:

  • ordered, sized, paged data



32
33
34
# File 'lib/pagoid/pager.rb', line 32

def paginated
  @paginated ||= pered
end