diff --git a/app/javascript/submission_form/area.vue b/app/javascript/submission_form/area.vue index 7820287c..f2bca9b6 100644 --- a/app/javascript/submission_form/area.vue +++ b/app/javascript/submission_form/area.vue @@ -165,6 +165,9 @@ {{ formattedDate }} + + {{ formatNumber(modelValue, field.preferences?.format) }} + + {{ formatNumber(field.default_value, field.preferences?.format) }} +
+ + +
<%= TimeUtils.format_date_string(value, field.dig('preferences', 'format'), local_assigns[:locale]) %>
+ <% elsif field['type'] == 'number' %> + +
+ <%= NumberUtils.format_number(value, field.dig('preferences', 'format')) %> +
<% else %>
<%= Array.wrap(value).join(', ') %>
diff --git a/lib/number_utils.rb b/lib/number_utils.rb new file mode 100644 index 00000000..d0ab673c --- /dev/null +++ b/lib/number_utils.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module NumberUtils + FORMAT_LOCALES = { + 'dot' => 'de', + 'space' => 'fr', + 'comma' => 'en' + }.freeze + + module_function + + def format_number(number, format) + locale = FORMAT_LOCALES[format] + + if locale + ApplicationController.helpers.number_with_delimiter(number, locale:) + else + number + end + end +end diff --git a/lib/submissions/generate_audit_trail.rb b/lib/submissions/generate_audit_trail.rb index f4da2f9a..e4abcc33 100644 --- a/lib/submissions/generate_audit_trail.rb +++ b/lib/submissions/generate_audit_trail.rb @@ -261,6 +261,8 @@ module Submissions value = TimeUtils.format_date_string(value, field.dig('preferences', 'format'), account.locale) end + value = NumberUtils.format_number(value, field.dig('preferences', 'format')) if field['type'] == 'number' + value = value.join(', ') if value.is_a?(Array) composer.formatted_text_box([{ text: TextUtils.maybe_rtl_reverse(value.to_s.presence || 'n/a') }], diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb index bc2ea682..061bf488 100644 --- a/lib/submissions/generate_result_attachments.rb +++ b/lib/submissions/generate_result_attachments.rb @@ -213,6 +213,8 @@ module Submissions value = TimeUtils.format_date_string(value, field.dig('preferences', 'format'), account.locale) end + value = NumberUtils.format_number(value, field.dig('preferences', 'format')) if field['type'] == 'number' + value = TextUtils.maybe_rtl_reverse(Array.wrap(value).join(', ')) text = HexaPDF::Layout::TextFragment.create(value, font: pdf.fonts.add(FONT_NAME),