Fix forms export [SCI-11479]

This commit is contained in:
Anton 2025-02-28 15:27:22 +01:00
parent caff6ee1e9
commit 15c7aedad3
3 changed files with 27 additions and 10 deletions

View file

@ -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

View file

@ -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

View file

@ -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)