From 15c7aedad363def31cfdacab894cce1162a9186b Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 28 Feb 2025 15:27:22 +0100 Subject: [PATCH] Fix forms export [SCI-11479] --- app/jobs/form_responses_zip_export_job.rb | 17 +++++++++++------ app/models/form_datetime_field_value.rb | 6 +++++- app/serializers/concerns/breadcrumbs_helper.rb | 14 +++++++++++--- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/app/jobs/form_responses_zip_export_job.rb b/app/jobs/form_responses_zip_export_job.rb index cc3d831f2..58761f131 100644 --- a/app/jobs/form_responses_zip_export_job.rb +++ b/app/jobs/form_responses_zip_export_job.rb @@ -4,6 +4,8 @@ require 'caxlsx' class FormResponsesZipExportJob < ZipExportJob include StringUtility + include BreadcrumbsHelper + include Rails.application.routes.url_helpers private @@ -40,7 +42,9 @@ class FormResponsesZipExportJob < ZipExportJob form_fields.each do |form_field| form_field_value = form_field_values.find_by(form_field_id: form_field.id, latest: true) if form_field_value.present? - if form_field_value.value_in_range? + if form_field_value.not_applicable + row.add_cell I18n.t('forms.export.values.not_applicable') + elsif form_field_value.value_in_range? row.add_cell form_field_value.formatted else row.add_cell form_field_value.formatted, style: warning_bg_style @@ -74,12 +78,13 @@ class FormResponsesZipExportJob < ZipExportJob def breadcrumbs(form_response) return '' unless (my_module = form_response&.step&.my_module) - [ - "#{my_module.project.name} (#{my_module.project.code})", - "#{my_module.experiment.name} (#{my_module.experiment.code})", - "#{my_module.name} (#{my_module.code})", + breadcrumbs = generate_breadcrumbs(my_module, []).map { |i| "#{i[:name]}(#{i[:code]})" } + + breadcrumbs += [ my_module.protocol.name || I18n.t('search.index.untitled_protocol'), form_response.step.name || I18n.t('protocols.steps.default_name') - ].join('/ ') + ] + + breadcrumbs.join('/ ') end end diff --git a/app/models/form_datetime_field_value.rb b/app/models/form_datetime_field_value.rb index 86ae3a189..b885537a8 100644 --- a/app/models/form_datetime_field_value.rb +++ b/app/models/form_datetime_field_value.rb @@ -19,6 +19,10 @@ class FormDatetimeFieldValue < FormFieldValue end def formatted - range? ? [datetime&.utc, datetime_to&.utc].join(' - ') : datetime&.utc.to_s + if form_field.data['time'] + range? ? [datetime&.utc, datetime_to&.utc].join(' - ') : datetime&.utc.to_s + else + range? ? [datetime&.to_date, datetime_to&.to_date].join(' - ') : datetime&.to_date.to_s + end end end diff --git a/app/serializers/concerns/breadcrumbs_helper.rb b/app/serializers/concerns/breadcrumbs_helper.rb index c28da89f3..0575f6080 100644 --- a/app/serializers/concerns/breadcrumbs_helper.rb +++ b/app/serializers/concerns/breadcrumbs_helper.rb @@ -8,7 +8,11 @@ module BreadcrumbsHelper case subject when Project - parent = subject.team + if subject.project_folder + parent = subject.project_folder + else + parent = subject.team + end url = project_path(subject) when Experiment parent = subject.project @@ -29,7 +33,11 @@ module BreadcrumbsHelper view_mode = subject.archived? ? 'archived' : 'active' url = my_module_results_path(subject.my_module, view_mode:) when ProjectFolder - parent = subject.team + if subject.parent_folder + parent = subject.parent_folder + else + parent = subject.team + end url = project_folder_path(subject) when RepositoryBase parent = subject.team @@ -71,7 +79,7 @@ module BreadcrumbsHelper url = projects_path(team: subject.id) end - breadcrumbs << { name: subject.name, url: } if subject.name.present? + breadcrumbs << { name: subject.name, code: subject.try(:code), url:} if subject.name.present? if parent generate_breadcrumbs(parent, breadcrumbs)