Sha256: 9fa2a549266543c4395f880c336db4cad6b3852446ba9cc307d6168b7ac769da

Contents?: true

Size: 1.16 KB

Versions: 37

Compression:

Stored size: 1.16 KB

Contents

module Ckeditor
  # Simple paginate relation
  class Paginatable
    attr_reader :limit_value, :offset_value

    def initialize(scope, options = {})
      @scope = scope
      @limit_value = (options[:limit] || Ckeditor.default_per_page).to_i
    end

    def page(num = 1)
      @offset_value = limit_value * ([num.to_i, 1].max - 1)
      self
    end

    def scoped
      @scope.limit(limit_value).offset(offset_value)
    end

    # Next page number in the collection
    def next_page
      current_page + 1 unless last_page?
    end

    # Previous page number in the collection
    def prev_page
      current_page - 1 unless first_page?
    end

    # First page of the collection?
    def first_page?
      current_page == 1
    end

    # Last page of the collection?
    def last_page?
      current_page >= total_pages
    end

    # Total number of pages
    def total_pages
      (total_count.to_f / limit_value).ceil
    end

    # total item numbers of scope
    def total_count
      @total_count ||= @scope.count
    end

    # Current page number
    def current_page
      offset = (offset_value < 0 ? 0 : offset_value)
      (offset / limit_value) + 1
    end
  end
end

Version data entries

37 entries across 37 versions & 4 rubygems

Version Path
danabr75-ckeditor-4.1.6 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.6.0 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.5.10.3 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.5.10.2 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.5.10.1 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.5.7.1 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.5.7 lib/ckeditor/paginatable.rb
ckeditor_custom_controller-4.1.6 lib/ckeditor/paginatable.rb
ckeditor-4.1.6 lib/ckeditor/paginatable.rb
ckeditor-4.1.5 lib/ckeditor/paginatable.rb
ckeditor-4.1.4 lib/ckeditor/paginatable.rb
ckeditor-4.1.3 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.4.7.4 lib/ckeditor/paginatable.rb
ckeditor-4.1.2 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.4.7.3 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.4.7.2 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.4.7.1 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.4.7 lib/ckeditor/paginatable.rb
glebtv-ckeditor-4.4.6 lib/ckeditor/paginatable.rb
ckeditor-4.1.1 lib/ckeditor/paginatable.rb