Making things look better. Now with a person look up for the presenter record. Wrapping up for the day.

This commit is contained in:
Scott Idem
2024-06-26 18:19:17 -04:00
parent 4d7e48a170
commit 20e1c46461
4 changed files with 239 additions and 20 deletions

View File

@@ -15,6 +15,7 @@ import { api } from '$lib/api';
import Element_ae_crud from '$lib/element_ae_crud.svelte';
// import Element_data_store from '$lib/element_data_store.svelte';
import { core_func } from '$lib/ae_core_functions';
import { ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
import { db_events } from "$lib/db_events";
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
@@ -44,6 +45,9 @@ let lq__event_file_obj_li = liveQuery(
async () => await db_events.files.where('event_presenter_id_random').equals($events_slct.event_presenter_id).toArray()
);
$slct.person_obj_kv = {}; // This is intended for the POC lookup list when generated.
// $events_slct.event_presenter_obj = $lq__event_presenter_obj;
// $events_sess.pres_mgmt.disable_submit__opt_out = false;
@@ -435,10 +439,12 @@ async function handle_delete__event_file({event_file_id}) {
<a
href="mailto:{$events_slct.presenter_obj.email}"
class="text-blue-500"
title="Presenter's email address"
>{$events_slct.presenter_obj.email}</a>
</Element_ae_crud>
{#if $events_slct.presenter_obj.person_primary_email != $events_slct.presenter_obj.email}
<div>
<Element_ae_crud
api_cfg={$ae_api}
object_type={'person'}
@@ -450,15 +456,59 @@ async function handle_delete__event_file({event_file_id}) {
hide_edit_btn={!$ae_loc.trusted_access}
outline_element={false}
show_crud={false}
display_inline={false}
display_inline={true}
class_li={''}
>
<span class="fas fa-star-of-life"></span>
<span class="fas fa-envelope"></span>
<a
href="mailto:{$events_slct.presenter_obj.person_primary_email}"
class="text-blue-500"
title="Person's primary email address"
>{$events_slct.presenter_obj.person_primary_email}</a>
</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={$events_slct.presenter_obj.person_id_random}
field_name={'primary_email'}
field_type={'text'}
field_value={$events_slct.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: 1})
.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>
</div>
{/if}
</li>
@@ -516,7 +566,8 @@ async function handle_delete__event_file({event_file_id}) {
class_li={''}
>
<span class="fas fa-user-secret"></span>
{$events_slct.presenter_obj.person_passcode ?? '-- passcode not set --'} (your passcode)
Passcode:
{$events_slct.presenter_obj.person_passcode ?? '-- passcode not set --'}
</Element_ae_crud>
<!-- <span class="fas fa-user-secret"></span>
@@ -532,6 +583,117 @@ async function handle_delete__event_file({event_file_id}) {
Edit
</button> -->
</li>
<li>
<!-- Allow for linking the presenter to a person record. -->
{#if $ae_loc.administrator_access}
<Element_ae_crud
trigger_patch={ae_triggers.update_person}
api_cfg={$ae_api}
object_type={'event_presenter'}
object_id={$events_slct.presenter_obj?.event_presenter_id_random}
field_name={'person_id_random'}
field_type={'select'}
field_value={$events_slct.presenter_obj.person_id_random}
select_option_li={$slct.person_obj_kv}
allow_null={$ae_loc.administrator_access}
hide_edit_btn={true}
outline_element={false}
show_crud={ae_tmp.show__edit_person}
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: 1})
.then(function (load_results) {
// Maybe reload page?
// window.location.reload();
});
}}
>
<span class="fas fa-user-check"></span>
<!-- <span class="fas fa-link"></span> -->
Person link
{#if $events_slct.presenter_obj.person_id_random}
<span class="fas fa-link"></span>
{$events_slct.presenter_obj.person_id_random}
{:else}
<span class="fas fa-unlink"></span>
-- person not set --
{/if}
{#if ae_tmp?.show__edit_person}
{#await $slct.person_obj_li}
<span class="fas fa-spinner fa-spin mx-1"></span>
{:then person_obj_li}
<!-- loaded -->
{/await}
<!-- {/if} -->
<!-- {#if ae_tmp.show__edit_person} -->
<button
type="button"
on:click={() => {
console.log('Cancel the person for the presenter.');
ae_tmp.person_id = null;
ae_tmp.show__edit_person = false;
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
>
<span class="fas fa-times mx-1"></span>
Cancel
</button>
{:else}
<!-- {/if} -->
<button
type="button"
on:click={async () => {
console.log('Edit the person for the presenter.');
let params = {
qry__limit: 300,
}
$slct.person_obj_li = core_func.handle_load_ae_obj_li__person({api_cfg: $ae_api, account_id: $slct.account_id, params: params})
.then(function (load_results) {
console.log(`Loaded person_obj_li:`, load_results);
// We need to make this ready for the select option list. Convert the list to a key value pair with the person_id_random as the key. We also need to set the option text value to: full_name (primary_email)
if (load_results) {
let person_obj_li = load_results;
let person_obj_kv = {};
person_obj_kv[''] = '-- Select a person --';
person_obj_li.forEach((person_obj) => {
let option_text = `${person_obj.full_name} (${person_obj.primary_email})`;
person_obj_kv[person_obj.person_id_random] = option_text;
});
$slct.person_obj_kv = person_obj_kv;
}
$slct.person_obj_kv = $slct.person_obj_kv;
console.log(`$slct.person_obj_kv = `, $slct.person_obj_kv);
return load_results;
});
ae_tmp.person_id = $events_slct.presenter_obj?.person_id_random;
ae_tmp.show__edit_person = true;
}}
class="btn btn-sm variant-soft-warning hover:variant-ghost-warning"
>
<span class="fas fa-edit mx-1"></span>
Edit
</button>
{/if}
</Element_ae_crud>
{/if}
</li>
</ul>
<h3 class="h4">