From 8e3caae849e1ad91eaf043ad64ddd377fdbfb6b0 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 23 Dec 2024 22:58:24 +0200 Subject: [PATCH] render headings --- lib/submissions/generate_preview_attachments.rb | 4 ++-- lib/submissions/generate_result_attachments.rb | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/submissions/generate_preview_attachments.rb b/lib/submissions/generate_preview_attachments.rb index f03f689f..742f96f4 100644 --- a/lib/submissions/generate_preview_attachments.rb +++ b/lib/submissions/generate_preview_attachments.rb @@ -26,9 +26,9 @@ module Submissions submission.submitters.where(completed_at: nil) end - submitters.preload(attachments_attachments: :blob).each do |s| + submitters.preload(attachments_attachments: :blob).each_with_index do |s, index| GenerateResultAttachments.fill_submitter_fields(s, submission.account, pdfs_index, - with_signature_id:, is_flatten:) + with_signature_id:, is_flatten:, with_headings: index.zero?) end template = submission.template diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb index 1c02c546..1686d7ec 100644 --- a/lib/submissions/generate_result_attachments.rb +++ b/lib/submissions/generate_result_attachments.rb @@ -147,15 +147,18 @@ module Submissions fill_submitter_fields(submitter, submitter.account, pdfs_index, with_signature_id:, is_flatten:) end - def fill_submitter_fields(submitter, account, pdfs_index, with_signature_id:, is_flatten:) + def fill_submitter_fields(submitter, account, pdfs_index, with_signature_id:, is_flatten:, with_headings: nil) cell_layouter = HexaPDF::Layout::TextLayouter.new(text_valign: :center, text_align: :center) attachments_data_cache = {} return pdfs_index if submitter.submission.template_fields.blank? + with_headings = find_last_submitter(submitter.submission, submitter:).blank? if with_headings.nil? + submitter.submission.template_fields.each do |field| - next if field['submitter_uuid'] != submitter.uuid + next if field['type'] == 'heading' && !with_headings + next if field['submitter_uuid'] != submitter.uuid && field['type'] != 'heading' field.fetch('areas', []).each do |area| pdf = pdfs_index[area['attachment_uuid']] @@ -188,6 +191,7 @@ module Submissions font = pdf.fonts.add(field.dig('preferences', 'font').presence || FONT_NAME) value = submitter.values[field['uuid']] + value = field['default_value'] if field['type'] == 'heading' text_align = field.dig('preferences', 'align').to_s.to_sym.presence || (value.to_s.match?(RTL_REGEXP) ? :right : :left)