Skip to content

Commit

Permalink
Merge 4b87e10 into df7e862
Browse files Browse the repository at this point in the history
  • Loading branch information
cjcolvar committed Oct 26, 2018
2 parents df7e862 + 4b87e10 commit a0d0e73
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 27 deletions.
9 changes: 7 additions & 2 deletions app/controllers/concerns/blacklight/facet.rb
Expand Up @@ -22,9 +22,14 @@ def facets_from_request(fields = facet_field_names)
fields.map { |field| facet_by_field_name(field) }.compact
end

# @param group [String] a group name of facet fields
# @return [Array<String>] a list of the facet field names from the configuration
def facet_field_names
blacklight_config.facet_fields.values.map(&:field)
def facet_field_names(group = nil)
blacklight_config.facet_fields.select { |_facet, opts| group == opts[:group] }.values.map(&:field)
end

def facet_group_names
blacklight_config.facet_fields.map { |_facet, opts| opts[:group] }.uniq
end

# Get a FacetField object from the @response
Expand Down
19 changes: 19 additions & 0 deletions app/views/catalog/_facet_group.html.erb
@@ -0,0 +1,19 @@
<% # main container for facets/limits menu -%>
<% if has_facet_values? facet_field_names(groupname) %>
<div id="facets<%= "-#{groupname}" unless groupname.nil? %>" class="facets sidenav facets-toggleable-sm">
<div class="navbar">
<h2 class="facets-heading">
<%= groupname.blank? ? t('blacklight.search.facets.title') : t("blacklight.search.facets-#{groupname}.title") %>
</h2>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" aria-controls="facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" aria-expanded="false" aria-label="Toggle facets">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div id="facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" class="facets-collapse collapse">
<%= render_facet_partials facet_field_names(groupname) %>
</div>
</div>
<% end %>
21 changes: 3 additions & 18 deletions app/views/catalog/_facets.html.erb
@@ -1,19 +1,4 @@
<% # main container for facets/limits menu -%>
<% if has_facet_values? %>
<div id="facets" class="facets sidenav facets-toggleable-sm">
<div class="navbar">
<h2 class="facets-heading">
<%= t('blacklight.search.facets.title') %>
</h2>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#facet-panel-collapse" aria-controls="facet-panel-collapse" aria-expanded="false" aria-label="Toggle facets">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div id="facet-panel-collapse" class="facets-collapse collapse">
<%= render_facet_partials %>
</div>
</div>
<% # container for facet groups -%>
<% facet_group_names.each do |groupname| %>
<%= render partial: "facet_group", locals: {groupname: groupname} %>
<% end %>
37 changes: 30 additions & 7 deletions spec/views/catalog/_facets.html.erb_spec.rb
Expand Up @@ -16,23 +16,46 @@
end
end

context "with facet fields" do
context "with facet groups" do
let :facet_field do
Blacklight::Configuration::FacetField.new(field: 'facet_field_1', label: 'label').normalize!
Blacklight::Configuration::FacetField.new(field: 'facet_field_1', label: 'label', group: nil).normalize!
end

before do
blacklight_config.facet_fields['facet_field_1'] = facet_field
@mock_display_facet_1 = double(name: 'facet_field_1', sort: nil, offset: nil, prefix: nil, items: [Blacklight::Solr::Response::Facets::FacetItem.new(value: 'Value', hits: 1234)])
allow(view).to receive_messages(facet_field_names: [:facet_field_1], facet_limit_for: 10)
allow(view).to receive_messages(facet_group_names: [nil], facet_field_names: [:facet_field_1], facet_limit_for: 10)
@response = double
allow(@response).to receive(:aggregations).and_return("facet_field_1" => @mock_display_facet_1)
end

it "has a header" do
allow(view).to receive_messages(render_facet_partials: '')
render
expect(rendered).to have_selector('.facets-heading')
context "with the default facet group" do
it "has a header" do
allow(view).to receive_messages(render_facet_partials: '')
render
expect(rendered).to have_selector('.facets-heading')
end
end

context "with a named facet group" do
let :facet_field do
Blacklight::Configuration::FacetField.new(field: 'facet_field_1', label: 'label', group: 'group_1').normalize!
end

before do
blacklight_config.facet_fields['facet_field_1'] = facet_field
@mock_display_facet_1 = double(name: 'facet_field_1', sort: nil, offset: nil, prefix: nil, items: [Blacklight::Solr::Response::Facets::FacetItem.new(value: 'Value', hits: 1234)])
allow(view).to receive_messages(facet_group_names: [nil, 'group_1'], facet_field_names: [:facet_field_1], facet_limit_for: 10)
@response = double
allow(@response).to receive(:aggregations).and_return("facet_field_1" => @mock_display_facet_1)
end

it "has a header" do
allow(view).to receive_messages(render_facet_partials: '')
render
expect(rendered).to have_selector('.facets-heading')
expect(rendered).to have_selector('#facets-group_1')
end
end

describe "facet display" do
Expand Down

0 comments on commit a0d0e73

Please sign in to comment.