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 class FormResponsesZipExportJob < ZipExportJob
include StringUtility include StringUtility
include BreadcrumbsHelper
include Rails.application.routes.url_helpers
private private
@ -40,7 +42,9 @@ class FormResponsesZipExportJob < ZipExportJob
form_fields.each do |form_field| form_fields.each do |form_field|
form_field_value = form_field_values.find_by(form_field_id: form_field.id, latest: true) 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.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 row.add_cell form_field_value.formatted
else else
row.add_cell form_field_value.formatted, style: warning_bg_style row.add_cell form_field_value.formatted, style: warning_bg_style
@ -74,12 +78,13 @@ class FormResponsesZipExportJob < ZipExportJob
def breadcrumbs(form_response) def breadcrumbs(form_response)
return '' unless (my_module = form_response&.step&.my_module) return '' unless (my_module = form_response&.step&.my_module)
[ breadcrumbs = generate_breadcrumbs(my_module, []).map { |i| "#{i[:name]}(#{i[:code]})" }
"#{my_module.project.name} (#{my_module.project.code})",
"#{my_module.experiment.name} (#{my_module.experiment.code})", breadcrumbs += [
"#{my_module.name} (#{my_module.code})",
my_module.protocol.name || I18n.t('search.index.untitled_protocol'), my_module.protocol.name || I18n.t('search.index.untitled_protocol'),
form_response.step.name || I18n.t('protocols.steps.default_name') form_response.step.name || I18n.t('protocols.steps.default_name')
].join('/ ') ]
breadcrumbs.join('/ ')
end end
end end

View file

@ -19,6 +19,10 @@ class FormDatetimeFieldValue < FormFieldValue
end end
def formatted def formatted
if form_field.data['time']
range? ? [datetime&.utc, datetime_to&.utc].join(' - ') : datetime&.utc.to_s 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
end end

View file

@ -8,7 +8,11 @@ module BreadcrumbsHelper
case subject case subject
when Project when Project
if subject.project_folder
parent = subject.project_folder
else
parent = subject.team parent = subject.team
end
url = project_path(subject) url = project_path(subject)
when Experiment when Experiment
parent = subject.project parent = subject.project
@ -29,7 +33,11 @@ module BreadcrumbsHelper
view_mode = subject.archived? ? 'archived' : 'active' view_mode = subject.archived? ? 'archived' : 'active'
url = my_module_results_path(subject.my_module, view_mode:) url = my_module_results_path(subject.my_module, view_mode:)
when ProjectFolder when ProjectFolder
if subject.parent_folder
parent = subject.parent_folder
else
parent = subject.team parent = subject.team
end
url = project_folder_path(subject) url = project_folder_path(subject)
when RepositoryBase when RepositoryBase
parent = subject.team parent = subject.team
@ -71,7 +79,7 @@ module BreadcrumbsHelper
url = projects_path(team: subject.id) url = projects_path(team: subject.id)
end 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 if parent
generate_breadcrumbs(parent, breadcrumbs) generate_breadcrumbs(parent, breadcrumbs)