adding checkbox for me (fill now)

pull/150/merge^2
iozeey 2 years ago
parent 135b0206c2
commit 8956467814

@ -75,6 +75,26 @@
> >
</div> </div>
<!-- show my_check prefill -->
<div
v-else-if="field.type === 'my_check'"
class="flex absolute items-center h-full w-full justify-center"
:style="{ ...computedStyle, backgroundColor: 'transparent' }"
:class="{'cursor-default ': !submittable}"
>
<span
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; font-size: 1.4rem"
class="w-full h-full"
>
<component
:is="fieldIcons[field.type]"
width="100%"
height="100%"
class="h-full"
/>
</span>
</div>
<div <div
v-else v-else
class="flex absolute lg:text-base" class="flex absolute lg:text-base"
@ -322,7 +342,8 @@ export default {
my_text: 'Text', my_text: 'Text',
my_signature: 'My Signature', my_signature: 'My Signature',
my_initials: 'My Initials', my_initials: 'My Initials',
my_date: 'Date' my_date: 'Date',
my_check: 'Check'
} }
}, },
fieldIcons () { fieldIcons () {
@ -339,7 +360,8 @@ export default {
cells: IconColumns3, cells: IconColumns3,
multiple: IconChecks, multiple: IconChecks,
phone: IconPhoneCheck, phone: IconPhoneCheck,
redact: IconBarrierBlock redact: IconBarrierBlock,
my_check: IconCheck
} }
}, },
image () { image () {

@ -66,7 +66,7 @@
@focus="$refs.areas.scrollIntoField(currentField)" @focus="$refs.areas.scrollIntoField(currentField)"
/> />
</div> </div>
<div v-if="['my_text', 'my_signature', 'my_initials', 'my_date'].includes(currentField.type)"> <div v-if="['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(currentField.type)">
<!-- do nothing on this side just chill for now --> <!-- do nothing on this side just chill for now -->
</div> </div>
<DateStep <DateStep
@ -692,7 +692,7 @@ export default {
stepPromise().then(async () => { stepPromise().then(async () => {
const emptyRequiredField = this.stepFields.find((fields, index) => { const emptyRequiredField = this.stepFields.find((fields, index) => {
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(fields[0].type)) { if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(fields[0].type)) {
fields[0].required = 'false' fields[0].required = 'false'
return false return false
} else { } else {

@ -40,7 +40,7 @@
@pointerdown.stop @pointerdown.stop
> >
<FieldSubmitter <FieldSubmitter
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)" v-if="!['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
v-model="field.submitter_uuid" v-model="field.submitter_uuid"
class="border-r" class="border-r"
:compact="true" :compact="true"
@ -51,7 +51,7 @@
@click="selectedAreaRef.value = area" @click="selectedAreaRef.value = area"
/> />
<FieldType <FieldType
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)" v-if="!['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
v-model="field.type" v-model="field.type"
:button-width="27" :button-width="27"
:editable="editable" :editable="editable"
@ -71,7 +71,7 @@
@blur="onNameBlur" @blur="onNameBlur"
>{{ optionIndexText }} {{ field.name || defaultName }}</span> >{{ optionIndexText }} {{ field.name || defaultName }}</span>
<div <div
v-if="isNameFocus && !['checkbox', 'phone', 'redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)" v-if="isNameFocus && !['checkbox', 'phone', 'redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
class="flex items-center ml-1.5" class="flex items-center ml-1.5"
> >
<input <input
@ -171,6 +171,26 @@
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; background-color: transparent;" style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; background-color: transparent;"
> >
</div> </div>
<!-- show my_check prefill -->
<div
v-else-if="field.type === 'my_check'"
class="flex items-center h-full w-full justify-center"
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; background-color: transparent;"
:class="{'cursor-default ': !submittable}"
>
<span
style="border-width: 2px; --tw-bg-opacity: 1; --tw-border-opacity: 0.2; font-size: 1.4rem"
class="w-full h-full"
>
<component
:is="fieldIcons[field.type]"
width="100%"
height="100%"
class="h-full"
/>
</span>
</div>
<div <div
v-else v-else
class="flex items-center h-full w-full" class="flex items-center h-full w-full"

@ -452,7 +452,7 @@ export default {
submitter_uuid: this.selectedSubmitter.uuid, submitter_uuid: this.selectedSubmitter.uuid,
type type
} }
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)) { if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)) {
field.required = false field.required = false
} }
if (['select', 'multiple', 'radio'].includes(type)) { if (['select', 'multiple', 'radio'].includes(type)) {
@ -612,7 +612,7 @@ export default {
submitter_uuid: this.selectedSubmitter.uuid, submitter_uuid: this.selectedSubmitter.uuid,
areas: [area] areas: [area]
} }
if (['redact', 'my_text', 'my_signature', 'my_initials'].includes(field.type)) { if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)) {
field.required = false field.required = false
} }
this.template.fields.push(field) this.template.fields.push(field)
@ -632,7 +632,7 @@ export default {
...this.dragField ...this.dragField
} }
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)) { if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)) {
field.required = false field.required = false
} }
if (['select', 'multiple', 'radio'].includes(field.type)) { if (['select', 'multiple', 'radio'].includes(field.type)) {
@ -655,7 +655,7 @@ export default {
} else if (previousField?.areas?.length) { } else if (previousField?.areas?.length) {
baseArea = previousField.areas[previousField.areas.length - 1] baseArea = previousField.areas[previousField.areas.length - 1]
} else { } else {
if (['checkbox'].includes(field.type)) { if (['checkbox', 'my_check'].includes(field.type)) {
baseArea = { baseArea = {
w: area.maskW / 30 / area.maskW, w: area.maskW / 30 / area.maskW,
h: area.maskW / 30 / area.maskW * (area.maskW / area.maskH) h: area.maskW / 30 / area.maskW * (area.maskW / area.maskH)

@ -31,7 +31,7 @@
/> />
</div> </div>
<div <div
v-if="isNameFocus && !['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(field.type)" v-if="isNameFocus && !['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)"
class="flex items-center relative" class="flex items-center relative"
> >
<template v-if="field.type != 'phone'"> <template v-if="field.type != 'phone'">
@ -164,7 +164,7 @@
Draw New Area Draw New Area
</a> </a>
</li> </li>
<li v-if="field.areas?.length === 1 && ['date', 'signature', 'initials', 'text', 'cells', 'my_text', 'redact', 'my_signature', 'my_initials', 'my_date'].includes(field.type)"> <li v-if="field.areas?.length === 1 && ['date', 'signature', 'initials', 'text', 'cells', 'my_text', 'redact', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(field.type)">
<a <a
href="#" href="#"
class="text-sm py-1 px-2" class="text-sm py-1 px-2"

@ -46,7 +46,7 @@
</template> </template>
<script> <script>
import { IconTextSize, IconWritingSign, IconCalendarEvent, IconPhoto, IconCheckbox, IconPaperclip, IconSelect, IconCircleDot, IconChecks, IconColumns3, IconPhoneCheck, IconBarrierBlock, IconLetterCaseUpper, IconTextResize } from '@tabler/icons-vue' import { IconTextSize, IconWritingSign, IconCalendarEvent, IconPhoto, IconCheckbox, IconPaperclip, IconSelect, IconCircleDot, IconChecks, IconColumns3, IconPhoneCheck, IconBarrierBlock, IconLetterCaseUpper, IconTextResize, IconCheck } from '@tabler/icons-vue'
export default { export default {
name: 'FiledTypeDropdown', name: 'FiledTypeDropdown',
inject: ['withPhone'], inject: ['withPhone'],
@ -96,7 +96,8 @@ export default {
my_text: 'Text', my_text: 'Text',
my_signature: 'My Signature', my_signature: 'My Signature',
my_initials: 'My Initials', my_initials: 'My Initials',
my_date: 'Date' my_date: 'Date',
my_check: 'check'
} }
}, },
fieldIcons () { fieldIcons () {
@ -117,7 +118,8 @@ export default {
my_text: IconTextResize, my_text: IconTextResize,
my_signature: IconWritingSign, my_signature: IconWritingSign,
my_initials: IconLetterCaseUpper, my_initials: IconLetterCaseUpper,
my_date: IconCalendarEvent my_date: IconCalendarEvent,
my_check: IconCheck
} }
} }
}, },

@ -72,7 +72,7 @@
:key="type" :key="type"
> >
<div <div
v-if="!['my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)" v-if="!['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)"
> >
<button <button
v-if="withPhone || type != 'phone'" v-if="withPhone || type != 'phone'"
@ -131,7 +131,7 @@
:key="type" :key="type"
> >
<div <div
v-if="['my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)" v-if="['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)"
> >
<button <button
draggable="true" draggable="true"
@ -303,7 +303,7 @@ export default {
submitter_uuid: this.selectedSubmitter.uuid, submitter_uuid: this.selectedSubmitter.uuid,
type type
} }
if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date'].includes(type)) { if (['redact', 'my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].includes(type)) {
field.required = false field.required = false
} }
if (['select', 'multiple', 'radio'].includes(type)) { if (['select', 'multiple', 'radio'].includes(type)) {

@ -10,7 +10,7 @@
</a> </a>
<% end %> <% end %>
</div> </div>
<% elsif field['type'] == 'checkbox' %> <% elsif field['type'].in?(%w[checkbox my_check]) %>
<div class="w-full flex items-center justify-center"> <div class="w-full flex items-center justify-center">
<%= svg_icon('check', class: "aspect-square #{area['w'] > area['h'] ? '!w-auto !h-full' : '!w-full !h-auto'}") %> <%= svg_icon('check', class: "aspect-square #{area['w'] > area['h'] ? '!w-auto !h-full' : '!w-full !h-auto'}") %>
</div> </div>
@ -31,10 +31,7 @@
<% end %> <% end %>
</div> </div>
<% elsif field['type'] == 'date' %> <% elsif field['type'] == 'date' %>
<div class="flex items-center px-0.5"> <% elsif ['data', 'my_date'].include?(field['type']) %>
<%= l(Date.parse(value), format: :long, locale: local_assigns[:locale]) %>
</div>
<% elsif field['type'] == 'my_date' %>
<div class="flex items-center px-0.5"> <div class="flex items-center px-0.5">
<%= l(Date.parse(value), format: :long, locale: local_assigns[:locale]) %> <%= l(Date.parse(value), format: :long, locale: local_assigns[:locale]) %>
</div> </div>

@ -59,8 +59,9 @@
<%= render 'submissions/annotation', annot: %> <%= render 'submissions/annotation', annot: %>
<% end %> <% end %>
<% fields_index.dig(document.uuid, index)&.each do |(area, field)| %> <% fields_index.dig(document.uuid, index)&.each do |(area, field)| %>
<% if ['my_text', 'my_signature', 'my_initials', 'my_date'].include?(field['type']) %> <% if ['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].include?(field['type']) %>
<% value = @submission.template.values[field['uuid']] %> <% value = @submission.template.values[field['uuid']] %>
<% value = 'my_check' if ['my_check'].include?(field['type']) %>
<% else %> <% else %>
<% value = values[field['uuid']] %> <% value = values[field['uuid']] %>
<% end %> <% end %>

@ -1,5 +1,5 @@
<% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid], methods: %i[url filename content_type]) %> <% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid], methods: %i[url filename content_type]) %>
<% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| ['my_text', 'my_signature', 'my_initials', 'my_data'].include?(f['type']) || f['submitter_uuid'] == submitter.uuid }.to_json %> <% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| ['my_text', 'my_signature', 'my_initials', 'my_data', 'my_check'].include?(f['type']) || f['submitter_uuid'] == submitter.uuid }.to_json %>
<% completed_button_params = submitter.submission.template.account.account_configs.find_by(key: AccountConfig::FORM_COMPLETED_BUTTON_KEY)&.value || {} %> <% completed_button_params = submitter.submission.template.account.account_configs.find_by(key: AccountConfig::FORM_COMPLETED_BUTTON_KEY)&.value || {} %>
<% templateValues = submitter.submission.template.values %> <% templateValues = submitter.submission.template.values %>
<% template_attachments = ActiveStorage::Attachment.where(record: submitter.submission.template, name: :attachments).preload(:blob).index_by(&:uuid) %> <% template_attachments = ActiveStorage::Attachment.where(record: submitter.submission.template, name: :attachments).preload(:blob).index_by(&:uuid) %>

