All of the changes from today (Wednesday February 25, 2026) need to be reviewed. We spent over 6 hours trying to fix the page loading when viewing a fresh Session ID and Presentation ID. OpenAI and Gemini failed hard!!! I am at a lost and frustrated. I will probably need to deal with this myself. :-/

This commit is contained in:
Scott Idem
2026-02-25 18:34:21 -05:00
parent 17620b6fbc
commit 7b5c7528b6
22 changed files with 1674 additions and 2828 deletions

View File

@@ -124,280 +124,269 @@
</h3>
<!-- Show presenters for this LiveQuery -->
{#if $lq__event_presenter_obj_li?.length}
<!-- <strong class="text-sm">Presenters:
{#if $ae_loc.administrator_access}
({$lq__event_presenter_obj_li?.length})
{/if}
</strong> -->
<ul class="space-y-1 px-4 m-2 bg-gray-100 rounded-md">
{#each $lq__event_presenter_obj_li as event_presenter_obj}
<!-- This is a hack. I can not get the LiveQuery to work with specific presentation IDs. It only works with the session ID. I need to figure out how to get the presenters for the specific presentation. -->
<!-- {#if event_presenter_obj.event_presentation_id == event_presentation_obj.event_presentation_id} -->
<li
class:dim={event_presenter_obj?.hide}
class:dim_warning={!event_presenter_obj?.enable}
class:hidden={!event_presenter_obj?.enable &&
!$ae_loc.administrator_access}
<ul class="space-y-1 px-4 m-2 bg-gray-100 rounded-md">
{#each $lq__event_presenter_obj_li ?? [] as event_presenter_obj}
<!-- This is a hack. I can not get the LiveQuery to work with specific presentation IDs. It only works with the session ID. I need to figure out how to get the presenters for the specific presentation. -->
<!-- {#if event_presenter_obj.event_presentation_id == event_presentation_obj.event_presentation_id} -->
<li
class:dim={event_presenter_obj?.hide}
class:dim_warning={!event_presenter_obj?.enable}
class:hidden={!event_presenter_obj?.enable &&
!$ae_loc.administrator_access}
>
<a
href="/events/{event_presenter_obj.event_id}/presenter/{event_presenter_obj.event_presenter_id}"
class:btn-sm={display_mode != 'default'}
class="
ae_obj__event_presenter
btn preset-tonal-primary border border-primary-500
hover:preset-filled-primary-500
font-bold min-w-64 max-w-96 my-0.5
overflow-hidden
"
title="Person ID: {event_presenter_obj.person_id}; Email: {event_presenter_obj.person_primary_email}"
>
<a
href="/events/{event_presenter_obj.event_id}/presenter/{event_presenter_obj.event_presenter_id}"
class:btn-sm={display_mode != 'default'}
class="
ae_obj__event_presenter
btn preset-tonal-primary border border-primary-500
hover:preset-filled-primary-500
font-bold min-w-64 max-w-96 my-0.5
overflow-hidden
"
title="Person ID: {event_presenter_obj.person_id}; Email: {event_presenter_obj.person_primary_email}"
>
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group'}
<span
class="fas fa-user m-0.5 text-xs text-surface-800-200"
></span>
{:else if event_presenter_obj?.given_name == 'Group'}
<span
class="fas fa-users m-0.5 text-xs text-surface-800-200"
></span>
{:else}
<span
class="fas fa-user-slash m-0.5 text-xs text-surface-800-200"
></span>
{/if}
{#if event_presenter_obj.priority}
<span
class="fas fa-star m-0.5 text-xs text-yellow-800-200"
></span>
{/if}
<span class="text-center grow">
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group'}
<span
class="fas fa-user m-0.5 text-xs text-surface-800-200"
></span>
{event_presenter_obj?.full_name}
{:else if event_presenter_obj?.given_name == 'Group'}
<span
class="fas fa-users m-0.5 text-xs text-surface-800-200"
></span>
{ae_util.shorten_string({
string: event_presenter_obj?.affiliations,
max_length: 25
})}
{:else}
<span
class="fas fa-user-slash m-0.5 text-xs text-surface-800-200"
></span>
--not set--
{/if}
{#if event_presenter_obj.priority}
<span
class="fas fa-star m-0.5 text-xs text-yellow-800-200"
></span>
{/if}
<span class="text-center grow">
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group'}
{event_presenter_obj?.full_name}
{:else if event_presenter_obj?.given_name == 'Group'}
{ae_util.shorten_string({
string: event_presenter_obj?.affiliations,
max_length: 25
})}
{:else}
--not set--
{/if}
</span>
{#if event_presenter_obj?.file_count}
<span
class="badge preset-tonal-success hover:preset-filled-success-500"
title="{event_presenter_obj.file_count} files"
>
<span class="fas fa-file-alt mx-1"></span>
{event_presenter_obj?.file_count}×
<!-- {event_presenter_obj?.file_count ? `(${event_presenter_obj?.file_count}&times; files)` : '(0 files)'} -->
</span>
{/if}
</a>
{#if event_presenter_obj?.file_count}
<span
class="badge preset-tonal-success hover:preset-filled-success-500"
title="{event_presenter_obj.file_count} files"
>
<span class="fas fa-file-alt mx-1"></span>
{event_presenter_obj?.file_count}×
<!-- {event_presenter_obj?.file_count ? `(${event_presenter_obj?.file_count}&times; files)` : '(0 files)'} -->
</span>
{/if}
</a>
{#if $events_loc?.pres_mgmt?.show__email_access_link && event_presenter_obj?.person_primary_email && ($ae_loc.administrator_access || !$events_loc.auth__person?.id)}
<button
type="button"
onclick={() => {
console.log('Email the access link');
if (!event_presenter_obj.person_primary_email) {
alert(
'No email address found for this presenter.'
);
return;
}
if (
confirm(
`This will send the sign in email to ${event_presenter_obj.person_primary_email}`
)
) {
console.log(
'Send the email to the presenter.'
);
} else {
console.log('Cancelled sending the email.');
return false;
}
{#if $events_loc?.pres_mgmt?.show__email_access_link && event_presenter_obj?.person_primary_email && ($ae_loc.administrator_access || !$events_loc.auth__person?.id)}
events_func.email_sign_in__event_presenter({
api_cfg: $ae_api,
to_email:
event_presenter_obj.person_primary_email,
to_name:
event_presenter_obj?.full_name ??
'-- not set --',
base_url: $ae_loc.url_origin,
person_id:
event_presenter_obj?.person_id,
person_passcode:
event_presenter_obj.person_passcode ??
'-- not set --',
event_id:
event_presenter_obj.event_id,
event_session_id:
event_presenter_obj.event_session_id,
event_presentation_id:
event_presenter_obj.event_presentation_id,
event_presenter_id:
event_presenter_obj.event_presenter_id,
session_name:
event_presenter_obj?.event_session_name ??
'-- not set --',
presentation_name:
event_presenter_obj?.event_presentation_name ??
'-- not set --'
});
}}
class="btn preset-tonal-secondary border border-secondary-500 hover:preset-filled-secondary-500 my-0.5 transition-all hover:transition-all"
class:btn-sm={display_mode != 'default'}
title="Email the access link to the presenter"
>
<span class="fas fa-envelope mx-1"></span>
Email Access Link
</button>
{/if}
{#if $events_loc.pres_mgmt?.require__presenter_agree}
{#if event_presenter_obj?.agree}
<!-- {#if $ae_loc.trusted_access || $events_loc.auth__kv.presenter[event_presenter_obj.event_presenter_id]} -->
<button
type="button"
disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[
event_presenter_obj
.event_presenter_id
]}
onclick={() => {
console.log('Email the access link');
if (!event_presenter_obj.person_primary_email) {
alert(
'No email address found for this presenter.'
);
return;
}
if (
confirm(
`This will send the sign in email to ${event_presenter_obj.person_primary_email}`
)
) {
console.log(
'Send the email to the presenter.'
);
} else {
console.log('Cancelled sending the email.');
return false;
}
console.log('View terms and conditions');
$events_slct.event_presentation_id =
event_presenter_obj.event_presentation_id;
// $events_slct.event_presentation_obj = $lq__event_presentation_obj;
events_func.email_sign_in__event_presenter({
api_cfg: $ae_api,
to_email:
event_presenter_obj.person_primary_email,
to_name:
event_presenter_obj?.full_name ??
'-- not set --',
base_url: $ae_loc.url_origin,
person_id:
event_presenter_obj?.person_id,
person_passcode:
event_presenter_obj.person_passcode ??
'-- not set --',
event_id:
event_presenter_obj.event_id,
event_session_id:
event_presenter_obj.event_session_id,
event_presentation_id:
event_presenter_obj.event_presentation_id,
event_presenter_id:
event_presenter_obj.event_presenter_id,
session_name:
event_presenter_obj?.event_session_name ??
'-- not set --',
presentation_name:
event_presenter_obj?.event_presentation_name ??
'-- not set --'
});
$events_slct.event_presenter_id =
event_presenter_obj.event_presenter_id;
// $events_slct.event_presenter_obj = event_presenter_obj;
$events_sess.pres_mgmt.show_modal__presenter_agree =
event_presenter_obj.event_presenter_id;
}}
class="btn preset-tonal-secondary border border-secondary-500 hover:preset-filled-secondary-500 my-0.5 transition-all hover:transition-all"
class="btn preset-tonal-success hover:preset-filled-success-500 my-0.5"
class:btn-sm={display_mode != 'default'}
title="Email the access link to the presenter"
title="Agreed to terms and conditions"
>
<span class="fas fa-envelope mx-1"></span>
Email Access Link
<span
class="fas fa-check text-green-500 px-1"
title="Agreed to terms and conditions"
></span>
Agreed
</button>
{:else}
<button
type="button"
disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[
event_presenter_obj
.event_presenter_id
]}
onclick={() => {
console.log('View terms and conditions');
$events_slct.event_presentation_id =
event_presenter_obj.event_presentation_id;
// $events_slct.event_presentation_obj = $lq__event_presentation_obj;
$events_slct.event_presenter_id =
event_presenter_obj.event_presenter_id;
// $events_slct.event_presenter_obj = event_presenter_obj;
$events_sess.pres_mgmt.show_modal__presenter_agree =
event_presenter_obj.event_presenter_id;
}}
class="btn preset-tonal-warning border border-warning-500 hover:preset-filled-warning-500 my-0.5"
class:btn-sm={display_mode != 'default'}
title="View terms and conditions"
>
<span
class="fas fa-times bg-red-500 text-white px-1 mx-1"
title="Not agreed to terms and conditions"
></span>
Not yet agreed
</button>
{/if}
{/if}
{#if $events_loc.pres_mgmt?.require__presenter_agree}
{#if event_presenter_obj?.agree}
<!-- {#if $ae_loc.trusted_access || $events_loc.auth__kv.presenter[event_presenter_obj.event_presenter_id]} -->
<button
type="button"
disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[
event_presenter_obj
.event_presenter_id
]}
onclick={() => {
console.log('View terms and conditions');
$events_slct.event_presentation_id =
event_presenter_obj.event_presentation_id;
// $events_slct.event_presentation_obj = $lq__event_presentation_obj;
<div class="float-right space-2 flex flex-row items-center">
{#if $ae_loc.administrator_access && !event_presenter_obj.person_id}
<button
type="button"
onclick={async () => {
console.log('Add Person');
if (
!confirm(
`Add a new person to the account? You will be able to edit their details after the person record is created.\n\n${$ae_loc.account_name}\nID: ${$slct.account_id}`
)
) {
return;
}
$events_slct.event_presenter_id =
event_presenter_obj.event_presenter_id;
// $events_slct.event_presenter_obj = event_presenter_obj;
let person_data = {
account_id: $slct.account_id,
// user_id: user_obj.user_id,
given_name: 'New',
family_name: 'Presenter',
primary_email:
'test+newpres@oneskyit.com',
code: 'new_presenter',
// Random number between 100000 and 999999
passcode:
Math.floor(Math.random() * 900000) +
100000,
enable: true
};
$events_sess.pres_mgmt.show_modal__presenter_agree =
event_presenter_obj.event_presenter_id;
}}
class="btn preset-tonal-success hover:preset-filled-success-500 my-0.5"
class:btn-sm={display_mode != 'default'}
title="Agreed to terms and conditions"
>
<span
class="fas fa-check text-green-500 px-1"
title="Agreed to terms and conditions"
></span>
Agreed
</button>
{:else}
<button
type="button"
disabled={!$ae_loc.trusted_access &&
!$events_loc.auth__kv.presenter[
event_presenter_obj
.event_presenter_id
]}
onclick={() => {
console.log('View terms and conditions');
let new_person_obj =
await core_func.create_ae_obj__person({
api_cfg: $ae_api,
// user_id: $ae_loc.user_id,
data_kv: person_data,
log_lvl: log_lvl
});
$events_slct.event_presentation_id =
event_presenter_obj.event_presentation_id;
// $events_slct.event_presentation_obj = $lq__event_presentation_obj;
console.log(
'new_person_obj:',
new_person_obj
);
$events_slct.event_presenter_id =
event_presenter_obj.event_presenter_id;
// $events_slct.event_presenter_obj = event_presenter_obj;
$events_sess.pres_mgmt.show_modal__presenter_agree =
event_presenter_obj.event_presenter_id;
}}
class="btn preset-tonal-warning border border-warning-500 hover:preset-filled-warning-500 my-0.5"
class:btn-sm={display_mode != 'default'}
title="View terms and conditions"
>
<span
class="fas fa-times bg-red-500 text-white px-1 mx-1"
title="Not agreed to terms and conditions"
></span>
Not yet agreed
</button>
{/if}
{/if}
<div class="float-right space-2 flex flex-row items-center">
{#if $ae_loc.administrator_access && !event_presenter_obj.person_id}
<button
type="button"
onclick={async () => {
console.log('Add Person');
if (
!confirm(
`Add a new person to the account? You will be able to edit their details after the person record is created.\n\n${$ae_loc.account_name}\nID: ${$slct.account_id}`
)
) {
return;
}
let person_data = {
account_id: $slct.account_id,
// user_id: user_obj.user_id,
given_name: 'New',
family_name: 'Presenter',
primary_email:
'test+newpres@oneskyit.com',
code: 'new_presenter',
// Random number between 100000 and 999999
passcode:
Math.floor(Math.random() * 900000) +
100000,
enable: true
};
let new_person_obj =
await core_func.create_ae_obj__person({
if (new_person_obj) {
// We then need to update the event_presenter with the new person_id.
events_func.update_ae_obj__event_presenter(
{
api_cfg: $ae_api,
// user_id: $ae_loc.user_id,
data_kv: person_data,
event_presenter_id:
event_presenter_obj.event_presenter_id,
data_kv: {
person_id:
new_person_obj.person_id
},
log_lvl: log_lvl
});
console.log(
'new_person_obj:',
new_person_obj
}
);
if (new_person_obj) {
// We then need to update the event_presenter with the new person_id.
events_func.update_ae_obj__event_presenter(
{
api_cfg: $ae_api,
event_presenter_id:
event_presenter_obj.event_presenter_id,
data_kv: {
person_id:
new_person_obj.person_id
},
log_lvl: log_lvl
}
);
}
}}
class:hidden={!$ae_loc.edit_mode}
class="btn btn-sm preset-tonal-warning hover:preset-filled-warning-500"
>
<span class="fas fa-plus mx-1"></span>
Add Person
</button>
{/if}
</div>
</li>
<!-- {/if} -->
{/each}
</ul>
{:else}
<!-- <p class:hidden={display_mode != 'default'}>
No presenters available to show at this time
</p> -->
{/if}
}
}}
class:hidden={!$ae_loc.edit_mode}
class="btn btn-sm preset-tonal-warning hover:preset-filled-warning-500"
>
<span class="fas fa-plus mx-1"></span>
Add Person
</button>
{/if}
</div>
</li>
<!-- {/if} -->
{/each}
</ul>
</section>