diff --git a/app/controllers/templates_form_preview_controller.rb b/app/controllers/templates_form_preview_controller.rb new file mode 100644 index 00000000..fb633560 --- /dev/null +++ b/app/controllers/templates_form_preview_controller.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class TemplatesFormPreviewController < ApplicationController + PRELOAD_ALL_PAGES_AMOUNT = 200 + + layout 'form' + + load_and_authorize_resource :template + + def show + @submitter = Submitter.new(uuid: params[:uuid] || @template.submitters.first['uuid'], + account: current_account, + submission: @template.submissions.new(template_submitters: @template.submitters, + account: current_account)) + + @submitter.submission.submitters = @template.submitters.map { |item| Submitter.new(uuid: item['uuid']) } + + ActiveRecord::Associations::Preloader.new( + records: [@submitter], + associations: [submission: [:template, { template_schema_documents: :blob }]] + ).call + + total_pages = + @submitter.submission.template_schema_documents.sum { |e| e.metadata.dig('pdf', 'number_of_pages').to_i } + + if total_pages < PRELOAD_ALL_PAGES_AMOUNT + ActiveRecord::Associations::Preloader.new( + records: @submitter.submission.template_schema_documents, + associations: [:blob, { preview_images_attachments: :blob }] + ).call + end + + @attachments_index = ActiveStorage::Attachment.where(record: @submitter.submission.submitters, name: :attachments) + .preload(:blob).index_by(&:uuid) + + @form_configs = Submitters::FormConfigs.call(@submitter) + end +end diff --git a/app/javascript/form.js b/app/javascript/form.js index 4d4d62a1..be9cc256 100644 --- a/app/javascript/form.js +++ b/app/javascript/form.js @@ -19,6 +19,9 @@ safeRegisterElement('submission-form', class extends HTMLElement { goToLast: this.dataset.goToLast === 'true', isDemo: this.dataset.isDemo === 'true', attribution: this.dataset.attribution !== 'false', + scrollPadding: this.dataset.scrollPadding || '-80px', + dryRun: this.dataset.dryRun === 'true', + expand: ['true', 'false'].includes(this.dataset.expand) ? this.dataset.expand === 'true' : null, withConfetti: this.dataset.withConfetti !== 'false', withDisclosure: this.dataset.withDisclosure === 'true', withTypedSignature: this.dataset.withTypedSignature !== 'false', diff --git a/app/javascript/submission_form/area.vue b/app/javascript/submission_form/area.vue index d15d3a29..3bd800ce 100644 --- a/app/javascript/submission_form/area.vue +++ b/app/javascript/submission_form/area.vue @@ -41,7 +41,8 @@