Skip to content

Commit 804af74

Browse files
author
Alice Bartlett
committed
Extract scoped search to separate presenter
Since out code for scoped searches is getting a bit more involved with the inclusion of un-scoped results, let's extract this functionality to a new presenter `scoped_search_results_presenter`. This commit just extracts the existing functionality into a new presenter, no new features are added.
1 parent 5b7049b commit 804af74

File tree

3 files changed

+39
-32
lines changed

3 files changed

+39
-32
lines changed

‎app/controllers/search_controller.rb‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@ def index
1717
search_response=search_client.search(search_params)
1818

1919
@search_term=search_params.search_term
20-
@results=SearchResultsPresenter.new(search_response,search_params)
20+
21+
if(search_response["scope"].present?)
22+
@results=ScopedSearchResultsPresenter.new(search_response,search_params)
23+
else
24+
@results=SearchResultsPresenter.new(search_response,search_params)
25+
end
26+
2127
@facets=search_response["facets"]
2228
@spelling_suggestion=@results.spelling_suggestion
2329

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
classScopedSearchResultsPresenter < SearchResultsPresenter
2+
3+
defto_hash
4+
super.merge({
5+
is_scoped?: true,
6+
scope_title: scope_title,
7+
})
8+
end
9+
10+
private
11+
12+
deffilter_fields
13+
end
14+
15+
defscope_title
16+
search_response[:scope][:title]
17+
end
18+
19+
end

‎app/presenters/search_results_presenter.rb‎

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def to_hash
1717
{
1818
query: search_parameters.search_term,
1919
result_count: result_count,
20-
result_count_string: result_count_string,
20+
result_count_string: result_count_string(result_count),
2121
results_any?: results.any?,
2222
results: results.map{ |result| result.to_hash},
2323
filter_fields: filter_fields,
@@ -29,25 +29,19 @@ def to_hash
2929
previous_page_link: previous_page_link,
3030
previous_page_label: previous_page_label,
3131
first_result_number: (search_parameters.start + 1),
32-
is_scoped?: is_scoped?,
33-
scope_title: scope_title,
3432
}
3533
end
3634

3735
deffilter_fields
38-
ifis_scoped?
39-
[]
40-
else
41-
search_response["facets"].mapdo |field,value|
42-
external=SearchParameters::external_field_name(field)
43-
facet_params=search_parameters.filter(external)
44-
facet=SearchFacetPresenter.new(value,facet_params)
45-
{
46-
field: external,
47-
field_title: FACET_TITLES.fetch(field,field),
48-
options: facet.to_hash,
49-
}
50-
end
36+
search_response["facets"].mapdo |field,value|
37+
external=SearchParameters::external_field_name(field)
38+
facet_params=search_parameters.filter(external)
39+
facet=SearchFacetPresenter.new(value,facet_params)
40+
{
41+
field: external,
42+
field_title: FACET_TITLES.fetch(field,field),
43+
options: facet.to_hash,
44+
}
5145
end
5246
end
5347

@@ -72,18 +66,16 @@ def result_count
7266
search_response["total"].to_i
7367
end
7468

75-
defresult_count_string
76-
pluralize(number_with_delimiter(result_count),"result")
69+
defresult_count_string(count)
70+
pluralize(number_with_delimiter(count),"result")
7771
end
7872

7973
defresults
8074
search_response["results"].map{ |result| build_result(result)}
8175
end
8276

8377
defbuild_result(result)
84-
ifis_scoped?
85-
ScopedResult.new(search_parameters,result)
86-
elsifresult["document_type"] == "group"
78+
ifresult["document_type"] == "group"
8779
GroupResult.new(search_parameters,result)
8880
elsifresult["document_type"] && result["document_type"] != "edition"
8981
NonEditionResult.new(search_parameters,result)
@@ -127,16 +119,6 @@ def previous_page_label
127119
end
128120
end
129121

130-
defis_scoped?
131-
search_response[:scope].present?
132-
end
133-
134-
defscope_title
135-
ifis_scoped?
136-
search_response[:scope][:title]
137-
end
138-
end
139-
140122
private
141123

142124
attr_reader:search_parameters,:search_response

0 commit comments

Comments
(0)