diff --git a/src/lib/ae_events/badges/css/badge_layout_zebra_zc10l_pvc.css b/src/lib/ae_events/badges/css/badge_layout_zebra_zc10l_pvc.css index 895ec42a..58fd9454 100644 --- a/src/lib/ae_events/badges/css/badge_layout_zebra_zc10l_pvc.css +++ b/src/lib/ae_events/badges/css/badge_layout_zebra_zc10l_pvc.css @@ -17,6 +17,7 @@ /* --- Badge front --- */ [data-layout='badge_3.5x5.5_pvc'] .badge_front { + min-width: 3.5in; width: 3.5in; min-height: 5.5in; max-height: 5.5in; @@ -32,6 +33,7 @@ padding: 0; gap: 0; min-height: 0; + min-width: 3.5in; width: 3.5in; max-width: 3.5in; } diff --git a/src/routes/events/[event_id]/(badges)/badges/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/+page.svelte index f41a6671..5cd9cef5 100644 --- a/src/routes/events/[event_id]/(badges)/badges/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/+page.svelte @@ -29,8 +29,9 @@ import { events_func } from '$lib/ae_events/ae_events_functions'; import Comp_badge_search from './ae_comp__badge_search.svelte'; import Comp_badge_obj_li from './ae_comp__badge_obj_li.svelte'; import Comp_badge_create_form from './ae_comp__badge_create_form.svelte'; +import Comp_badge_upload_form from './ae_comp__badge_upload_form.svelte'; -import { LoaderCircle, UserPlus } from '@lucide/svelte'; +import { LoaderCircle, UserPlus, Printer, Upload, FileText, BarChart2 } from '@lucide/svelte'; // Load templates for this event so the create form can show the selector and // derive badge_type_code_li from whichever template the user picks. @@ -61,6 +62,7 @@ let lq__badge_template_li = $derived( let show_create_badge_modal: boolean = $state(false); let show_upload_badge_modal: boolean = $state(false); let create_badge_dialog: HTMLDialogElement | undefined = $state(); +let upload_badge_dialog: HTMLDialogElement | undefined = $state(); let event_badge_id_li: Array = $state([]); let search_debounce_timer: any = null; @@ -400,6 +402,45 @@ async function handle_search_refresh(params: any) { {/if} +{#if $ae_loc.trusted_access && (badges_loc.current.enable_upload_badge_li_btn ?? true)} +
+ +
+{/if} + +{#if $ae_loc.trusted_access && (badges_loc.current.enable_mass_print ?? true)} +
+ + Print Unprinted + + + Print All + + + Manage Templates + + + Badge Printing Stats + +
+{/if} + + + { + if (e.target === upload_badge_dialog) { + upload_badge_dialog?.close(); + show_upload_badge_modal = false; + } + }} + onclose={() => { + show_upload_badge_modal = false; + }}> +
+

Upload Badge List

+
+ {#if show_upload_badge_modal} + { + upload_badge_dialog?.close(); + show_upload_badge_modal = false; + badges_loc.current.search_version = (badges_loc.current.search_version ?? 0) + 1; + badges_loc.current.qry__remote_first = true; + }} + oncancel={() => { + upload_badge_dialog?.close(); + show_upload_badge_modal = false; + }} /> + {/if} +
+ {#if $events_sess?.badges?.search_status === 'loading' && event_badge_id_li.length === 0}
diff --git a/src/routes/events/[event_id]/(badges)/badges/[badge_id]/ae_comp__badge_obj_view.svelte b/src/routes/events/[event_id]/(badges)/badges/[badge_id]/ae_comp__badge_obj_view.svelte index fe216806..dadb5de2 100644 --- a/src/routes/events/[event_id]/(badges)/badges/[badge_id]/ae_comp__badge_obj_view.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/[badge_id]/ae_comp__badge_obj_view.svelte @@ -321,16 +321,30 @@ let fit_heights = $derived.by(() => { let base: Record; if (layout === 'badge_3.5x5.5_pvc') { // 3.5" × 5.5" PVC card — single-sided, compact + + // Modified for Axonius 2026 base = { grp_name_title: '1.6in', grp_name_title_flex: 'around', name: '1.4in', - title: '0.55in', - grp_aff_loc: '1.5in', - grp_aff_loc_flex: 'around', - affiliations: '0.75in', - location: '0.75in' + title: '0.4in', + grp_aff_loc: '.4in', + grp_aff_loc_flex: 'end', + affiliations: '0.4in', + location: '0.0in' }; + + // Looks pretty good if all the common fields are showing + // base = { + // grp_name_title: '1.6in', + // grp_name_title_flex: 'around', + // name: '1.4in', + // title: '0.55in', + // grp_aff_loc: '1.5in', + // grp_aff_loc_flex: 'around', + // affiliations: '0.75in', + // location: '0.75in' + // }; } else if (layout === 'badge_4x5_fanfold') { // 4" × 5" fanfold — slightly taller, duplex base = { @@ -576,6 +590,7 @@ const code_to_icon: { group relative m-0 flex max-h-[6.0in] min-h-[6.0in] + min-w-3.5 w-[4in] max-w-fit flex-col @@ -644,7 +659,9 @@ const code_to_icon: { flex-col items-center justify-end overflow-clip - p-0 px-1 + p-0 px-8 pb-1 + text-white + gap-0 ">
{#if display_name} {display_name.trim()} @@ -698,7 +717,7 @@ const code_to_icon: { max={38} manual_size={font_size_title ?? null} height={fit_heights.title} - class="professional_title leading-none italic hover:bg-pink-100/50"> + class="professional_title leading-none hover:bg-pink-100/50">
{@html display_title}
{/if} @@ -730,7 +749,7 @@ const code_to_icon: { max={40} manual_size={font_size_affiliations ?? null} height={fit_heights.affiliations} - class="affiliations leading-none hover:bg-pink-100/50"> + class="affiliations leading-none italic hover:bg-pink-100/50">
{@html display_affiliations}
{/if}