fix(badges): wire badge_type_list from template instead of hardcoded ISHLT list

Replace static `badge_type_code_li` array (hardcoded ISHLT 2024 types) with
`$derived.by()` that parses `$lq__event_badge_template_obj.badge_type_list` JSON.
Each event's template defines its own badge type set — the component now reflects
that correctly. Falls back to `[]` on missing/invalid JSON (hides the type select).

Also add MODULE__AE_Events_Badge_Templates.md documenting template field reference,
external CSS approach, layout codes, duplex field plan, and standard template setup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-02 15:43:49 -05:00
parent 9939d94970
commit 827c7ac62e
2 changed files with 289 additions and 17 deletions

View File

@@ -65,22 +65,18 @@
// let ae_tmp: key_val = $state({});
let ae_triggers: key_val = $state({});
// ISHLT 2024 badge type codes
let badge_type_code_li = [
{ code: 'current_member', name: 'Member' },
{ code: 'inactive_member', name: 'Non-Member' },
{ code: 'current_member_trainee', name: 'Trainee Member' },
{ code: 'inactive_member_trainee', name: 'Trainee Non-Member' },
{ code: 'ex_all', name: 'Exhibitor All Access' },
{ code: 'ex_booth', name: 'Exhibitor Booth Staff' },
{ code: 'hftx', name: 'HFTX Master Academy' },
{ code: 'mcs', name: 'MCS Master Academy' },
{ code: 'pediatric', name: 'Pediatric' },
{ code: 'guest', name: 'Guest' },
{ code: 'staff', name: 'Staff' },
{ code: 'volunteer', name: 'Volunteer' },
{ code: 'test', name: 'Test' }
];
// Badge type list is derived from the template — each event/template defines its own set.
// Falls back to empty array if template not loaded or badge_type_list is invalid JSON.
let badge_type_code_li = $derived.by(() => {
const raw = $lq__event_badge_template_obj?.badge_type_list;
if (!raw) return [];
try {
return JSON.parse(raw);
} catch {
console.warn('badge_type_list is not valid JSON:', raw);
return [];
}
});
// *** Set initial variables
$effect(() => {
@@ -999,7 +995,7 @@ onkeypress={() => {
"
title={editable_badge_type_code}
>
{#if edit_mode_active && badge_type_code_li}
{#if edit_mode_active && badge_type_code_li.length > 0}
<label
>Badge Type:
<select