mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-10 08:21:37 +08:00
Fix forms export [SCI-11479]
This commit is contained in:
parent
caff6ee1e9
commit
15c7aedad3
3 changed files with 27 additions and 10 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue