fix pdf generation
This commit is contained in:
@@ -5,7 +5,7 @@ module Api
|
||||
skip_before_action :authenticate_user!
|
||||
|
||||
def create
|
||||
submitter = Submitter.find_by!(slug: params[:submitter_slug]) unless current_account
|
||||
submitter = Submitter.find_by!(slug: params[:submitter_slug])
|
||||
|
||||
blob = ActiveStorage::Blob.find_signed(params[:blob_signed_id])
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@ class SubmissionsController < ApplicationController
|
||||
submissions_params[:submission].to_h.map do |_, attrs|
|
||||
submission = @template.submissions.new
|
||||
|
||||
attrs[:submitters].each do |_, submitter_attrs|
|
||||
attrs[:submitters].each do |submitter_attrs|
|
||||
submission.submitters.new(**submitter_attrs, sent_at: params[:send_email] == '1' ? Time.current : nil)
|
||||
end
|
||||
|
||||
@@ -69,7 +69,7 @@ class SubmissionsController < ApplicationController
|
||||
end
|
||||
|
||||
def submissions_params
|
||||
params.permit(submission: { submitters: %i[uuid email] })
|
||||
params.permit(submission: { submitters: [%i[uuid email]] })
|
||||
end
|
||||
|
||||
def load_template
|
||||
|
||||
@@ -12,10 +12,10 @@ class SubmissionsDebugController < ApplicationController
|
||||
|
||||
respond_to do |f|
|
||||
f.html do
|
||||
render 'submit_template/show'
|
||||
render 'submit_form/show'
|
||||
end
|
||||
f.pdf do
|
||||
Submissions::GenerateResultAttachments.call(@submitter.submission)
|
||||
Submissions::GenerateResultAttachments.call(@submitter)
|
||||
|
||||
send_data ActiveStorage::Attachment.where(name: :documents).last.download,
|
||||
filename: 'debug.pdf',
|
||||
|
||||
@@ -4,7 +4,7 @@ import { targets, targetable } from '@github/catalyst/lib/targetable'
|
||||
export default actionable(targetable(class extends HTMLElement {
|
||||
static [targets.static] = ['items']
|
||||
|
||||
addItem = (e) => {
|
||||
addItem (e) {
|
||||
e.preventDefault()
|
||||
|
||||
const originalItem = this.items[0]
|
||||
@@ -26,8 +26,9 @@ export default actionable(targetable(class extends HTMLElement {
|
||||
originalItem.parentNode.append(duplicateItem)
|
||||
}
|
||||
|
||||
removeItem = (e) => {
|
||||
removeItem (e) {
|
||||
e.preventDefault()
|
||||
|
||||
this.items.find((item) => item.contains(e.target))?.remove()
|
||||
}
|
||||
}))
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
>
|
||||
<div
|
||||
v-else-if="field.type === 'file'"
|
||||
class="px-0.5 flex items-center"
|
||||
class="px-0.5 flex flex-col justify-center"
|
||||
>
|
||||
<a
|
||||
v-for="(attachment, index) in attachments"
|
||||
@@ -73,9 +73,8 @@
|
||||
:checked="!!modelValue"
|
||||
@click="$emit('update:model-value', !modelValue)"
|
||||
>
|
||||
<component
|
||||
:is="modelValue ? 'IconCheckbox' : 'IconSquare'"
|
||||
v-else
|
||||
<IconCheck
|
||||
v-else-if="modelValue"
|
||||
class="aspect-square"
|
||||
:class="{ '!w-auto !h-full': area.w > area.h, '!w-full !h-auto': area.w <= area.h }"
|
||||
/>
|
||||
@@ -98,14 +97,13 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { IconTextSize, IconWriting, IconCalendarEvent, IconPhoto, IconCheckbox, IconPaperclip, IconSelect, IconCircleDot, IconChecks, IconSquare } from '@tabler/icons-vue'
|
||||
import { IconTextSize, IconWriting, IconCalendarEvent, IconPhoto, IconCheckbox, IconPaperclip, IconSelect, IconCircleDot, IconChecks, IconCheck } from '@tabler/icons-vue'
|
||||
|
||||
export default {
|
||||
name: 'FieldArea',
|
||||
components: {
|
||||
IconPaperclip,
|
||||
IconCheckbox,
|
||||
IconSquare
|
||||
IconCheck
|
||||
},
|
||||
props: {
|
||||
field: {
|
||||
|
||||
@@ -91,13 +91,12 @@ export default {
|
||||
|
||||
fetch(`/submitters/${this.submitterSlug}/download`).then((response) => response.json()).then((urls) => {
|
||||
urls.forEach((url) => {
|
||||
fetch(url).then(async (response) => {
|
||||
const blob = new Blob([await response.text()], { type: `${response.headers.get('content-type')};charset=utf-8;` })
|
||||
const url = URL.createObjectURL(blob)
|
||||
fetch(url).then(async (resp) => {
|
||||
const blobUrl = URL.createObjectURL(await resp.blob())
|
||||
const link = document.createElement('a')
|
||||
|
||||
link.href = url
|
||||
link.setAttribute('download', response.headers.get('content-disposition').split('"')[1])
|
||||
link.href = blobUrl
|
||||
link.setAttribute('download', resp.headers.get('content-disposition').split('"')[1])
|
||||
|
||||
link.click()
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid md:grid-cols-2 gap-4">
|
||||
<% @template.submitters.each.with_index(1) do |item, index| %>
|
||||
<% @template.submitters.each do |item| %>
|
||||
<div class="form-control">
|
||||
<label class="label">
|
||||
<span class="label-text"> <%= item['name'] %></span>
|
||||
</label>
|
||||
<input type="hidden" name="submission[1][submitters][<%= index %>][uuid]" value="<%= item['uuid'] %>" >
|
||||
<input type="email" name="submission[1][submitters][<%= index %>][email]" value="<%= item['email'] %>" class="input input-sm input-bordered" placeholder="Email" required>
|
||||
<input type="hidden" name="submission[1][submitters][][uuid]" value="<%= item['uuid'] %>" >
|
||||
<input type="email" name="submission[1][submitters][][email]" value="<%= item['email'] %>" class="input input-sm input-bordered" placeholder="Email" required>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user