@ -33,7 +33,7 @@ module Submissions
pdfs_index = build_pdfs_index(submitter) pdfs_index = build_pdfs_index(submitter)
submitter.submission.template_fields.each do |field| submitter.submission.template_fields.each do |field|
unless ['my_text', 'my_signature', 'my_initials', 'my_date'].include?(field['type']) unless ['my_text', 'my_signature', 'my_initials', 'my_date', 'my_check'].include?(field['type'])
next if field['submitter_uuid'] != submitter.uuid next if field['submitter_uuid'] != submitter.uuid
end end
field.fetch('areas', []).each do |area| field.fetch('areas', []).each do |area|
@ -146,7 +146,8 @@ module Submissions
layouter.fit(items, area['w'] * width, height_diff.positive? ? box_height : area['h'] * height) layouter.fit(items, area['w'] * width, height_diff.positive? ? box_height : area['h'] * height)
.draw(canvas, (area['x'] * width) + TEXT_LEFT_MARGIN, .draw(canvas, (area['x'] * width) + TEXT_LEFT_MARGIN,
height - (area['y'] * height) + height_diff - TEXT_TOP_MARGIN) height - (area['y'] * height) + height_diff - TEXT_TOP_MARGIN)
when ->(type) { type == 'checkbox' || (type.in?(%w[multiple radio]) && area['option_uuid'].present?) } when ->(type) { type == 'checkbox' || type == 'my_check' || (type.in?(%w[multiple radio]) && area['option_uuid'].present?) }
value=true if field['type'] == 'my_check'
if field['type'].in?(%w[multiple radio]) if field['type'].in?(%w[multiple radio])
option = field['options']&.find { |o| o['uuid'] == area['option_uuid'] } option = field['options']&.find { |o| o['uuid'] == area['option_uuid'] }

Loading…
Cancel
Save