Sha256: 95def2632fe1514cef8effa76d6770c991e47a76a36d76ec9e3f0f315dab9572
Contents?: true
Size: 1.85 KB
Versions: 3
Compression:
Stored size: 1.85 KB
Contents
# Pagination is used to navigate paginateable collections class LHS::Pagination DEFAULT_LIMIT = 100 delegate :_record, to: :data attr_accessor :data def initialize(data) self.data = data end # as standard in Rails' ActiveRecord count is not summing up, but using the number provided from data source def count total end def total data._raw[_record.total_key.to_sym] end def limit data._raw[_record.limit_key.to_sym] || LHS::Pagination::DEFAULT_LIMIT end def offset data._raw[_record.pagination_key.to_sym].presence || 0 end alias current_page offset alias start offset def pages_left total_pages - current_page end def next_offset raise 'to be implemented in subclass' end def current_page raise 'to be implemented in subclass' end def first_page 1 end def last_page total_pages end def next? data._raw[:next].present? end def previous? data._raw[:previous].present? end def prev_page current_page - 1 end def next_page current_page + 1 end def limit_value limit end def total_pages (total.to_f / limit).ceil end def self.page_to_offset(page, _limit) page.to_i end end class LHS::PagePagination < LHS::Pagination def current_page offset end def next_offset current_page + 1 end end class LHS::StartPagination < LHS::Pagination def current_page (offset + limit - 1) / limit end def next_offset offset + limit end def self.page_to_offset(page, limit = LHS::Pagination::DEFAULT_LIMIT) (page.to_i - 1) * limit.to_i + 1 end end class LHS::OffsetPagination < LHS::Pagination def current_page (offset + limit) / limit end def next_offset offset + limit end def self.page_to_offset(page, limit = LHS::Pagination::DEFAULT_LIMIT) (page.to_i - 1) * limit.to_i end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lhs-7.4.1 | lib/lhs/pagination.rb |
lhs-7.4.0 | lib/lhs/pagination.rb |
lhs-7.3.0 | lib/lhs/pagination.rb |