Browse Source

Refactor V2 details table helper

CLDC-3740-Replace-you-didnt-answer-with-link
Manny Dinssa 1 week ago
parent
commit
e4e9e33869
  1. 32
      app/helpers/details_table_helper.rb

32
app/helpers/details_table_helper.rb

@ -1,42 +1,42 @@
module DetailsTableHelper module DetailsTableHelper
def details_html(attribute, resource = nil) def details_html(attribute, resource = nil)
resource_class = resource.class.name
if attribute[:format] == :bullet && attribute[:value].length > 1 if attribute[:format] == :bullet && attribute[:value].length > 1
list = attribute[:value].map { |value| "<li>#{value}</li>" }.join list = attribute[:value].map { |value| "<li>#{value}</li>" }.join
simple_format(list, { class: "govuk-list govuk-list--bullet" }, wrapper_tag: "ul") simple_format(list, { class: "govuk-list govuk-list--bullet" }, wrapper_tag: "ul")
else else
return simple_format(attribute[:value].first.to_s, { class: "govuk-body" }, wrapper_tag: "p") if attribute[:value].is_a?(Array) && attribute[:value].any? return simple_format(attribute[:value].first.to_s, { class: "govuk-body" }, wrapper_tag: "p") if attribute[:value].is_a?(Array) && attribute[:value].any?
value = determine_value(attribute, resource, resource_class) value = determine_value(attribute, resource)
simple_format(value.to_s, { class: "govuk-body" }, wrapper_tag: "p") simple_format(value.to_s, { class: "govuk-body" }, wrapper_tag: "p")
end end
end end
private private
def determine_value(attribute, resource, resource_class) def determine_value(attribute, resource)
attribute[:value].presence || case resource_class return attribute[:value] if attribute[:value].present?
when "Location"
location_value(attribute, resource) method_name = "#{resource.class.name.downcase}_value"
when "Organisation" return send(method_name, attribute, resource) if respond_to?(method_name)
organisation_value(attribute, resource)
when "Scheme"
scheme_value(attribute, resource)
else
"<span class=\"app-!-colour-muted\">No answer provided</span>".html_safe "<span class=\"app-!-colour-muted\">No answer provided</span>".html_safe
end end
end
def location_value(attribute, resource) def location_value(attribute, resource)
LocationPolicy.new(current_user, resource).update? ? govuk_link_to(location_details_link_message(attribute), location_edit_path(resource, attribute[:attribute]), class: "govuk-link govuk-link--no-visited-state") : "<span class=\"app-!-colour-muted\">No answer provided</span>".html_safe return nil unless LocationPolicy.new(current_user, resource).update?
govuk_link_to(location_details_link_message(attribute), location_edit_path(resource, attribute[:attribute]), class: "govuk-link govuk-link--no-visited-state")
end end
def organisation_value(attribute, resource) def organisation_value(attribute, resource)
can_edit_org?(current_user) && attribute[:editable] ? govuk_link_to(organisation_details_link_message(attribute), edit_organisation_path(resource), class: "govuk-link govuk-link--no-visited-state") : "<span class=\"app-!-colour-muted\">No answer provided</span>".html_safe return nil unless can_edit_org?(current_user) && attribute[:editable]
govuk_link_to(organisation_details_link_message(attribute), edit_organisation_path(resource), class: "govuk-link govuk-link--no-visited-state")
end end
def scheme_value(attribute, resource) def scheme_value(attribute, resource)
can_change_scheme_answer?(attribute[:name], resource) ? govuk_link_to(scheme_details_link_message(attribute), scheme_edit_path(resource, attribute[:id]), class: "govuk-link govuk-link--no-visited-state") : "<span class=\"app-!-colour-muted\">No answer provided</span>".html_safe return nil unless can_change_scheme_answer?(attribute[:name], resource)
govuk_link_to(scheme_details_link_message(attribute), scheme_edit_path(resource, attribute), class: "govuk-link govuk-link--no-visited-state")
end end
end end

Loading…
Cancel
Save