module DogBiscuits::Blacklight::Commands

Public Instance Methods

add_facet_field(config, names, options = { limit: 5 }) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 96
def add_facet_field(config, names, options = { limit: 5 })
  names.each { |name| add_labelled_facet_field(config, name, options) }
end
add_index_field(config, names) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 100
def add_index_field(config, names)
  names.each { |name| add_labelled_index_field(config, name) }
end
add_labelled_facet_field(config, name, options) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 71
def add_labelled_facet_field(config, name, options)
  send_to_configuration(config, name, :facet_field, :facetable, options)
end
add_labelled_index_field(config, name, options = {}) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 75
def add_labelled_index_field(config, name, options = {})
  send_to_configuration(config, name, :index_field, :stored_searchable, options)
end
add_labelled_show_field(config, name, options = {}) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 79
def add_labelled_show_field(config, name, options = {})
  send_to_configuration(config, name, :show_field, :stored_searchable, options)
end
add_search_field(config, names) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 108
def add_search_field(config, names)
  names.each { |name| add_solr_search_field(config, name) }
end
add_show_field(config, names) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 104
def add_show_field(config, names)
  names.each { |name| add_labelled_show_field(config, name) }
end
add_solr_search_field(config, name, options = {}) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 83
def add_solr_search_field(config, name, options = {})
  name, label_name, index_type, solr_options, _options = if name.is_a?(Hash)
                                                           decode_name_and_options(name, options)
                                                         else
                                                           [name, name, :stored_searchable, options]
                                                         end
  local_params_solr_name = send("#{index_type}_name", name, *solr_options)
  config.add_search_field(name.to_s) do |field|
    field.label = default_label(label_name)
    field.solr_local_parameters = { qf: local_params_solr_name, pf: local_params_solr_name }
  end
end
decode_name_and_options(name, options = {}) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 15
def decode_name_and_options(name, options = {})
  actual_name = name.keys.first
  values = name.values.first
  labelled_name = values[:name] || actual_name
  index_type = values[:as] || :stored_searchable
  solr_options = values[:type] && [{ type: values[:type] }] || nil
  options.merge!(values[:options] || {})
  [actual_name, labelled_name, index_type, solr_options, options]
end
default_index_options(name, index_type = :facetable) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 33
def default_index_options(name, index_type = :facetable)
  { itemprop: name, link_to_search: send("#{index_type}_name", name) }
end
default_label(name) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 25
def default_label(name)
  I18n.t('dog_biscuits.fields.' + name.to_s)
end
default_label_options(name) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 29
def default_label_options(name)
  { label: default_label(name) }
end
index_option_value(name, key, value) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 48
def index_option_value(name, key, value)
  if key == :link_to_search && value == true
    index_type = :facetable
    send("#{index_type}_name", name)
  else
    value
  end
end
index_options(name, mapping) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 37
def index_options(name, mapping)
  return {} unless mapping
  opts = {}
  mapping[:index]&.each do |opt|
    opts[opt.keys.first] = index_option_value(name, opt.keys.first, opt[opt.keys.first])
  end
  opts[:itemprop] = mapping[:schema_org][:property] if mapping[:schema_org]
  opts[:helper_method] = mapping[:helper_method] if mapping[:helper_method]
  { options: opts }
end
send_to_configuration(config, name, config_type, default_index_type, options = {}) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 57
def send_to_configuration(config, name, config_type, default_index_type, options = {})
  name, label_name, index_type, solr_options, options = if name.is_a?(Hash)
                                                          decode_name_and_options(name, options)
                                                        else
                                                          [name, name, default_index_type, nil, options]
                                                        end
  begin
    config.send("add_#{config_type}", send("#{index_type}_name", name, *solr_options), default_label_options(label_name).merge(options))
  rescue ArgumentError
    Rails.logger("solr_options are: #{solr_options.inspect}")
    raise
  end
end
to_searchable_names_field_list(names) click to toggle source
# File lib/dog_biscuits/blacklight/commands.rb, line 112
def to_searchable_names_field_list(names)
  names.map { |name| stored_searchable_name(name) }.join(' ')
end