feat(badges): show print status strip for trusted staff on printed badges
Adds a compact print info row below each printed badge for trusted users (not in edit mode — debug row already covers that): Printed 2× · First: June 9 9:14 AM · Last: June 9 11:32 AM Gives staff quick at-a-glance confirmation that a badge was printed and when, without needing to enter edit mode. Also fixes a logic bug in the attendee "Checked in" card: the "last print" line was comparing == (same datetime) instead of !== (different datetime), so it only appeared when first = last (single print) — backwards. Fixed to show only when multiple prints have occurred. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -228,13 +228,17 @@ let visible_badge_obj_li = $derived(
|
|||||||
<Check size="1.1em" class="text-success-600 dark:text-success-400 shrink-0" />
|
<Check size="1.1em" class="text-success-600 dark:text-success-400 shrink-0" />
|
||||||
<div class="flex flex-col min-w-0">
|
<div class="flex flex-col min-w-0">
|
||||||
<span class="truncate font-semibold">{display_name}</span>
|
<span class="truncate font-semibold">{display_name}</span>
|
||||||
<span class="text-xs text-success-700 dark:text-success-300 opacity-80">
|
<span class="text-sm text-success-700 dark:text-success-300 opacity-80">
|
||||||
Checked in · {print_count}×
|
Checked in · {print_count}×
|
||||||
{#if event_badge_obj.print_first_datetime}
|
{#if event_badge_obj.print_first_datetime}
|
||||||
· First: {ae_util.iso_datetime_formatter(event_badge_obj.print_first_datetime, 'datetime_iso_12_no_seconds')}
|
·
|
||||||
|
{ae_util.iso_datetime_formatter(event_badge_obj.print_first_datetime, 'date_full_no_year')}
|
||||||
|
{ae_util.iso_datetime_formatter(event_badge_obj.print_first_datetime, 'time_12_long')}
|
||||||
{/if}
|
{/if}
|
||||||
{#if event_badge_obj.print_last_datetime}
|
{#if event_badge_obj.print_last_datetime && event_badge_obj.print_last_datetime !== event_badge_obj.print_first_datetime}
|
||||||
· Last: {ae_util.iso_datetime_formatter(event_badge_obj.print_last_datetime, 'datetime_iso_12_no_seconds')}
|
· last print:
|
||||||
|
{ae_util.iso_datetime_formatter(event_badge_obj.print_last_datetime, 'date_full_no_year')}
|
||||||
|
{ae_util.iso_datetime_formatter(event_badge_obj.print_last_datetime, 'time_12_long')}
|
||||||
{/if}
|
{/if}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -359,6 +363,22 @@ let visible_badge_obj_li = $derived(
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Print status strip — Trusted staff, not in Edit Mode (debug row covers it there) -->
|
||||||
|
{#if is_trusted && is_printed && !is_edit_mode}
|
||||||
|
<div class="flex flex-row flex-wrap items-center gap-x-1.5 gap-y-0.5 px-2 text-xs text-success-700 dark:text-success-300 opacity-70">
|
||||||
|
<Check size="0.85em" class="shrink-0" />
|
||||||
|
<span>Printed {print_count}×</span>
|
||||||
|
{#if event_badge_obj.print_first_datetime}
|
||||||
|
<span class="opacity-50">·</span>
|
||||||
|
<span>First: {ae_util.iso_datetime_formatter(event_badge_obj.print_first_datetime, 'date_full_no_year')} {ae_util.iso_datetime_formatter(event_badge_obj.print_first_datetime, 'time_12_long')}</span>
|
||||||
|
{/if}
|
||||||
|
{#if event_badge_obj.print_last_datetime && event_badge_obj.print_last_datetime !== event_badge_obj.print_first_datetime}
|
||||||
|
<span class="opacity-50">·</span>
|
||||||
|
<span>Last: {ae_util.iso_datetime_formatter(event_badge_obj.print_last_datetime, 'date_full_no_year')} {ae_util.iso_datetime_formatter(event_badge_obj.print_last_datetime, 'time_12_long')}</span>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<!-- Debug/metadata row — Edit Mode staff only -->
|
<!-- Debug/metadata row — Edit Mode staff only -->
|
||||||
{#if is_edit_mode && is_trusted}
|
{#if is_edit_mode && is_trusted}
|
||||||
<div
|
<div
|
||||||
|
|||||||
Reference in New Issue
Block a user