Skip to content

Commit 12d92f5

Browse files
committed
Render separate results partial for GeoData
Why these changes are being introduced: As USE and GeoData continue to diverge, it makes less sense for them to share view partials. This became clear when the USE tabbed results view broke GeoData full record view due to its implementation of Turbo frames. To fix this problem in the same results view would require an even more complex map of forked logic than we already had in that view. Relevant ticket(s): * [USE-31](https://mitlibraries.atlassian.net/browse/USE-31) How this addresses that need: This adds a separate `results_geo` partial that is rendered when the GeoData feature flag is active. Side effects of this change: * Forked views are something we've tried to avoid, but in this case it felt like the least bad option. * The `search_summary` partial has been renamed to `search_summary_geo`, and `search_summary_use` has been renamed to `search_summary`. This better matches our naming conventions for forked views. * An runelated change to `result_primo` tidies up a link.
1 parent fb5c0a5 commit 12d92f5

File tree

7 files changed

+161
-115
lines changed

7 files changed

+161
-115
lines changed

app/controllers/search_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def results
2727
if Flipflop.enabled?(:gdt)
2828
# Keep existing GDT behavior unchanged
2929
load_gdt_results
30+
render 'results_geo'
3031
else
3132
case @active_tab
3233
when 'primo'

app/views/search/_result_primo.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<h3 class="record-title">
44
<span class="sr">Title: </span>
55
<% if result_primo['links']&.find { |link| link['kind'] == 'full record' } %>
6-
<%= link_to(result_primo['title'], result_primo['links'].find { |link| link['kind'] == 'full record' }['url'], target: '_blank', rel: 'noopener') %>
6+
<%= link_to(result_primo['title'], result_primo['links'].find { |link| link['kind'] == 'full record' }['url']) %>
77
<% else %>
88
<%= result_primo['title'] %>
99
<% end %>
Lines changed: 3 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,7 @@
1-
<% return unless (applied_filters(@enhanced_query).present? ||
2-
applied_keyword(@enhanced_query).present? ||
3-
applied_geobox_terms(@enhanced_query).present? ||
4-
applied_geodistance_terms(@enhanced_query).present? ||
5-
applied_advanced_terms(@enhanced_query).present?) %>
1+
<% return unless params[:q].present? %>
62

73
<aside class="search-summary">
84
<div class="list-terms-summary">
9-
<h2 class="hd-search-summary hd-5">Applied search terms: </h2>
10-
<ul class="list-unbulleted">
11-
<% if applied_keyword(@enhanced_query).present? %>
12-
<li class="applied-term keyword"><%= applied_keyword(@enhanced_query).first %></li>
13-
<% end %>
14-
<% if applied_geobox_terms(@enhanced_query).present? %>
15-
<li>
16-
<ul class="list-inline terms-list">
17-
<% applied_geobox_terms(@enhanced_query).each do |term| %>
18-
<li class="applied-term"><%= term %></li>
19-
<% end %>
20-
</ul>
21-
</li>
22-
<% end %>
23-
<% if applied_geodistance_terms(@enhanced_query).present? %>
24-
<li>
25-
<ul class="list-inline terms-list">
26-
<% applied_geodistance_terms(@enhanced_query).each do |term| %>
27-
<li class="applied-term"><%= term %></li>
28-
<% end %>
29-
</ul>
30-
</li>
31-
<% end %>
32-
<% if applied_advanced_terms(@enhanced_query).present? %>
33-
<li>
34-
<ul class="list-inline terms-list">
35-
<% applied_advanced_terms(@enhanced_query).each do |term| %>
36-
<li class="applied-term"><%= term %></li>
37-
<% end %>
38-
</ul>
39-
</li>
40-
<% end %>
41-
</ul>
5+
<h2 class="hd-search-summary hd-5">You searched for: <%= params[:q] %></h2>
426
</div>
43-
44-
<% if applied_filters(@enhanced_query).any? %>
45-
<div class="list-filter-summary">
46-
<h2 class="hd-search-summary hd-5">Applied filters: </h2>
47-
<ul class="list-inline">
48-
<% applied_filters(@enhanced_query).each do |filter| %>
49-
<li>
50-
<a class="applied-filter"
51-
href="<%= results_path(remove_filter(@enhanced_query, filter.keys[0], filter.values[0])) %>">
52-
<%= "#{nice_labels[filter.keys[0]] || filter.keys[0]}:" %>
53-
<% if Flipflop.enabled?(:gdt) %>
54-
<%= "#{gdt_sources(filter.values[0], filter.keys[0])}" %>
55-
<% else %>
56-
<%= "#{filter.values[0]}" %>
57-
<% end %>
58-
<span class="sr">Remove applied filter?</span>
59-
</a>
60-
</li>
61-
<% end %>
62-
</ul>
63-
</div>
64-
<% if applied_filters(@enhanced_query).length > 1 %>
65-
<div class="clear-filters">
66-
<a class="btn button-primary"
67-
href="<%= results_path(remove_all_filters(@enhanced_query)) %>">Clear all filters</a>
68-
</div>
69-
<% end %>
70-
<% end %>
71-
</aside>
7+
</aside>
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<% return unless (applied_filters(@enhanced_query).present? ||
2+
applied_keyword(@enhanced_query).present? ||
3+
applied_geobox_terms(@enhanced_query).present? ||
4+
applied_geodistance_terms(@enhanced_query).present? ||
5+
applied_advanced_terms(@enhanced_query).present?) %>
6+
7+
<aside class="search-summary">
8+
<div class="list-terms-summary">
9+
<h2 class="hd-search-summary hd-5">Applied search terms: </h2>
10+
<ul class="list-unbulleted">
11+
<% if applied_keyword(@enhanced_query).present? %>
12+
<li class="applied-term keyword"><%= applied_keyword(@enhanced_query).first %></li>
13+
<% end %>
14+
<% if applied_geobox_terms(@enhanced_query).present? %>
15+
<li>
16+
<ul class="list-inline terms-list">
17+
<% applied_geobox_terms(@enhanced_query).each do |term| %>
18+
<li class="applied-term"><%= term %></li>
19+
<% end %>
20+
</ul>
21+
</li>
22+
<% end %>
23+
<% if applied_geodistance_terms(@enhanced_query).present? %>
24+
<li>
25+
<ul class="list-inline terms-list">
26+
<% applied_geodistance_terms(@enhanced_query).each do |term| %>
27+
<li class="applied-term"><%= term %></li>
28+
<% end %>
29+
</ul>
30+
</li>
31+
<% end %>
32+
<% if applied_advanced_terms(@enhanced_query).present? %>
33+
<li>
34+
<ul class="list-inline terms-list">
35+
<% applied_advanced_terms(@enhanced_query).each do |term| %>
36+
<li class="applied-term"><%= term %></li>
37+
<% end %>
38+
</ul>
39+
</li>
40+
<% end %>
41+
</ul>
42+
</div>
43+
44+
<% if applied_filters(@enhanced_query).any? %>
45+
<div class="list-filter-summary">
46+
<h2 class="hd-search-summary hd-5">Applied filters: </h2>
47+
<ul class="list-inline">
48+
<% applied_filters(@enhanced_query).each do |filter| %>
49+
<li>
50+
<a class="applied-filter"
51+
href="<%= results_path(remove_filter(@enhanced_query, filter.keys[0], filter.values[0])) %>">
52+
<%= "#{nice_labels[filter.keys[0]] || filter.keys[0]}:" %>
53+
<% if Flipflop.enabled?(:gdt) %>
54+
<%= "#{gdt_sources(filter.values[0], filter.keys[0])}" %>
55+
<% else %>
56+
<%= "#{filter.values[0]}" %>
57+
<% end %>
58+
<span class="sr">Remove applied filter?</span>
59+
</a>
60+
</li>
61+
<% end %>
62+
</ul>
63+
</div>
64+
<% if applied_filters(@enhanced_query).length > 1 %>
65+
<div class="clear-filters">
66+
<a class="btn button-primary"
67+
href="<%= results_path(remove_all_filters(@enhanced_query)) %>">Clear all filters</a>
68+
</div>
69+
<% end %>
70+
<% end %>
71+
</aside>

app/views/search/_search_summary_use.html.erb

Lines changed: 0 additions & 7 deletions
This file was deleted.

app/views/search/results.html.erb

Lines changed: 14 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99
<%= render partial: "shared/site_title" %>
1010

1111
<%= render partial: "form" %>
12-
<% if Flipflop.enabled?(:gdt) %>
13-
<%= render partial: "search_summary" %>
14-
<% else %>
15-
<%= render partial: "search_summary_use" %>
16-
<% end %>
12+
<%= render partial: "search_summary" %>
1713

1814
<% if ENV.fetch('FACT_PANELS_ENABLED', false).present? %>
1915
<div id="hint" aria-live="polite">
@@ -26,46 +22,23 @@
2622

2723
<%= render(partial: 'shared/error', collection: @errors) %>
2824

29-
<% unless Flipflop.enabled?(:gdt) %>
30-
<!-- Tab Navigation -->
31-
<div class="tab-navigation top-space">
32-
<%= link_to "Primo", results_path(params.permit(:q, :per_page, :page).merge(tab: 'primo')),
33-
class: "tab-link #{'active' if @active_tab == 'primo'}",
34-
data: { turbo_frame: "search-results" } %>
35-
<%= link_to "TIMDEX", results_path(params.permit(:q, :per_page, :page).merge(tab: 'timdex')),
36-
class: "tab-link #{'active' if @active_tab == 'timdex'}",
37-
data: { turbo_frame: "search-results" } %>
38-
</div>
39-
<% end %>
25+
<!-- Tab Navigation -->
26+
<div class="tab-navigation top-space">
27+
<%= link_to "Primo", results_path(params.permit(:q, :per_page, :page).merge(tab: 'primo')),
28+
class: "tab-link #{'active' if @active_tab == 'primo'}",
29+
data: { turbo_frame: "search-results" } %>
30+
<%= link_to "TIMDEX", results_path(params.permit(:q, :per_page, :page).merge(tab: 'timdex')),
31+
class: "tab-link #{'active' if @active_tab == 'timdex'}",
32+
data: { turbo_frame: "search-results" } %>
33+
</div>
4034

4135
<%= turbo_frame_tag "search-results" do %>
42-
<div class="<%= @filters.present? ? 'layout-1q3q' : 'layout-3q1q' %> layout-band top-space">
43-
<% if @filters.present? %>
44-
<aside id="filters" class="col1q">
45-
<button id="filter-toggle"><span class="filter-toggle-name">Filter your results</span><span class="filter-toggle-hide">Hide filters</span></button>
46-
<div id="filter-container" class="hidden-md">
47-
<div class="hidden-md">
48-
<h2 class="hd-3">Filter your results</h2>
49-
</div>
50-
<% @filters&.each_with_index do |(category, values), index| %>
51-
<% if index == 0 %>
52-
<%= render(partial: 'search/filter', locals: { category: category, values: values, first: true }) %>
53-
<% else %>
54-
<%= render(partial: 'search/filter', locals: { category: category, values: values, first: false }) %>
55-
<% end %>
56-
<% end %>
57-
</div>
58-
<%= render partial: 'shared/ask', locals: { display: 'view-lg' } %>
59-
</aside>
60-
<% end %>
61-
36+
<div class="layout-3q1q layout-band top-space">
6237
<main id="results" class="col3q wrap-results">
6338
<% if @results.present? && @errors.blank? %>
6439
<h2 class="hd-3 results-context"><%= results_summary(@pagination[:hits]) %> returned</h2>
6540
<ol class="results-list" start="<%= @pagination[:start] %>">
66-
<% if Flipflop.enabled?(:gdt) %>
67-
<%= render(partial: 'search/result_geo', collection: @results) %>
68-
<% elsif @active_tab == 'primo' %>
41+
<% if @active_tab == 'primo' %>
6942
<%= render(partial: 'search/result_primo', collection: @results) %>
7043
<% else %>
7144
<%= render(partial: 'search/result', collection: @results) %>
@@ -79,7 +52,8 @@
7952
</main>
8053
</div>
8154
<% end %>
82-
<%= render partial: 'shared/ask', locals: { display: 'aside' } if @results.blank? %>
55+
56+
<%= render partial: 'shared/ask', locals: { display: 'aside' } if @results.blank? %>
8357

8458
<% if @results.present? %>
8559
<div id="pagination">
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<%= content_for(:title, results_page_title(@enhanced_query)) %>
2+
3+
<% content_for :additional_meta_tag do %>
4+
<meta name="robots" content="noindex, nofollow" />
5+
<% end %>
6+
7+
<div class="space-wrap">
8+
9+
<%= render partial: "shared/site_title" %>
10+
11+
<%= render partial: "form" %>
12+
<%= render partial: "search_summary_geo" %>
13+
14+
<% if ENV.fetch('FACT_PANELS_ENABLED', false).present? %>
15+
<div id="hint" aria-live="polite">
16+
<%= render(partial: 'search/issn') if fact_enabled?('issn') %>
17+
<%= render(partial: 'search/isbn') if fact_enabled?('isbn') %>
18+
<%= render(partial: 'search/pmid') if fact_enabled?('pmid') %>
19+
<%= render(partial: 'search/doi') if fact_enabled?('doi') %>
20+
</div>
21+
<% end %>
22+
23+
<%= render(partial: 'shared/error', collection: @errors) %>
24+
25+
<div class="<%= @filters.present? ? 'layout-1q3q' : 'layout-3q1q' %> layout-band top-space">
26+
<% if @filters.present? %>
27+
<aside id="filters" class="col1q">
28+
<button id="filter-toggle"><span class="filter-toggle-name">Filter your results</span><span class="filter-toggle-hide">Hide filters</span></button>
29+
<div id="filter-container" class="hidden-md">
30+
<div class="hidden-md">
31+
<h2 class="hd-3">Filter your results</h2>
32+
</div>
33+
<% @filters&.each_with_index do |(category, values), index| %>
34+
<% if index == 0 %>
35+
<%= render(partial: 'search/filter', locals: { category: category, values: values, first: true }) %>
36+
<% else %>
37+
<%= render(partial: 'search/filter', locals: { category: category, values: values, first: false }) %>
38+
<% end %>
39+
<% end %>
40+
</div>
41+
<%= render partial: 'shared/ask', locals: { display: 'view-lg' } %>
42+
</aside>
43+
<% end %>
44+
45+
<main id="results" class="col3q wrap-results">
46+
<% if @results.present? && @errors.blank? %>
47+
<h2 class="hd-3 results-context"><%= results_summary(@pagination[:hits]) %> returned</h2>
48+
<ol class="results-list" start="<%= @pagination[:start] %>">
49+
<%= render(partial: 'search/result_geo', collection: @results) %>
50+
</ol>
51+
<% elsif @errors.blank? %>
52+
<div class="no-results">
53+
<p class="hd-2">No results found for your search</p>
54+
</div>
55+
<% end %>
56+
</main>
57+
</div>
58+
59+
<%= render partial: 'shared/ask', locals: { display: 'aside' } if @results.blank? %>
60+
61+
<% if @results.present? %>
62+
<div id="pagination">
63+
<%= render partial: "pagination" %>
64+
</div>
65+
<%= render partial: 'shared/ask', locals: { display: 'view-md' } %>
66+
<% end %>
67+
</div>
68+
69+
<%= render(partial: 'trigger_tacos') if tacos_enabled? %>
70+
71+
<%= javascript_include_tag "filters" %>

0 commit comments

Comments
 (0)