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:
@@ -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>
|
||||
Æ: 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??? -->
|
||||
|
||||
@@ -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 -
|
||||
Æ: 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 Æ Events
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user