From 8f457be719d175202ec00d66b1ec8f3face66bda Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Thu, 8 Feb 2024 20:12:08 +0200 Subject: [PATCH] fix default values --- app/javascript/submission_form/form.vue | 2 +- app/javascript/submission_form/text_step.vue | 12 +++++++----- lib/submissions/create_from_submitters.rb | 6 ++++-- lib/submitters/normalize_values.rb | 20 ++++++++++++++++++-- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index c5263a01..6852100f 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -621,7 +621,7 @@ export default { this.fields.forEach((field) => { if (field.default_value && !field.readonly) { - this.values[field.uuid] = field.default_value + this.values[field.uuid] ||= field.default_value } }) diff --git a/app/javascript/submission_form/text_step.vue b/app/javascript/submission_form/text_step.vue index f6fa4820..674d7024 100644 --- a/app/javascript/submission_form/text_step.vue +++ b/app/javascript/submission_form/text_step.vue @@ -123,12 +123,14 @@ export default { } }, mounted () { - this.isTextArea = this.modelValue?.includes('\n') + if (this.modelValue) { + this.isTextArea = this.modelValue.toString().includes('\n') - if (this.isTextArea) { - this.$nextTick(() => { - this.resizeTextarea() - }) + if (this.isTextArea) { + this.$nextTick(() => { + this.resizeTextarea() + }) + } } }, methods: { diff --git a/lib/submissions/create_from_submitters.rb b/lib/submissions/create_from_submitters.rb index bc80f507..5abd3923 100644 --- a/lib/submissions/create_from_submitters.rb +++ b/lib/submissions/create_from_submitters.rb @@ -109,8 +109,10 @@ module Submissions field['description'] = attrs['description'] if attrs['description'].present? field['readonly'] = attrs['readonly'] if attrs.key?('readonly') field['required'] = attrs['required'] if attrs.key?('required') - field['default_value'] = attrs['default_value'] if attrs['default_value'].present? && - !field['type'].in?(%w[signature image initials file]) + + if attrs['default_value'].present? && !field['type'].in?(%w[signature image initials file]) + field['default_value'] = Submitters::NormalizeValues.normalize_value(field, attrs['default_value']) + end return field if attrs['validation_pattern'].blank? diff --git a/lib/submitters/normalize_values.rb b/lib/submitters/normalize_values.rb index 6ab5b5d3..accecfc1 100644 --- a/lib/submitters/normalize_values.rb +++ b/lib/submitters/normalize_values.rb @@ -28,7 +28,9 @@ module Submitters next if key.blank? - if fields_uuid_index[key]['type'].in?(%w[initials signature image file]) && value.present? + field = fields_uuid_index[key] + + if field['type'].in?(%w[initials signature image file]) && value.present? new_value, new_attachments = normalize_attachment_value(value, template.account, for_submitter) attachments.push(*new_attachments) @@ -36,12 +38,26 @@ module Submitters value = new_value end - [key, value] + [key, normalize_value(field, value)] end.to_h [normalized_values, attachments] end + def normalize_value(field, value) + if field['type'] == 'text' && value.present? + value.to_s + elsif field['type'] == 'date' && value.present? + Date.parse(value).to_s + else + value + end + rescue Date::Error => e + Rollbar.error(e) if defined?(Rollbar) + + value + end + def fetch_fields(template, submitter_name: nil, for_submitter: nil) if submitter_name submitter =