Skip to content

Commit

Permalink
Merge pull request #22 from alphagov/submit-results
Browse files Browse the repository at this point in the history
Enable ranking submission
  • Loading branch information
csutter authored Nov 26, 2023
2 parents 155e49e + d142a97 commit cad1734
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 28 deletions.
8 changes: 4 additions & 4 deletions app/assets/stylesheets/search.scss
Original file line number Diff line number Diff line change
Expand Up @@ -129,19 +129,19 @@
box-shadow: 0 0 0 8px $govuk-focus-colour;
}

.search-results__ranking-option--perfect input:checked {
.search-results__ranking-option--3 input:checked {
background-color: govuk-colour("blue");
}

.search-results__ranking-option--good input:checked {
.search-results__ranking-option--2 input:checked {
background-color: govuk-colour("green");
}

.search-results__ranking-option--ok input:checked {
.search-results__ranking-option--1 input:checked {
background-color: govuk-colour("orange");
}

.search-results__ranking-option--bad input:checked {
.search-results__ranking-option--0 input:checked {
background-color: govuk-colour("red");
}

Expand Down
2 changes: 1 addition & 1 deletion app/controllers/feedbacks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def create

def feedback_params
params.require(:feedback).permit(
:search_query, :suggested_url, :comments, result_ratings: %i[content_id url position rating]
:search_query, :suggested_url, :comments, result_ratings_attributes: {}
)
end
end
5 changes: 4 additions & 1 deletion app/controllers/searches_controller.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
class SearchesController < ApplicationController
def show
@search = Search.new(query_params)
@feedback = Feedback.new(search_query: @search.query)
@feedback = Feedback.new(
search_query: @search.query,
result_ratings: @search.results.map.with_index { |r, i| ResultRating.new(content_id: r.content_id, link: r.link, position: i) },
)
end

private
Expand Down
11 changes: 11 additions & 0 deletions app/models/feedback.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@ class Feedback

attr_accessor :search_query, :result_ratings, :suggested_url, :comments

def result_ratings_attributes=(attributes)
@result_ratings = attributes.map do |_, v|
ResultRating.new(
content_id: v["content_id"],
link: v["link"],
position: v["position"].to_i,
rating: v["rating"].presence&.to_i, # nil rating is legitimate, don't convert to zero
)
end
end

def save
return false unless valid?

Expand Down
10 changes: 6 additions & 4 deletions app/models/result_rating.rb
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
class ResultRating
RATING_OPTIONS = {
0 => "Bad",
1 => "OK",
2 => "Good",
3 => "Perfect",
2 => "Good",
1 => "OK",
0 => "Bad",
}.freeze

include ActiveModel::Model

attr_accessor :content_id, :url, :position, :rating
attr_accessor :content_id, :link, :position, :rating

def self.rating_options
RATING_OPTIONS
end

def id = content_id
end
25 changes: 9 additions & 16 deletions app/views/searches/_result.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<li class="search-results__result">
<%= form.hidden_field :content_id %>
<%= form.hidden_field :link %>
<%= form.hidden_field :position %>
<div class="search-results__details">
<h2 class="search-results__title">
<%= govuk_link_to result.title, result.link %>
Expand Down Expand Up @@ -26,21 +29,11 @@
<legend class="search-results__ranking-legend">
How relevant is this result?
</legend>
<label class="search-results__ranking-option search-results__ranking-option--perfect">
<%= label result.content_id, "ranking", "Perfect", value: "perfect" %>
<%= radio_button result.content_id, "ranking", "perfect" %>
</label>
<label class="search-results__ranking-option search-results__ranking-option--good">
<%= label result.content_id, "ranking", "Good", value: "good" %>
<%= radio_button result.content_id, "ranking", "good" %>
</label>
<label class="search-results__ranking-option search-results__ranking-option--ok">
<%= label result.content_id, "ranking", "Okay", value: "ok" %>
<%= radio_button result.content_id, "ranking", "ok" %>
</label>
<label class="search-results__ranking-option search-results__ranking-option--bad">
<%= label result.content_id, "ranking", "Bad", value: "bad" %>
<%= radio_button result.content_id, "ranking", "bad" %>
</label>
<% ResultRating.rating_options.each do |value, label| %>
<label class="search-results__ranking-option search-results__ranking-option--<%= value %>">
<%= form.label :rating, label, value: %>
<%= form.radio_button :rating, value %>
</label>
<% end %>
</fieldset>
</li>
4 changes: 2 additions & 2 deletions app/views/searches/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@
<div class="govuk-grid-row search-results">
<div class="govuk-grid-column-full">
<ul class="search-results__list">
<% @search.results.each do |result| %>
<%= render partial: "searches/result", locals: { result:, form: } %>
<%= form.fields_for :result_ratings do |ff| %>
<%= render partial: "searches/result", locals: { form: ff, result: @search.results[ff.object.position] } %>
<% end %>
</ul>
</div>
Expand Down

0 comments on commit cad1734

Please sign in to comment.