Browse Source

Small improvements, make address search and existing search more similar

pull/2924/head
Manny Dinssa 2 months ago
parent
commit
b0955b5451
  1. 6
      app/controllers/address_search_controller.rb
  2. 7
      app/frontend/controllers/address_search_controller.js
  3. 10
      app/views/form/_address_search_question.html.erb

6
app/controllers/address_search_controller.rb

@ -14,7 +14,7 @@ class AddressSearchController < ApplicationController
render json: { error: service.error }, status: :unprocessable_entity
else
presenter = UprnDataPresenter.new(service.result)
render json: [{ address: presenter.address, uprn: presenter.uprn }]
render json: [{ text: presenter.address, value: presenter.uprn }]
end
elsif query.match?(/[a-zA-Z]/)
# Query contains letters, assume it's an address
@ -26,7 +26,7 @@ class AddressSearchController < ApplicationController
else
results = service.result.map do |result|
presenter = AddressDataPresenter.new(result)
{ address: presenter.address, uprn: presenter.uprn }
{ text: presenter.address, value: presenter.uprn }
end
render json: results
end
@ -45,7 +45,7 @@ class AddressSearchController < ApplicationController
else
formatted_results = results.map do |result|
presenter = AddressDataPresenter.new(result)
{ address: presenter.address, uprn: presenter.uprn }
{ text: presenter.address, value: presenter.uprn }
end
render json: formatted_results
end

7
app/frontend/controllers/address_search_controller.js

@ -13,7 +13,7 @@ const fetchAndPopulateSearchResults = async (query, populateResults, searchUrl,
if (/\S/.test(query)) {
const results = await fetchOptions(query, searchUrl)
populateOptions(results, selectEl)
populateResults(Object.values(results).map((o) => o.address))
populateResults(Object.values(results).map((o) => o.text))
}
}
@ -22,9 +22,8 @@ const populateOptions = (results, selectEl) => {
results.forEach((result) => {
const option = document.createElement('option')
option.value = result.uprn
option.innerHTML = result.address
option.setAttribute('address', result.address)
option.value = result.value
option.innerHTML = result.text
selectEl.appendChild(option)
options.push(option)
})

10
app/views/form/_address_search_question.html.erb

@ -3,11 +3,11 @@
<%= render partial: "form/guidance/#{question.top_guidance_partial}" if question.top_guidance? %>
<%= f.govuk_select(question.id.to_sym,
label: legend(question, page_header, conditional),
"data-controller": "address-search",
"data-info": { search_url: address_search_url }.to_json,
caption: caption(caption_text, page_header, conditional),
hint: { text: question.hint_text&.html_safe }) do %>
label: legend(question, page_header, conditional),
"data-controller": "address-search",
"data-info": { search_url: address_search_url }.to_json,
caption: caption(caption_text, page_header, conditional),
hint: { text: question.hint_text&.html_safe }) do %>
<% if answers.any? %>
<% answers.each do |answer| %>
<option value="<%= answer.id %>"

Loading…
Cancel
Save