Browse Source

Refactor locations/index page (#2523)

pull/2532/head
kosiakkatrina 6 months ago committed by GitHub
parent
commit
a4a83908ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 10
      app/helpers/tab_nav_helper.rb
  2. 34
      app/views/locations/index.html.erb
  3. 5
      spec/helpers/tab_nav_helper_spec.rb

10
app/helpers/tab_nav_helper.rb

@ -7,7 +7,15 @@ module TabNavHelper
[govuk_link_to(link_text, user), "<span class=\"govuk-visually-hidden\">User </span><span class=\"govuk-!-font-weight-regular app-!-colour-muted\">#{user.email}</span>"].join("\n")
end
def location_cell_postcode(location, link)
def location_cell_postcode(location, scheme)
link = if location.confirmed
scheme_location_path(scheme, location)
elsif location.postcode.present?
scheme_location_check_answers_path(scheme, location, route: "locations")
else
scheme_location_postcode_path(scheme, location)
end
link_text = location.postcode || "Add postcode"
[govuk_link_to(link_text, link, method: :patch), "<span class=\"govuk-visually-hidden\">Location</span>"].join("\n")
end

34
app/views/locations/index.html.erb

@ -16,46 +16,38 @@
<%= render partial: "organisations/headings", locals: { main: @scheme.service_name, sub: nil } %>
<div class="app-filter-layout" data-controller="filter-layout">
<%= render SubNavigationComponent.new(items: scheme_items(request.path, @scheme.id)) %>
<%= render partial: "locations/location_filters" %>
<div class="app-filter-layout__content">
<h2 class="govuk-visually-hidden">Locations</h2>
<div class="app-filter-toggle"></div>
<%= render SearchComponent.new(current_user:, search_label: "Search by location name or postcode", value: @searched) %>
<%= govuk_section_break(visible: true, size: "m") %>
<%= govuk_table do |table| %>
<%= table.with_caption(classes: %w[govuk-!-font-size-19 govuk-!-font-weight-regular]) do |caption| %>
<%= render(SearchResultCaptionComponent.new(searched: @searched, count: @pagy.count, item_label:, total_count: @total_count, item: "locations", filters_count: applied_filters_count(@filter_type))) %>
<%= render(SearchResultCaptionComponent.new(
searched: @searched,
count: @pagy.count,
item_label:,
total_count: @total_count,
item: "locations",
filters_count: applied_filters_count(@filter_type),
)) %>
<% end %>
<%= table.with_head do |head| %>
<%= head.with_row do |row| %>
<% row.with_cell(header: true, text: "Postcode", html_attributes: {
scope: "col",
}) %>
<% row.with_cell(header: true, text: "Name", html_attributes: {
scope: "col",
}) %>
<% row.with_cell(header: true, text: "Location code", html_attributes: {
scope: "col",
}) %>
<% row.with_cell(header: true, text: "Status", html_attributes: {
scope: "col",
}) %>
<% row.with_cell(header: true, text: "Postcode", html_attributes: { scope: "col" }) %>
<% row.with_cell(header: true, text: "Name", html_attributes: { scope: "col" }) %>
<% row.with_cell(header: true, text: "Location code", html_attributes: { scope: "col" }) %>
<% row.with_cell(header: true, text: "Status", html_attributes: { scope: "col" }) %>
<% end %>
<% end %>
<% @locations.each do |location| %>
<%= table.with_body do |body| %>
<%= body.with_row do |row| %>
<% row.with_cell(text: simple_format(location_cell_postcode(location, if location.confirmed
scheme_location_path(@scheme, location)
else
location.postcode.present? ? scheme_location_check_answers_path(@scheme, location, route: "locations") : scheme_location_postcode_path(@scheme, location)
end), { class: "govuk-!-font-weight-bold" }, wrapper_tag: "div")) %>
<% row.with_cell(text: simple_format(location_cell_postcode(location, @scheme), { class: "govuk-!-font-weight-bold" }, wrapper_tag: "div")) %>
<% row.with_cell(text: location.name) %>
<% row.with_cell(text: location.id) %>
<% row.with_cell(text: status_tag_from_resource(location)) %>

5
spec/helpers/tab_nav_helper_spec.rb

@ -22,9 +22,8 @@ RSpec.describe TabNavHelper do
describe "#location_cell" do
it "returns the location link to the postcode with optional name" do
link = "/schemes/#{location.scheme.id}/locations/#{location.id}/edit"
expected_html = "<a class=\"govuk-link\" rel=\"nofollow\" data-method=\"patch\" href=\"/schemes/#{scheme.id}/locations/#{location.id}/edit\">#{location.postcode}</a>\n<span class=\"govuk-visually-hidden\">Location</span>"
expect(location_cell_postcode(location, link)).to match(expected_html)
expected_html = "<a class=\"govuk-link\" rel=\"nofollow\" data-method=\"patch\" href=\"/schemes/#{scheme.id}/locations/#{location.id}\">#{location.postcode}</a>\n<span class=\"govuk-visually-hidden\">Location</span>"
expect(location_cell_postcode(location, scheme)).to match(expected_html)
end
end

Loading…
Cancel
Save