refactor(events, idaa): standardize on String-only IDs and remove '_random' suffix

Aligned the Events Badges, Templates, and IDAA Bulletin Board modules with
Aether UI/UX v3 standards by prioritizing semantic String IDs (e.g., event_id,
badge_id) over legacy '_random' variants in API helpers, Dexie processors,
and UI components.

- Refactored badge and template loaders to use clean ID field names.
- Updated search and LiveQuery logic in badge management views.
- Cleaned up unused imports and legacy code in +layout and +page components.
- Standardized ID mapping in generic object processors.
- Improved IDAA post creation UX with autofocus and empty title defaults.
This commit is contained in:
Scott Idem
2026-02-13 13:51:55 -05:00
parent de947c827a
commit 6bfd13f52c
16 changed files with 224 additions and 226 deletions

View File

@@ -9,46 +9,46 @@
let { data, children, log_lvl = 0 }: Props = $props();
// *** Import Svelte specific
import { liveQuery } from 'dexie';
// import { liveQuery } from 'dexie';
import type { key_val } from '$lib/stores/ae_stores';
import { ae_util } from '$lib/ae_utils/ae_utils';
// import type { key_val } from '$lib/stores/ae_stores';
// import { ae_util } from '$lib/ae_utils/ae_utils';
// import { core_func } from '$lib/ae_core_functions';
import { db_events } from '$lib/ae_events/db_events';
import {
ae_snip,
ae_loc,
ae_sess,
ae_api,
ae_trig,
slct,
slct_trigger
} from '$lib/stores/ae_stores';
import {
events_loc,
events_sess,
events_slct,
events_trigger
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
// import { db_events } from '$lib/ae_events/db_events';
// import {
// ae_snip,
// ae_loc,
// ae_sess,
// ae_api,
// ae_trig,
// slct,
// slct_trigger
// } from '$lib/stores/ae_stores';
// import {
// events_loc,
// events_sess,
// events_slct,
// events_trigger
// } from '$lib/stores/ae_events_stores';
// import { events_func } from '$lib/ae_events_functions';
let lq__event_obj = $derived(
liveQuery(async () => {
if (log_lvl) {
console.log(
`*** LiveQuery: lq__event_obj *** event_id=${$events_slct.event_id}`
);
}
let results = await db_events.event.get(
$events_slct?.event_id ?? ''
);
// let lq__event_obj = $derived(
// liveQuery(async () => {
// if (log_lvl) {
// console.log(
// `*** LiveQuery: lq__event_obj *** event_id=${$events_slct.event_id}`
// );
// }
// let results = await db_events.event.get(
// $events_slct?.event_id ?? ''
// );
return results;
})
);
// return results;
// })
// );
let nav_y_height = $state(0);
// let nav_y_height = $state(0);
let box: any;
let xLeft = $state(0);
@@ -58,8 +58,8 @@
let yScroll = $state(0);
let yHeight = $state(0);
let scroll_x = $state(0);
let scroll_y = $state(0);
// let scroll_x = $state(0);
// let scroll_y = $state(0);
function parse_scroll() {
// console.log(`parse_scroll() called`);
@@ -73,13 +73,13 @@
}
// *** Functions and Logic
$effect(() => {
// if ($events_trigger == 'load__event_badge_obj_li' && $events_slct.event_id) {
// }
});
// $effect(() => {
// // if ($events_trigger == 'load__event_badge_obj_li' && $events_slct.event_id) {
// // }
// });
</script>
<svelte:head>
<!-- <svelte:head>
<title>
&AElig;: Badges for
{ae_util.shorten_string({
@@ -89,7 +89,7 @@
- Badges v3 -
{$events_loc?.title}
</title>
</svelte:head>
</svelte:head> -->
<!-- - Badges - {$events_loc?.title} -->
<!-- +layout: Where is here??? -->

View File

@@ -61,6 +61,22 @@
let last_search_id = 0;
let last_executed_key = ''; // Search Guard Key
let lq__event_obj = $derived(
liveQuery(async () => {
if (log_lvl) {
console.log(
`*** LiveQuery: lq__event_obj *** event_id=${$events_slct.event_id}`
);
}
let results = await db_events.event.get(
$events_slct?.event_id ?? ''
);
return results;
})
);
// Stable LiveQuery Pattern (Aether UI V3)
let lq__event_badge_obj_li = $derived.by(() => {
const ids = event_badge_id_li;
@@ -88,7 +104,7 @@
`Badge Page LQ: Fallback search for event: ${event_id}`
);
return await db_events.badge
.where('event_id_random')
.where('event_id')
.equals(event_id)
.limit(50)
.sortBy('given_name');
@@ -159,7 +175,7 @@
try {
if (event_id) {
let local_results = await db_events.badge
.where('event_id_random')
.where('event_id')
.equals(event_id)
.filter((badge) => {
if (
@@ -258,7 +274,7 @@
});
const local_ids = local_results
.map((b) => b.id || b.event_badge_id_random)
.map((b) => b.event_badge_id)
.filter(Boolean);
if (current_search_id === last_search_id) {
@@ -321,7 +337,7 @@
if (current_search_id === last_search_id) {
const api_results = results || [];
const api_ids = api_results
.map((b: any) => b.id || b.event_badge_id_random)
.map((b: any) => b.event_badge_id)
.filter(Boolean);
untrack(() => {
@@ -349,9 +365,9 @@
<svelte:head>
<title>
Badges -
&AElig;: Badges -
{ae_util.shorten_string({
string: $events_slct?.event_obj?.name ?? '-- not set --',
string: $lq__event_obj?.name ?? '-- not set --',
max_length: 12
})}
- OSIT's &AElig; Events

View File

@@ -36,18 +36,16 @@
import { LoaderCircle } from 'lucide-svelte';
// *** Variables
// let test_event_id = data.params.event_id;
// Use page.params for robust reactivity in Svelte 5
let event_badge_id = $derived(page.params.badge_id);
// Track if we are waiting for initial IDB result
let is_loading_idb = $state(true);
// console.log(`Data Params: event_id=${test_event_id}; badge_id=${test_event_badge_id}`);
let url_test_val = $derived(data.url.searchParams.get('test_val'));
$effect(() => {
console.log(`URL test_val = ${url_test_val}`);
});
// let url_test_val = $derived(data.url.searchParams.get('test_val'));
// $effect(() => {
// console.log(`URL test_val = ${url_test_val}`);
// });
let lq__event_badge_obj = $derived(
liveQuery(async () => {
@@ -57,14 +55,7 @@
`*** LiveQuery: lq__event_badge_obj *** event_badge_id=${event_badge_id}`
);
}
// Attempt lookup by the ID provided in the URL
let results = await db_events.badge.get(event_badge_id);
// Fallback: If not found by PK, try searching the event_badge_id index
// (Standardizing on semantic IDs)
if (!results) {
results = await db_events.badge.where('event_badge_id').equals(event_badge_id).first();
}
if (log_lvl) {
console.log(

View File

@@ -1,5 +1,5 @@
<script lang="ts">
import { createEventDispatcher } from 'svelte';
// import { createEventDispatcher } from 'svelte';
import type { key_val } from '$lib/stores/ae_stores';
import { events_func } from '$lib/ae_events_functions';
import { ae_api } from '$lib/stores/ae_stores';
@@ -10,7 +10,7 @@
let { event_id }: Props = $props();
const dispatch = createEventDispatcher();
// const dispatch = createEventDispatcher();
let full_name_override: string = $state('');
let professional_title_override: string = $state('');
@@ -60,20 +60,20 @@
});
if (new_badge) {
submit_status = 'success';
dispatch('success', new_badge);
// dispatch('success', new_badge);
} else {
submit_status = 'error';
dispatch('error', 'Failed to create badge');
// dispatch('error', 'Failed to create badge');
}
} catch (error) {
submit_status = 'error';
console.error('Error creating badge:', error);
dispatch('error', error);
// dispatch('error', error);
}
}
function handle_cancel() {
dispatch('cancel');
// dispatch('cancel');
}
</script>

View File

@@ -81,7 +81,7 @@
</header>
<ul class="w-full space-y-1">
{#each visible_badge_obj_li as event_badge_obj (event_badge_obj.event_badge_id_random)}
{#each visible_badge_obj_li as event_badge_obj (event_badge_obj.event_badge_id)}
<li
class="
border border-surface-200 dark:border-surface-700 rounded-lg p-2

View File

@@ -89,11 +89,11 @@
{#if $lq__filtered_badges}
{#if $lq__filtered_badges.length > 0}
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{#each $lq__filtered_badges as badge_obj (badge_obj.event_badge_id_random)}
{#each $lq__filtered_badges as badge_obj (badge_obj.event_badge_id)}
<div class="badge-print-container">
<Comp_badge_obj_view
{event_id}
event_badge_id={badge_obj.event_badge_id_random}
event_badge_id={badge_obj.event_badge_id}
lq__event_badge_obj={badge_obj}
is_review_mode={false}
log_lvl={0}

View File

@@ -94,7 +94,7 @@
{#if $lq__badge_templates.length > 0}
<div class="card p-4">
<ul class="list-group">
{#each $lq__badge_templates as template (template.event_badge_template_id_random)}
{#each $lq__badge_templates as template (template.event_badge_template_id)}
<li
class="list-group-item flex justify-between items-center"
>
@@ -105,7 +105,7 @@
class="btn btn-sm variant-filled-primary"
onclick={() =>
edit_template(
template.event_badge_template_id_random
template.event_badge_template_id
)}
>
<span class="fas fa-edit"></span> Edit
@@ -115,7 +115,7 @@
class="btn btn-sm variant-filled-error ml-2"
onclick={() =>
delete_template(
template.event_badge_template_id_random
template.event_badge_template_id
)}
>
<span class="fas fa-trash"></span> Delete