From 53a03f971f29fb7d0642eabbad0c0269c973f9dc Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 30 Sep 2025 03:43:29 -0400 Subject: [PATCH] Added new auto reload for most object types with new v2 function and element. --- src/lib/ae_core/ae_core_functions.ts | 261 ++++++++++++++++-- src/lib/element_ae_crud_v2.svelte | 29 +- .../ae_comp__event_session_obj_li.svelte | 61 ++-- 3 files changed, 288 insertions(+), 63 deletions(-) diff --git a/src/lib/ae_core/ae_core_functions.ts b/src/lib/ae_core/ae_core_functions.ts index c6a626c3..45e4270d 100644 --- a/src/lib/ae_core/ae_core_functions.ts +++ b/src/lib/ae_core/ae_core_functions.ts @@ -292,23 +292,25 @@ async function handle_load_ae_obj_code__data_store( // Updated 2024-03-27 async function handle_update_ae_obj_id_crud( { - api_cfg, - object_type, - object_id, - field_name, - new_field_value, - params={}, - try_cache=false, - log_lvl=0 + api_cfg, + object_type, + object_id, + object_reload = false, + field_name, + new_field_value, + params = {}, + try_cache = false, + log_lvl = 0 }: { - api_cfg: any, - object_type: string, - object_id: string, - field_name: string, - new_field_value: any, - params: any|key_val, - try_cache: boolean, - log_lvl: number + api_cfg: any, + object_type: string, + object_id: string, + object_reload?: boolean, + field_name: string, + new_field_value: any, + params: any|key_val, + try_cache: boolean, + log_lvl: number }) { let patch_result: any = null; @@ -352,6 +354,232 @@ async function handle_update_ae_obj_id_crud( } +// Core - Already imported above +// import { load_ae_obj_id__person } from "$lib/ae_core/core__person"; +// import { load_ae_obj_id__user } from "$lib/ae_core/core__user"; + +// Additional Modules +import { load_ae_obj_id__archive } from "$lib/ae_archives/ae_archives__archive"; +import { load_ae_obj_id__archive_content } from "$lib/ae_archives/ae_archives__archive_content"; + +import { load_ae_obj_id__event } from "$lib/ae_events/ae_events__event"; +// import { load_ae_obj_id__event_badge } from "$lib/ae_events/ae_events__event_badge"; +import { load_ae_obj_id__event_device } from "$lib/ae_events/ae_events__event_device"; +// import { load_ae_obj_id__event_exhibit } from "$lib/ae_events/ae_events__event_exhibit"; +import { load_ae_obj_id__event_file } from "$lib/ae_events/ae_events__event_file"; +import { load_ae_obj_id__event_location } from "$lib/ae_events/ae_events__event_location"; +import { load_ae_obj_id__event_presentation } from "$lib/ae_events/ae_events__event_presentation"; +import { load_ae_obj_id__event_presenter } from "$lib/ae_events/ae_events__event_presenter"; +import { load_ae_obj_id__event_session } from "$lib/ae_events/ae_events__event_session"; + +import { load_ae_obj_id__journal } from "$lib/ae_journals/ae_journals__journal"; +import { load_ae_obj_id__journal_entry } from "$lib/ae_journals/ae_journals__journal_entry"; + +import { load_ae_obj_id__post } from "$lib/ae_posts/ae_posts__post"; +import { load_ae_obj_id__post_comment } from "$lib/ae_posts/ae_posts__post_comment"; + +// Updated 2025-09-30 +async function update_ae_obj_id_crud_v2( + { + api_cfg, + object_type, + object_id, + object_reload = false, + field_name, + new_field_value, + params = {}, + try_cache = false, + log_lvl = 0 + }: { + api_cfg: any, + object_type: string, + object_id: string, + object_reload?: boolean, + field_name: string, + new_field_value: any, + params?: any|key_val, + try_cache?: boolean, + log_lvl?: number + }) { + if (log_lvl) { + console.log(`*** update_ae_obj_id_crud_v2() *** object_type=${object_type}, object_id=${object_id}, object_reload=${object_reload}, field_name=${field_name}, new_field_value=`, new_field_value); + } + let patch_result: any = null; + + ae_promises.api_update__ae_obj = await api.update_ae_obj_id_crud({ + api_cfg: api_cfg, + obj_type: object_type, + obj_id: object_id, + field_name: field_name, + field_value: new_field_value, + // fields: data, + key: api_cfg.api_crud_super_key, + // jwt: null, + // params: params, + // data: patch_data, + log_lvl: log_lvl + }) + .then(function (results) { + console.log('PATCH Promise', results); + + if (results) { + console.log(`Patched - Field Name: ${field_name} with new Field Value: ${new_field_value}`); + patch_result = 'PATCH complete'; + + if (object_reload) { + if (log_lvl) { + console.log(`Reloading the object after patching...`); + } + // Reload the object to get the latest data. There is a special case for each type. + if (object_type == 'person') { + let load_person_obj = load_ae_obj_id__person({ + api_cfg: api_cfg, + person_id: object_id, + log_lvl: log_lvl + }); + return load_person_obj; + } + // if (object_type == 'user') { + // let load_user_obj = load_ae_obj_id__user({ + // api_cfg: api_cfg, + // user_id: object_id, + // log_lvl: log_lvl + // }); + // return load_user_obj; + // } + + if (object_type == 'archive') { + let load_archive_obj = load_ae_obj_id__archive({ + api_cfg: api_cfg, + archive_id: object_id, + log_lvl: log_lvl + }); + return load_archive_obj; + } + if (object_type == 'archive_content') { + let load_archive_content_obj = load_ae_obj_id__archive_content({ + api_cfg: api_cfg, + archive_content_id: object_id, + log_lvl: log_lvl + }); + return load_archive_content_obj; + } + + if (object_type == 'journal') { + let load_journal_obj = load_ae_obj_id__journal({ + api_cfg: api_cfg, + journal_id: object_id, + log_lvl: log_lvl + }); + return load_journal_obj; + } + if (object_type == 'journal_entry') { + let load_journal_entry_obj = load_ae_obj_id__journal_entry({ + api_cfg: api_cfg, + journal_entry_id: object_id, + log_lvl: log_lvl + }); + return load_journal_entry_obj; + } + + if (object_type == 'event') { + let load_event_obj = load_ae_obj_id__event({ + api_cfg: api_cfg, + event_id: object_id, + log_lvl: log_lvl + }); + return load_event_obj; + } + if (object_type == 'event_device') { + let load_event_device_obj = load_ae_obj_id__event_device({ + api_cfg: api_cfg, + event_device_id: object_id, + log_lvl: log_lvl + }); + return load_event_device_obj; + } + if (object_type == 'event_file') { + let load_event_file_obj = load_ae_obj_id__event_file({ + api_cfg: api_cfg, + event_file_id: object_id, + log_lvl: log_lvl + }); + return load_event_file_obj; + } + if (object_type == 'event_location') { + let load_event_location_obj = load_ae_obj_id__event_location({ + api_cfg: api_cfg, + event_location_id: object_id, + log_lvl: log_lvl + }); + return load_event_location_obj; + } + if (object_type == 'event_presentation') { + let load_event_presentation_obj = load_ae_obj_id__event_presentation({ + api_cfg: api_cfg, + event_presentation_id: object_id, + log_lvl: log_lvl + }); + return load_event_presentation_obj; + } + if (object_type == 'event_presenter') { + let load_event_presenter_obj = load_ae_obj_id__event_presenter({ + api_cfg: api_cfg, + event_presenter_id: object_id, + log_lvl: log_lvl + }); + return load_event_presenter_obj; + } + if (object_type == 'event_session') { + let load_event_session_obj = load_ae_obj_id__event_session({ + api_cfg: api_cfg, + event_session_id: object_id, + log_lvl: log_lvl + }); + return load_event_session_obj; + } + + if (object_type == 'post') { + let load_post_obj = load_ae_obj_id__post({ + api_cfg: api_cfg, + post_id: object_id, + log_lvl: log_lvl + }); + return load_post_obj; + } + if (object_type == 'post_comment') { + let load_post_comment_obj = load_ae_obj_id__post_comment({ + api_cfg: api_cfg, + post_comment_id: object_id, + log_lvl: log_lvl + }); + return load_post_comment_obj; + } + + + + } + + } else { + console.log(`Not Patched - Field Name: ${field_name} with new Field Value: ${new_field_value}; Account ID: ${api_cfg.account_id}`); + patch_result = 'PATCH failed'; + return false; + } + return true; + }) + .catch(function (error) { + console.log('Something went wrong patching the record.'); + console.log(error); + return false; + }) + .finally(function () { + console.log('PATCH Promise finally'); + }); + + return ae_promises.api_update__ae_obj; + +} + async function handle_download_export__obj_type( { @@ -467,6 +695,7 @@ let export_obj = { auth_ae_obj__user_id_change_password: auth_ae_obj__user_id_change_password, handle_update_ae_obj_id_crud: handle_update_ae_obj_id_crud, + update_ae_obj_id_crud_v2: update_ae_obj_id_crud_v2, handle_download_export__obj_type: handle_download_export__obj_type, generate_qr_code: generate_qr_code }; diff --git a/src/lib/element_ae_crud_v2.svelte b/src/lib/element_ae_crud_v2.svelte index e1f46a15..aefd1024 100644 --- a/src/lib/element_ae_crud_v2.svelte +++ b/src/lib/element_ae_crud_v2.svelte @@ -11,6 +11,7 @@ interface Props { object_type: string; object_id: string; + object_reload?: boolean; field_name: string; field_type?: string; // button, text, textarea, template (older method), select (in progress method) @@ -33,10 +34,10 @@ interface Props { // export let input_field_template: null|object = null; - hide_element?: boolean; - hide_edit_btn?: boolean; + hide_element?: boolean; // This hides the entire custom element. + hide_edit_btn?: boolean; // This only hides the edit button. // hide_edit_form?: boolean; - show_edit_form?: boolean; + show_edit_form?: boolean; // This is used if the parent needs to make the edit form visible. outline_element?: boolean; @@ -57,6 +58,7 @@ let { object_type, object_id, + object_reload = false, field_name, field_type = 'text', @@ -119,13 +121,11 @@ $effect(() => { // ; Super Key: ${api_crud_super_key} } - - } - if (select_option_kv) { - console.log(select_option_kv); - } + // if (select_option_kv) { + // console.log(select_option_kv); + // } if (trigger_patch === true) { if (log_lvl) { @@ -174,21 +174,20 @@ async function handle_obj_field_patch(new_field_value: any) { // let params = {}; - ae_promises.api_update__ae_obj = core_func.handle_update_ae_obj_id_crud({ + ae_promises.api_update__ae_obj = core_func.update_ae_obj_id_crud_v2({ api_cfg: api_cfg, object_type: object_type, object_id: object_id, + object_reload: object_reload, field_name: field_name, new_field_value: new_field_value, - params: {}, - try_cache: false, - log_lvl: 0 + log_lvl: 1 }) .then(function (results) { - console.log('Field PATCH Promise', results); + // console.log('Field PATCH Promise', results); if (results) { - console.log(`Patched - Field Name: ${field_name} with New Field Value: ${new_field_value}; Original Field Value: ${current_field_value}`); + // console.log(`Patched - Field Name: ${field_name} with New Field Value: ${new_field_value}; Original Field Value: ${current_field_value}`); patch_status = 'PATCH complete'; current_field_value = new_field_value; } else { @@ -205,7 +204,7 @@ async function handle_obj_field_patch(new_field_value: any) { return false; }) .finally(function () { - console.log('Field PATCH Promise finally'); + // console.log('Field PATCH Promise finally'); if (patch_status != 'PATCH complete') { patch_status = 'Error during PATCH'; patch_complete = false; diff --git a/src/routes/events/ae_comp__event_session_obj_li.svelte b/src/routes/events/ae_comp__event_session_obj_li.svelte index 28676382..a504ca82 100644 --- a/src/routes/events/ae_comp__event_session_obj_li.svelte +++ b/src/routes/events/ae_comp__event_session_obj_li.svelte @@ -64,34 +64,34 @@ let trigger_reload_session_id: string = $state(''); // *** Functions and Logic -$effect(() => { - // if (ae_triggers.session_obj_id_reload) { - // console.log(`ae_triggers.session_obj_id_reload changed: ${ae_triggers.session_obj_id_reload}`); +// $effect(() => { +// // if (ae_triggers.session_obj_id_reload) { +// // console.log(`ae_triggers.session_obj_id_reload changed: ${ae_triggers.session_obj_id_reload}`); - // reload_session_id(ae_triggers.session_obj_id_reload); - // } +// // reload_session_id(ae_triggers.session_obj_id_reload); +// // } - if (trigger_reload_session_id) { - console.log(`trigger_reload_session_id changed: ${trigger_reload_session_id}`); +// if (trigger_reload_session_id) { +// console.log(`trigger_reload_session_id changed: ${trigger_reload_session_id}`); - reload_event_session_id(trigger_reload_session_id); - trigger_reload_session_id = ''; - } +// reload_event_session_id(trigger_reload_session_id); +// trigger_reload_session_id = ''; +// } -}); +// }); -function reload_event_session_id(event_session_id_random: string) { - console.log(`Reloading session ID: ${event_session_id_random}`); +// function reload_event_session_id(event_session_id_random: string) { +// console.log(`Reloading session ID: ${event_session_id_random}`); - events_func.load_ae_obj_id__event_session({ - api_cfg: $ae_api, - event_session_id: event_session_id_random, - log_lvl: log_lvl - }) - .then(function (load_results) { - console.log(`Loaded session:`, load_results); - }); -} +// events_func.load_ae_obj_id__event_session({ +// api_cfg: $ae_api, +// event_session_id: event_session_id_random, +// log_lvl: log_lvl +// }) +// .then(function (load_results) { +// console.log(`Loaded session:`, load_results); +// }); +// } @@ -300,14 +300,17 @@ function reload_event_session_id(event_session_id_random: string) { {#if $ae_loc.edit_mode} + { - console.log('Edit the location for the session.'); - - let params = { - qry__limit: 50, - } - - // $slct.event_location_obj_li = await core_func.load_ae_obj_li__event_location({api_cfg: $ae_api, account_id: $slct.account_id, params: params}); + console.log('Edit the location for the session. Get the list of locations first.'); $slct.event_location_obj_li = events_func.load_ae_obj_li__event_location({ api_cfg: $ae_api, for_obj_type: 'event', for_obj_id: session_obj?.event_id_random, - params: params, + limit: 50, log_lvl: log_lvl }) .then(function (load_results) { @@ -377,7 +374,7 @@ function reload_event_session_id(event_session_id_random: string) { // We need to make this ready for the select option list. Convert the list to a key value pair with the event_location_id_random as the key. We also need to set the option text value to: name (room) if (load_results) { let event_location_obj_li = load_results; - let event_location_obj_kv = {}; //: key_val = {}; + let event_location_obj_kv: key_val = {}; event_location_obj_kv[''] = '-- Select a location --'; event_location_obj_li.forEach((event_location_obj) => { let option_text = `${event_location_obj.name} (${event_location_obj.code})`;