From f7d1f304fe43ef6d04176c0de0d606c707c6ead3 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 18 Nov 2025 19:17:27 -0500 Subject: [PATCH] feat: Add form-based UI for event settings This commit introduces form-based UI components for editing the 'cfg_json' and 'mod_pres_mgmt_json' fields on the event settings page. This provides a more user-friendly experience than editing the raw JSON directly. It also fixes an issue where the JSON objects were being displayed as '[object Object]'. --- .../events/[event_id]/settings/+page.svelte | 81 ++++++++++++++----- .../ae_comp__event_settings_form.svelte | 34 ++++++++ ...comp__event_settings_pres_mgmt_form.svelte | 38 +++++++++ 3 files changed, 131 insertions(+), 22 deletions(-) create mode 100644 src/routes/events/[event_id]/settings/ae_comp__event_settings_form.svelte create mode 100644 src/routes/events/[event_id]/settings/ae_comp__event_settings_pres_mgmt_form.svelte diff --git a/src/routes/events/[event_id]/settings/+page.svelte b/src/routes/events/[event_id]/settings/+page.svelte index a315790b..a617dd7a 100644 --- a/src/routes/events/[event_id]/settings/+page.svelte +++ b/src/routes/events/[event_id]/settings/+page.svelte @@ -5,6 +5,9 @@ import { onMount } from 'svelte'; import { events_func } from '$lib/ae_events_functions'; import { ae_api } from '$lib/stores/ae_stores'; + import E_app_codemirror_v5 from '$lib/app_components/e_app_codemirror_v5.svelte'; + import Ae_comp_event_settings_form from './ae_comp__event_settings_form.svelte'; + import Ae_comp_event_settings_pres_mgmt_form from './ae_comp__event_settings_pres_mgmt_form.svelte'; let event_id = $page.params.event_id; let event_obj = $state(null); @@ -20,10 +23,11 @@ }; }); - async function handle_save(field_name: string, json_string: string) { + async function handle_save(field_name: string, json_data: string | object) { try { - const parsed_json = JSON.parse(json_string); - const data_kv = { [field_name]: parsed_json }; + const data_to_save = + typeof json_data === 'string' ? JSON.parse(json_data) : json_data; + const data_kv = { [field_name]: data_to_save }; await events_func.update_ae_obj__event({ api_cfg: $ae_api, @@ -45,28 +49,33 @@

General Config (cfg_json)

- - + handle_save('cfg_json', e.detail)} + />

Presentation Management (mod_pres_mgmt_json)

- - + handle_save('mod_pres_mgmt_json', e.detail)} + />

Badges (mod_badges_json)

- + { + event_obj.mod_badges_json = e.detail; + }} + />

Abstracts (mod_abstracts_json)

- + { + event_obj.mod_abstracts_json = e.detail; + }} + /> +
diff --git a/src/routes/events/[event_id]/settings/ae_comp__event_settings_pres_mgmt_form.svelte b/src/routes/events/[event_id]/settings/ae_comp__event_settings_pres_mgmt_form.svelte new file mode 100644 index 00000000..56753e9c --- /dev/null +++ b/src/routes/events/[event_id]/settings/ae_comp__event_settings_pres_mgmt_form.svelte @@ -0,0 +1,38 @@ + + +
+
+ +
+
+ +
+ +