Skip to content

Ticket updates nov 2 - #214

Merged
Scott1UP merged 4 commits into
mainfrom
ticket-updates-nov-2
Nov 2, 2026
Merged

Scott1UP merged 4 commits into
mainfrom
ticket-updates-nov-2

Conversation

@Scott1UP

@Scott1UP Scott1UP commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

Ticket updates: Child (3-17) with Adult, Solo Youth copy, draw-to-sign pad

Store page

Child (3-17) with Adult — new card in the Applications section, between Youth and Child (Under 3). Title, description and the "Adults must hold their own Devcon ticket to enter" note mirror the Pretix product (item 109 on tickets.devcon.org, $19). Its Get ticket button is the same Pretix cart handoff the Under 3 card uses: the buyer lands on the shop with one in their basket. The item id lives in config/ticketing.ts per environment (null in dev, which falls back to the bare shop). A 'child-with-adult' sold-out switch sits alongside the others.

Youth card — the Pretix product was renamed to Solo Youth Ticket (16-17) 🌱 for 16-17 year olds attending alone, with under-16s accompanied by a parent/guardian. The card takes its title, description and check-in note from the product.

/tickets landing page untouched, same as the Under 3 card.

Youth ticket form: draw-to-sign pad

Attachment columns whose name mentions "signature" (the youth form's Parent/Guardian signature and Minor signature) render a canvas pad above the existing file picker, with an "or upload a file" divider. Finger, mouse, trackpad and pen all work through pointer events.

  • Strokes are kept in CSS px and redrawn on resize, so phone rotation keeps the drawing.
  • Each pen-up exports a PNG on a white background, debounced 700 ms, and uploads it through the existing upload-attachment proxy exactly like a picked file. Each new upload replaces the previous pad upload, so the column ends up with one signature file. It appears in the attachment list with a preview and can be removed there.
  • Clear wipes the pad and its upload; removing the pad's file from the list wipes the pad.
  • A small before-submit hook in FormPage awaits any pending upload before handleSubmit runs. react-hook-form clones the values before validators run, so an upload started during validation would never reach onSubmit. A failed upload shows the field error and stops the submit.
  • Strict mode fix: the pad's effect cleanup now resets its animation-frame handle, otherwise the re-run effect never painted.

Verified end to end on a local dev server: a youth submission with a drawn parent/guardian signature created a NocoDB record with the PNG attached.

The Pretix product (item 7 on tickets.devcon.org) is now "Solo Youth
Ticket (16-17) 🌱" for 16-17 year olds attending alone, with under-16s
accompanied by a parent/guardian; the store's Applications card takes
the name, description and check-in note from it. /tickets is untouched.
Adds the paid Pretix product (item 109 on tickets.devcon.org, $19) to the
store's Applications section between Youth Ticket and Child (Under 3),
with the product's own description. Its 'Get ticket' button is the same
Pretix cart handoff as the Under 3 card; the item id lives in
config/ticketing.ts per environment (null in dev, which falls back to the
bare shop). /tickets is untouched.
Attachment columns whose name mentions "signature" (the youth ticket
form's Parent/Guardian and Minor signatures) render a canvas pad above
the existing file picker, so the signer can draw with a finger, mouse,
trackpad or pen instead of uploading a scan. Strokes are kept in CSS px
and redrawn on resize; each pen-up exports a PNG on a white background,
debounced 700ms and uploaded through the same upload-attachment proxy as
a picked file, replacing the previous pad upload so the column ends up
with one signature file. The upload is awaited before react-hook-form
snapshots the values (a new before-submit hook in FormPage), because a
setValue during validation never reaches onSubmit. Clear wipes the pad
and its upload; removing the pad's file from the list wipes the pad.
The mount effect's cleanup cancelled the queued animation frame but left
its handle set, so when strict mode re-ran the effect every later
scheduleRedraw() bailed out as if a frame were pending and the canvas
never painted — the export still worked since it draws offscreen. The
cleanup now clears the handle too.
@netlify

netlify Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for devcon-monorepo ready!

Name Link
🔨 Latest commit d0acbe1
🔍 Latest deploy log https://app.netlify.com/projects/devcon-monorepo/deploys/6ae8c7205ccaaf3e04107d41
😎 Deploy Preview https://deploy-preview-214--devcon-monorepo.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@netlify

This comment has been minimized.

@Scott1UP
Scott1UP merged commit e781544 into main Nov 2, 2026
32 checks passed
@Scott1UP
Scott1UP deleted the ticket-updates-nov-2 branch November 2, 2026 17:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant