Sha256: d3003ced45d5f9c9c2120ec7ad0bf8f6bc0b0f2320fdcd3744df5579a33bfe7a

Contents?: true

Size: 790 Bytes

Versions: 9

Compression:

Stored size: 790 Bytes

Contents

# frozen_string_literal: true

require "active_support/concern"

module Decidim
  # Common logic to paginate resources
  module Paginable
    extend ActiveSupport::Concern

    OPTIONS = [25, 50, 100].freeze

    included do
      helper_method :per_page, :page_offset
      helper Decidim::PaginateHelper

      def paginate(resources)
        resources.page(params[:page]).per(per_page)
      end

      def per_page
        if OPTIONS.include?(params[:per_page])
          params[:per_page].to_i
        elsif params[:per_page]
          sorted = OPTIONS.sort
          params[:per_page].to_i.clamp(sorted.first, sorted.last)
        else
          OPTIONS.first
        end
      end

      def page_offset
        [params[:page].to_i - 1, 0].max * per_page
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc3 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.30.0.rc2 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.30.0.rc1 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.29.2 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.28.5 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.29.1 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.28.4 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.29.0 app/controllers/concerns/decidim/paginable.rb
decidim-core-0.28.3 app/controllers/concerns/decidim/paginable.rb