feat(badges): add manual one-off badge create modal
Two-step creation: POST event_person first, then event_badge linked to it. Badge create route (event_person parent) pending backend fix — frontend is ready and passing event_person_id + event_badge_template_id in payload. - ae_events__event_person.ts: new create function (nested under event) - ae_events_functions.ts: export create_ae_obj__event_person - ae_comp__badge_create_form.svelte: modal form with live name preview, conditional display-name override, template selector (auto-selects when only one template), badge_type_code_li derived from selected template's badge_type_list JSON, two-step submit status labels - +page.svelte: load template list via liveQuery, wire Create Badge button (edit_mode only), native <dialog> modal with backdrop, remote-first refresh on success Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
42
src/lib/ae_events/ae_events__event_person.ts
Normal file
42
src/lib/ae_events/ae_events__event_person.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import type { key_val } from '$lib/stores/ae_stores';
|
||||
import { api } from '$lib/api/api';
|
||||
|
||||
const ae_promises: key_val = {};
|
||||
|
||||
/**
|
||||
* create_ae_obj__event_person
|
||||
* Creates a new event_person record linked to an event.
|
||||
* Used as the first step of manual one-off badge creation.
|
||||
* The returned event_person_id is then passed to create_ae_obj__event_badge.
|
||||
*/
|
||||
export async function create_ae_obj__event_person({
|
||||
api_cfg,
|
||||
event_id,
|
||||
data_kv,
|
||||
params = {},
|
||||
log_lvl = 0
|
||||
}: {
|
||||
api_cfg: any;
|
||||
event_id: string;
|
||||
data_kv: key_val;
|
||||
params?: key_val;
|
||||
log_lvl?: number;
|
||||
}): Promise<any | null> {
|
||||
if (log_lvl) {
|
||||
console.log(
|
||||
`*** create_ae_obj__event_person() *** event_id=${event_id}`
|
||||
);
|
||||
}
|
||||
|
||||
ae_promises.create__event_person = await api.create_nested_obj({
|
||||
api_cfg,
|
||||
parent_type: 'event',
|
||||
parent_id: event_id,
|
||||
child_type: 'event_person',
|
||||
fields: data_kv,
|
||||
params,
|
||||
log_lvl
|
||||
});
|
||||
|
||||
return ae_promises.create__event_person;
|
||||
}
|
||||
@@ -33,6 +33,8 @@ import * as event_presenter from '$lib/ae_events/ae_events__event_presenter';
|
||||
|
||||
import * as event_badge from '$lib/ae_events/ae_events__event_badge';
|
||||
|
||||
import { create_ae_obj__event_person } from '$lib/ae_events/ae_events__event_person';
|
||||
|
||||
import * as event_badge_template from '$lib/ae_events/ae_events__event_badge_template';
|
||||
|
||||
const export_obj = {
|
||||
@@ -46,6 +48,9 @@ const export_obj = {
|
||||
update_ae_obj__event: event.update_ae_obj__event,
|
||||
sync_config__event_pres_mgmt: event.sync_config__event_pres_mgmt,
|
||||
|
||||
// Event Person
|
||||
create_ae_obj__event_person: create_ae_obj__event_person,
|
||||
|
||||
// Event Badges
|
||||
load_ae_obj_id__event_badge: event_badge.load_ae_obj_id__event_badge,
|
||||
load_ae_obj_li__event_badge: event_badge.load_ae_obj_li__event_badge,
|
||||
|
||||
Reference in New Issue
Block a user