General clean up related to permissions and updating fields.

This commit is contained in:
Scott Idem
2024-07-24 15:00:48 -04:00
parent c41be23995
commit 027d7a781d
4 changed files with 395 additions and 195 deletions

View File

@@ -439,6 +439,7 @@ export function handle_db_save_ae_obj_li__event_presenter(
event_presentation_start_datetime: obj.event_presentation_start_datetime,
person_external_id: obj.person_external_id,
person_external_sys_id: obj.person_external_sys_id,
person_given_name: obj.person_given_name,
person_family_name: obj.person_family_name,
person_full_name: obj.person_full_name,

View File

@@ -10,8 +10,8 @@ export interface Person {
person_id: string;
person_id_random: string;
external_id?: string;
external_sys_id?: string; // Generated by an external system
external_id?: string; // This may be semi-random or unique only withing the account.
external_sys_id?: string; // Generated by an external system. Ideally this should be something like a UUID. It may be the same as the external_id if nothing given.
code?: string;
account_id?: string; // Technically this is not required for global users.

View File

@@ -1,6 +1,7 @@
import Dexie, { type Table } from 'dexie';
import type { list } from 'postcss';
import type { key_val } from './ae_stores';
import type { o } from 'vitest/dist/reporters-B7ebVMkT.js';
// li = list
// kv = key value list
@@ -488,7 +489,8 @@ export interface Presenter {
event_presentation_name?: string;
event_presentation_start_datetime?: null|Date;
person_external_id?: null|string;
person_external_id?: null|string; // This may be semi-random or unique only withing the account.
person_external_sys_id?: null|string; // Generated by an external system. Ideally this should be something like a UUID. It may be the same as the external_id if nothing given.
person_given_name?: string;
person_family_name?: null|string;
person_full_name?: null|string;

View File

@@ -19,6 +19,8 @@ import { ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_st
import { db_events } from "$lib/db_events";
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import { handle_load_ae_obj_id__event_presentation } from '$lib/ae_events__event_presentation';
import { handle_load_ae_obj_id__event_presenter } from '$lib/ae_events__event_presenter';
// Exports
export let event_presenter_id: string;
@@ -33,6 +35,10 @@ ae_tmp.show__file_li = true;
let ae_triggers: key_val = {};
let lq__event_obj = liveQuery(
() => db_events.events.get($events_slct.event_id)
);
// let lq__event_session_obj = liveQuery(
// () => db_events.sessions.get($events_slct.event_session_id)
// );
@@ -463,7 +469,7 @@ $: if ($lq__event_presenter_obj) {
field_type={'text'}
field_value={$lq__event_presenter_obj.external_id}
allow_null={false}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
hide_edit_btn={!$ae_loc.administrator_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
@@ -479,11 +485,88 @@ $: if ($lq__event_presenter_obj) {
});
}}
>
External ID:
{$lq__event_obj?.mod_pres_mgmt_json?.external_id_label ?? 'External ID'}:
<span class="font-bold">
{$lq__event_presenter_obj?.external_id ?? '-- not set --'}
</span>
</Element_ae_crud>
{#if $lq__event_presenter_obj.external_id != $lq__event_presenter_obj.person_external_id}
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'external_id'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_external_id}
allow_null={false}
hide_edit_btn={!$ae_loc.administrator_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-star-of-life"></span>
Person External ID:
<span class="font-bold">
{$lq__event_presenter_obj.person_external_id ?? '-- not set --'}
</span>
</Element_ae_crud>
<Element_ae_crud
trigger_patch={ae_triggers.update_person_external_id}
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'external_id'}
field_type={'text'}
field_value={$lq__event_presenter_obj.external_id}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<button
type="button"
on:click={() => {
console.log('*** Sync external ID button clicked ***');
if (!confirm('Are you sure you want to sync the external IDs?')) {return false;}
ae_triggers.update_person_external_id = true;
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
title="Use the external ID from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt mx-1"></span>
Sync
</button>
</Element_ae_crud>
</div>
{/if}
</li>
<li>
<span class="fas fa-user"></span>
<!-- {#if !$events_sess.pres_mgmt.show_edit__event_presenter_name}
@@ -552,6 +635,7 @@ $: if ($lq__event_presenter_obj) {
</span>
</Element_ae_crud>
</li>
<li
class:hidden={!$ae_loc.trusted_access && !$events_loc.auth__kv.presenter[$lq__event_presenter_obj.event_presenter_id_random] && !$events_loc.auth__kv.session[$lq__event_presenter_obj.event_session_id_random]}
>
@@ -589,86 +673,90 @@ $: if ($lq__event_presenter_obj) {
</Element_ae_crud>
{#if $lq__event_presenter_obj.person_primary_email != $lq__event_presenter_obj.email}
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'primary_email'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_primary_email}
allow_null={false}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'primary_email'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_primary_email}
allow_null={false}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-envelope"></span>
<span class="font-bold">
<a
href="mailto:{$lq__event_presenter_obj.person_primary_email}"
class="text-blue-500 underline hover:text-blue-800"
title="Person's primary email address"
>{$lq__event_presenter_obj.person_primary_email}</a>
</span>
</Element_ae_crud>
<!-- We need a way to let them re-sync the email addresses. The update here should flow back to the person.primary_email. -->
<Element_ae_crud
trigger_patch={ae_triggers.update_person_primary_email}
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'primary_email'}
field_type={'text'}
field_value={$lq__event_presenter_obj.email}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<button
type="button"
on:click={() => {
console.log('*** Sync email button clicked ***');
if (!confirm('Are you sure you want to sync the email addresses?')) {return false;}
ae_triggers.update_person_primary_email = true;
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
title="Use the email address from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt mx-1"></span>
Sync
</button>
</Element_ae_crud>
</div>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-envelope"></span>
<span class="font-bold">
<a
href="mailto:{$lq__event_presenter_obj.person_primary_email}"
class="text-blue-500 underline hover:text-blue-800"
title="Person's primary email address"
>{$lq__event_presenter_obj.person_primary_email}</a>
</span>
</Element_ae_crud>
{#if $ae_loc.trusted_access}
<!-- We need a way to let them re-sync the email addresses. The update here should flow back to the person.primary_email. -->
<Element_ae_crud
trigger_patch={ae_triggers.update_person_primary_email}
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'primary_email'}
field_type={'text'}
field_value={$lq__event_presenter_obj.email}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<button
type="button"
on:click={() => {
console.log('*** Sync email button clicked ***');
if (!confirm('Are you sure you want to sync the email addresses?')) {return false;}
ae_triggers.update_person_primary_email = true;
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
title="Use the email address from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt mx-1"></span>
Sync
</button>
</Element_ae_crud>
{/if}
</div>
{/if}
</li>
<li>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'event_presenter'}
@@ -687,8 +775,6 @@ $: if ($lq__event_presenter_obj) {
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
@@ -699,81 +785,81 @@ $: if ($lq__event_presenter_obj) {
</Element_ae_crud>
{#if $lq__event_presenter_obj.person_affiliations != $lq__event_presenter_obj.affiliations}
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'affiliations'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_affiliations}
allow_null={false}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'affiliations'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_affiliations}
allow_null={false}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-building"></span>
<span class="font-bold">
{$lq__event_presenter_obj.person_affiliations ?? '-- affiliations not set --'}
</span>
</Element_ae_crud>
<Element_ae_crud
trigger_patch={ae_triggers.update_person_affiliations}
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'affiliations'}
field_type={'text'}
field_value={$lq__event_presenter_obj.affiliations}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<button
type="button"
on:click={() => {
console.log('*** Sync affiliations button clicked ***');
if (!confirm('Are you sure you want to sync the affiliations?')) {return false;}
ae_triggers.update_person_affiliations = true;
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj.event_presenter_id_random, log_lvl: 0});
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
title="Use the affiliations from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt mx-1"></span>
Sync
</button>
</Element_ae_crud>
</div>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-building"></span>
<span class="font-bold">
{$lq__event_presenter_obj.person_affiliations ?? '-- affiliations not set --'}
</span>
</Element_ae_crud>
{#if $ae_loc.trusted_access}
<Element_ae_crud
trigger_patch={ae_triggers.update_person_affiliations}
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'affiliations'}
field_type={'text'}
field_value={$lq__event_presenter_obj.affiliations}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<button
type="button"
on:click={() => {
console.log('*** Sync affiliations button clicked ***');
if (!confirm('Are you sure you want to sync the affiliations?')) {return false;}
ae_triggers.update_person_affiliations = true;
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
title="Use the affiliations from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt mx-1"></span>
Sync
</button>
</Element_ae_crud>
{/if}
</div>
{/if}
</li>
<li>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'event_presenter'}
@@ -792,8 +878,6 @@ $: if ($lq__event_presenter_obj) {
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
@@ -802,54 +886,79 @@ $: if ($lq__event_presenter_obj) {
{$lq__event_presenter_obj.professional_title && $lq__event_presenter_obj.professional_title.length ? $lq__event_presenter_obj.professional_title : '-- professional title not set --'}
</span>
</Element_ae_crud>
</li>
<li
class:hidden={!$ae_loc.trusted_access && !$events_loc.auth__kv.presenter[$lq__event_presenter_obj.event_presenter_id_random]}
>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'passcode'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_passcode}
allow_null={true}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={false}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-user-secret"></span>
Passcode:
<span
class="font-bold"
{#if $lq__event_presenter_obj.person_professional_title != $lq__event_presenter_obj.professional_title}
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'professional_title'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_professional_title}
allow_null={false}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj.event_presenter_id_random, log_lvl: 0});
}}
>
{$lq__event_presenter_obj.person_passcode ?? '-- passcode not set --'}
</span>
</Element_ae_crud>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-user-tag"></span>
<span class="font-bold">
{$lq__event_presenter_obj.person_professional_title && $lq__event_presenter_obj.person_professional_title.length ? $lq__event_presenter_obj.person_professional_title : '-- professional title not set --'}
</span>
</Element_ae_crud>
<!-- <span class="fas fa-user-secret"></span>
{$lq__event_presenter_obj.person_passcode} (your passcode)
{#if $ae_loc.trusted_access}
<Element_ae_crud
trigger_patch={ae_triggers.update_person_professional_title}
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'professional_title'}
field_type={'text'}
field_value={$lq__event_presenter_obj.professional_title}
allow_null={false}
hide_edit_btn={true}
outline_element={false}
show_crud={false}
display_inline={true}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<button
type="button"
on:click={() => {
console.log('*** Sync professional title button clicked ***');
if (!confirm('Are you sure you want to sync the professional title?')) {return false;}
ae_triggers.update_person_professional_title = true;
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
title="Use the professional title from this presenter record to overwrite the person record."
>
<span class="fas fa-sync-alt mx-1"></span>
Sync
</button>
</Element_ae_crud>
{/if}
</div>
{/if}
<button
title="Edit your passcode"
class="btn btn-sm variant-soft-warning"
class:hidden={!$ae_loc.trusted_access}
>
<span class="fas fa-edit">
</span>
Edit
</button> -->
</li>
<li>
@@ -968,6 +1077,7 @@ $: if ($lq__event_presenter_obj) {
console.log('*** Sync person button clicked ***');
if (!confirm('Are you sure you want to sync from the person record?')) {return false;}
// NOTE: The external_id should not really be changed once it is set. The person.external_sys_id may need to be updated as well.
let event_presenter_data = {
'external_id': $lq__event_presenter_obj.person_external_id,
'given_name': $lq__event_presenter_obj.person_given_name,
@@ -1008,7 +1118,7 @@ $: if ($lq__event_presenter_obj) {
let person_data = {
account_id_random: $slct.account_id,
source_code: 'manual:SK',
external_id: $lq__event_presenter_obj?.external_id?? 'new_presenter',
external_id: $lq__event_presenter_obj?.external_id?? 'AE-temp-ID',
// user_id_random: user_obj.user_id_random,
given_name: $lq__event_presenter_obj.given_name?? 'New',
family_name: $lq__event_presenter_obj?.family_name?? 'Presenter',
@@ -1048,6 +1158,93 @@ $: if ($lq__event_presenter_obj) {
</li>
<li
class:hidden={!$ae_loc.trusted_access && !$events_loc.auth__kv.presenter[$lq__event_presenter_obj.event_presenter_id_random]}
>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'passcode'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_passcode}
allow_null={true}
hide_edit_btn={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={false}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-user-secret"></span>
Passcode:
<span
class="font-bold"
>
{$lq__event_presenter_obj.person_passcode ?? '-- passcode not set --'}
</span>
</Element_ae_crud>
<!-- <span class="fas fa-user-secret"></span>
{$lq__event_presenter_obj.person_passcode} (your passcode)
<button
title="Edit your passcode"
class="btn btn-sm variant-soft-warning"
class:hidden={!$ae_loc.trusted_access}
>
<span class="fas fa-edit">
</span>
Edit
</button> -->
</li>
<li
class:hidden={!$ae_loc.trusted_access || !$ae_loc.edit_mode}
>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
object_id={$lq__event_presenter_obj.person_id_random}
field_name={'external_sys_id'}
field_type={'text'}
field_value={$lq__event_presenter_obj.person_external_sys_id}
allow_null={true}
hide_edit_btn={!$ae_loc.administrator_access || !$ae_loc.edit_mode}
outline_element={false}
show_crud={false}
display_inline={false}
class_li={''}
on:ae_crud_updated={e => {
console.log(`ae_crud_updated:`, e.detail);
events_func.handle_load_ae_obj_id__event_presenter({api_cfg: $ae_api, event_presenter_id: $lq__event_presenter_obj?.event_presenter_id_random, log_lvl: 0})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-fingerprint"></span>
External Sys ID:
<span
class="font-bold"
>
{$lq__event_presenter_obj.person_external_sys_id ?? '-- external_sys_id not set --'}
</span>
</Element_ae_crud>
</li>
<!-- The presenters biography. There should be a character counter. -->
<li>
<div class="label event_presenter__biography required space-y-4">