Sha256: 1f23d29eec305d9fadbdadfc5e5f7249526e589deae9c38f5461f1e4d658a5d2

Contents?: true

Size: 1.23 KB

Versions: 13

Compression:

Stored size: 1.23 KB

Contents

MAX_ANONYMOUS_SEARCH_PARAM = 1000

format do
  def limit
    @limit ||= contextual_param(:limit) || default_limit
  end

  def offset
    @offset ||= contextual_param(:offset) || 0
  end

  def search_with_params
    @search_with_params ||= card.item_names
  end

  def count_with_params
    @count_with_params ||= card.item_names.count
  end

  def no_results?
    count_with_params.zero?
  end

  def total_pages
    return 1 if limit.zero?

    ((count_with_params - 1) / limit).to_i
  end

  def current_page
    (offset / limit).to_i
  end

  # for override
  def extra_paging_path_args
    {}
  end

  def last_item_on_page
    [count_with_params, (offset + limit)].min
  end

  private

  def contextual_param param
    env_search_param(param) || voo_search_param(param)
  end

  def env_search_param param
    val = Env.params[param]
    return unless focal? && val.present?

    legal_search_param val.to_i
  end

  def legal_search_param val
    return val if Card::Auth.signed_in? || val <= MAX_ANONYMOUS_SEARCH_PARAM

    raise Card::Error::PermissionDenied,
          "limit parameter exceeds maximum for anonymous users " \
          "(#{MAX_ANONYMOUS_SEARCH_PARAM})"
  end

  def voo_search_param param
    voo&.cql&.dig(param)&.to_i
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
card-mod-collection-0.18.1 set/abstract/paging.rb
card-mod-collection-0.18.0 set/abstract/paging.rb
card-mod-collection-0.17.0 set/abstract/paging.rb
card-mod-collection-0.16.0 set/abstract/paging.rb
card-mod-collection-0.15.6 set/abstract/paging.rb
card-mod-collection-0.15.5 set/abstract/paging.rb
card-mod-collection-0.15.4 set/abstract/paging.rb
card-mod-collection-0.15.3 set/abstract/paging.rb
card-mod-collection-0.15.1.2 set/abstract/paging.rb
card-mod-collection-0.15.2.pre1 set/abstract/paging.rb
card-mod-collection-0.15.1.1 set/abstract/paging.rb
card-mod-collection-0.15.1 set/abstract/paging.rb
card-mod-collection-0.15.0 set/abstract/paging.rb