Sha256: 38f09a6fbdfb96dacbcdb73ed86bc301bf2ac9cf108d7e9a470d7120b483a43d

Contents?: true

Size: 1.25 KB

Versions: 44

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true
module Blacklight::Solr
  # Pagination for facet values -- works by setting the limit to max
  # displayable. You have to ask Solr for limit+1, to get enough
  # results to see if 'more' are available'. That is, the all_facet_values
  # arg in constructor should be the result of asking solr for limit+1
  # values.
  # This is a workaround for the fact that Solr itself can't compute
  # the total values for a given facet field,
  # so we cannot know how many "pages" there are.
  #
  class FacetPaginator < Blacklight::FacetPaginator
    # all_facet_values is a list of facet value objects returned by solr,
    # asking solr for n+1 facet values.
    # options:
    # :limit =>  number to display per page, or (default) nil. Nil means
    #            display all with no previous or next.
    # :offset => current item offset, default 0
    # :sort => 'count' or 'index', solr tokens for facet value sorting, default 'count'.
    def initialize(all_facet_values, arguments = {})
      super

      @sort = arguments[:sort].keys.first.to_s if arguments[:sort].is_a? Hash

      # count is solr's default
      @sort ||= if @limit.to_i > 0
                  'count'
                else
                  'index'
                end
    end
  end
end

Version data entries

44 entries across 44 versions & 2 rubygems

Version Path
blacklight-7.18.0 lib/blacklight/solr/facet_paginator.rb
blacklight-7.17.2 lib/blacklight/solr/facet_paginator.rb
blacklight-7.17.1 lib/blacklight/solr/facet_paginator.rb
blacklight-7.17.0 lib/blacklight/solr/facet_paginator.rb