From 76c28a7e222234aa80037e90697739c03131999e Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Thu, 9 Apr 2026 14:31:29 -0400 Subject: [PATCH] Updated to do list. Cleaned up the badge search area at the top of the badge. Also tested the upload option --- aether_app_sveltekit.code-workspace | 1 + documentation/TODO__Agents.md | 9 +-- .../[event_id]/(badges)/badges/+page.svelte | 68 ++++++++++--------- .../badges/ae_comp__badge_search.svelte | 4 +- .../badges/ae_comp__badge_upload_form.svelte | 21 +++--- 5 files changed, 53 insertions(+), 50 deletions(-) diff --git a/aether_app_sveltekit.code-workspace b/aether_app_sveltekit.code-workspace index 38d3fdd7..c9f40860 100644 --- a/aether_app_sveltekit.code-workspace +++ b/aether_app_sveltekit.code-workspace @@ -7,6 +7,7 @@ "settings": { "cSpell.words": [ "autofetch", + "Axonius", "displayplacer", "filelist", "gsettings", diff --git a/documentation/TODO__Agents.md b/documentation/TODO__Agents.md index 01a04fab..5a0b3e6f 100644 --- a/documentation/TODO__Agents.md +++ b/documentation/TODO__Agents.md @@ -56,10 +56,8 @@ When navigating from the Presenter View to the Launcher, the frontend has to do session lookup to discover the location (magic redirect in launcher base `+page.svelte`). Joining `event_session.event_location_id` into the presenter view/response would let the frontend pass the location directly in the Launcher URL without the extra lookup. -- Backend: add `event_location_id` (and `event_location_id_random`) to the `event_presenter` - view or API response -- Frontend: add `event_location_id` to `ae_EventPresenter` type and `properties_to_save`; - pass as `events__launcher_id` in `presenter_page_menu.svelte` +- [x] Backend: added `event_location_id` (and `event_location_id_random`) to the `event_presenter` view or API response (2026-04-09) +- [x] Frontend: updated `ae_EventPresenter` type and `properties_to_save`; now pass as `events__launcher_id` in `presenter_page_menu.svelte` (2026-04-09) @@ -180,8 +178,7 @@ Full audit: `src/routes/events/[event_id]/(leads)/` and `src/lib/ae_events/ae_ev 3 states: paid confirmation (priority=true), admin setup hint / "contact organizer" (no Stripe config), payment form. `client_reference_id=exhibit_id`. TypeScript declaration in `app.d.ts`. Stripe keys verified visible in `$ae_loc.site_cfg_json` on dev/demo site. Keys need validity check in Stripe dashboard. -- [ ] **End-to-end smoke test** — sign in with shared passcode, scan/search a badge, add a lead, - view detail, add notes/responses, export CSV; verify on mobile (Chrome/Safari PWA) +- [x] **End-to-end smoke test (canceled by client)** — sign in with shared passcode, scan/search a badge, add a lead, view detail, add notes/responses, export CSV; canceled 2026-04-09. - [x] **Install prompt** — PWA install nudge implemented (2026-03-16). `pwa_install.svelte.ts` singleton captures `beforeinstallprompt` (Chrome/Android/desktop) and detects iOS Safari for manual "Share → Add to Home Screen" instructions. Reusable `element_pwa_install_prompt.svelte` diff --git a/src/routes/events/[event_id]/(badges)/badges/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/+page.svelte index 0d726f13..e1ff731c 100644 --- a/src/routes/events/[event_id]/(badges)/badges/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/+page.svelte @@ -429,62 +429,64 @@ async function handle_search_refresh(params: any) { > {#if $ae_loc.trusted_access && $ae_loc.edit_mode} -
+
{#if badges_loc.current.enable_add_badge_btn ?? true} - - {/if} {#if badges_loc.current.enable_upload_badge_li_btn ?? true} - - {/if}
+ + {#if badges_loc.current.enable_mass_print ?? true} + + {/if} {/if} -{#if $ae_loc.trusted_access && (badges_loc.current.enable_mass_print ?? true)} - -{/if} + diff --git a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte index bb1002b9..d9df77f3 100644 --- a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_search.svelte @@ -169,7 +169,7 @@ function handle_qr_scan_result(event: { $events_sess.badges.show_form__scan = true; $events_sess.badges.qr_scan_start = true; }} - class="btn btn-sm preset-tonal-primary border-primary-500 border"> + class="btn btn-sm preset-tonal-warning border-warning-500 border"> QR Scan @@ -181,7 +181,7 @@ function handle_qr_scan_result(event: { onclick={() => document.getElementById('badge_fulltext_search_qry_str')?.focus()} aria-label="Start here — focus search field" data-testid="badge-start-btn" - class="btn btn-sm preset-filled-secondary-300-700" + class="btn btn-sm preset-filled-secondary-300-700 font-semibold" class:opacity-30={!!badges_loc.current.fulltext_search_qry_str} > diff --git a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_upload_form.svelte b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_upload_form.svelte index b08c02bb..53512290 100644 --- a/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_upload_form.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/ae_comp__badge_upload_form.svelte @@ -3,7 +3,7 @@ import { Loader2 } from '@lucide/svelte'; import type { key_val } from '$lib/stores/ae_stores'; import { events_func } from '$lib/ae_events/ae_events_functions'; -import { ae_api } from '$lib/stores/ae_stores'; +import { ae_api, ae_loc } from '$lib/stores/ae_stores'; import { api } from '$lib/api/api'; interface Props { @@ -23,7 +23,7 @@ let upload_status: string = $state('idle'); // idle, loading, processing, succes let upload_message: string = $state(''); let processed_badges_count: number = $state(0); let total_badges_in_file: number = $state(0); -let upload_mode: 'client_csv' | 'axonius_zoom' = $state('client_csv'); +let upload_mode: 'client_csv' | 'axonius_zoom' = $state('axonius_zoom'); let begin_at: number | null = $state(null); let end_at: number | null = $state(null); let return_detail: boolean = $state(false); @@ -194,11 +194,11 @@ function handle_cancel() {

Upload Badge List (CSV)

-

+ + +

+ Upload the standard Axonius Zoom event tickets CSV export file here. This will trigger server-side processing to import the new and changed badges. This can take a few seconds to a few minutes.

Upload format
-
- {#if upload_mode === 'axonius_zoom'} + {#if $ae_loc.administrator_access && upload_mode === 'axonius_zoom'}