pres_mgmt: migrate to typed PersistedState store, canonical config schema

Replaces untyped $events_loc.pres_mgmt (svelte-persisted-store) with a
dedicated pres_mgmt_loc (runed PersistedState) backed by a fully typed
PresMgmtLocState interface and PressMgmtRemoteCfg for the server-side JSON.

Key changes:
- ae_events_stores__pres_mgmt_defaults.ts: canonical interfaces + defaults
  covering all hide__/show__ fields, labels, report prefs, query filters,
  and lock_config sync fields; qry_enabled uses 'not_enabled' (matches API)
- ae_events_stores__pres_mgmt.svelte.ts: new PersistedState store
- ae_events__event.ts: sync_config__event_pres_mgmt() rewired to write
  directly to pres_mgmt_loc.current; launcher link inversion preserved
- All 26+ pres_mgmt templates migrated from $events_loc.pres_mgmt.* to
  pres_mgmt_loc.current.*
- New config UI at (pres_mgmt)/pres_mgmt/config/ — manager + edit mode only
- Event settings page: removed embedded pres_mgmt form, links to config page
- event_page_menu: Config button visible only when manager_access + edit_mode

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-04-02 15:27:12 -04:00
parent 21f0fe69af
commit fd9e5f6dc0
31 changed files with 1426 additions and 661 deletions

View File

@@ -64,6 +64,7 @@ import {
events_sess,
events_slct
} from '$lib/stores/ae_events_stores';
import { pres_mgmt_loc } from '$lib/stores/ae_events_stores__pres_mgmt.svelte';
let show_details_kv: Record<string, boolean> = $state({});
@@ -163,9 +164,9 @@ function toggle_details(id: string) {
<span class="flex-1">{session_obj?.name}</span>
{#if (!$events_loc.pres_mgmt.hide__session_code && session_obj?.code) || session_obj?.file_count_all}
{#if (!pres_mgmt_loc.current.hide__session_code && session_obj?.code) || session_obj?.file_count_all}
<div class="flex flex-col items-end gap-0.5">
{#if !$events_loc.pres_mgmt.hide__session_code && session_obj?.code}
{#if !pres_mgmt_loc.current.hide__session_code && session_obj?.code}
<span class="border-surface-300-700 text-surface-700-300 bg-surface-200-800 rounded border px-1.5 py-0.5 font-mono text-xs select-all hover:bg-surface-100-900">
<Barcode size="1em" class="text-surface-600-400" />
{session_obj.code}