From b74fd830f13ff0179efeff77421a3d7e43e76d83 Mon Sep 17 00:00:00 2001
From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com>
Date: Tue, 17 Dec 2024 11:56:22 +0000
Subject: [PATCH] Refactor details table helper
---
app/helpers/details_table_helper.rb | 29 ++++++++++++-----------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/app/helpers/details_table_helper.rb b/app/helpers/details_table_helper.rb
index f58720591..2ba89e2fb 100644
--- a/app/helpers/details_table_helper.rb
+++ b/app/helpers/details_table_helper.rb
@@ -1,42 +1,37 @@
module DetailsTableHelper
def details_html(attribute, resource = nil)
- resource_class = resource.class.name
-
if attribute[:format] == :bullet && attribute[:value].length > 1
list = attribute[:value].map { |value| "
#{value}" }.join
simple_format(list, { class: "govuk-list govuk-list--bullet" }, wrapper_tag: "ul")
else
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")
end
end
private
- def determine_value(attribute, resource, resource_class)
- attribute[:value].presence || case resource_class
- when "Location"
- location_value(attribute, resource)
- when "Organisation"
- organisation_value(attribute, resource)
- when "Scheme"
- scheme_value(attribute, resource)
- else
- "No answer provided".html_safe
- end
+ def determine_value(attribute, resource)
+ attribute[:value].presence || send("#{resource.class.name.downcase}_value", attribute, resource) || "No answer provided".html_safe
end
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") : "No answer provided".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
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") : "No answer provided".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
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), class: "govuk-link govuk-link--no-visited-state") : "No answer provided".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