Moving files around

This commit is contained in:
Scott Idem
2024-09-27 17:42:46 -04:00
parent 6a8148228f
commit 58928d07eb
7 changed files with 3 additions and 3 deletions

View File

@@ -0,0 +1,297 @@
<script lang="ts">
// Imports
import type { key_val } from '$lib/ae_stores';
// import { ae_util } from '$lib/ae_utils/ae_utils';
// import { api, send_email } from '$lib/api';
// import Element_ae_crud from '$lib/element_ae_crud.svelte';
// import Element_data_store from '$lib/element_data_store_v2.svelte';
import { liveQuery } from "dexie";
import { core_func } from '$lib/ae_core_functions';
import { db_events } from "$lib/db_events";
import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
import { events_loc, events_sess, events_slct, events_trigger, events_trig_kv } from '$lib/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
import { ae_util } from '$lib/ae_utils/ae_utils';
// Exports
export let container_class_li: string|Array<string> = [];
export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
export let link_to_type: string;
export let link_to_id: string;
export let lq__event_presenter_obj_li: any;
export let log_lvl: number = 0;
// if (log_lvl) {
// console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
// }
// Variables
// let ae_promises: key_val = {};
let ae_tmp: key_val = {};
// let ae_triggers: key_val = {};
// Functions and Logic
let lq__event_presentation_obj = liveQuery(
() => db_events.presentations.get($events_slct.event_presentation_id)
);
</script>
<div
class="float-right flex flex-row items-center"
>
<button
type="button"
on:click={() => {
console.log('*** Refresh button clicked ***');
ae_tmp.show__file_li = false;
console.log(`$lq__event_presenter_obj_li:`, $lq__event_presenter_obj_li);
events_func.load_ae_obj_li__event_presenter({
api_cfg: $ae_api,
for_obj_type: link_to_type,
for_obj_id: link_to_id,
log_lvl: log_lvl,
});
}}
class="btn btn-sm p-1 m-1 variant-soft-tertiary hover:variant-ghost-warning transition hover:transition-all *:hover:inline"
class:hidden={!$ae_loc.edit_mode || !$ae_loc.trusted_access || display_mode != 'default'}
title="Refresh the list of presenters"
>
<span class="fas fa-sync-alt m-1"></span>
<span class="hidden">
Presenters
</span>
</button>
</div>
<section class="ae_comp event_presenter_obj_li {container_class_li}">
<h3 class="h5">
Presenters:
<span class="font-bold bg-success-100 px-4 border rounded-lg border-success-200"
class:hidden={!$lq__event_presenter_obj_li?.length}
title="Presenters: {$lq__event_presenter_obj_li?.length ?? 'None'}"
>
<span class="fas fa-user m-1"></span>
{@html ($lq__event_presenter_obj_li?.length ? `${$lq__event_presenter_obj_li?.length}&times;` : '')}
</span>
{#if !$lq__event_presenter_obj_li?.length}
<span class="text-sm text-gray-500">
No presenters available to show at this time
</span>
{/if}
</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_random == event_presentation_obj.event_presentation_id_random} -->
<li
class:dim={event_presenter_obj?.hide}
>
<!-- href="/events_pres_mgmt/presenter/{event_presenter_obj.event_presenter_id_random}" -->
<a
href="/events/{event_presenter_obj.event_id_random}/presenter/{event_presenter_obj.event_presenter_id_random}"
class="btn variant-ghost-primary hover:variant-filled-primary font-bold min-w-64 max-w-96 my-0.5 overflow-hidden"
class:btn-sm={display_mode != 'default'}
title="Person ID: {event_presenter_obj.person_id_random}; Email: {event_presenter_obj.email}"
>
{#if event_presenter_obj?.given_name && event_presenter_obj?.given_name != 'Group' }
<span class="fas fa-user m-0.5"></span>
{:else if event_presenter_obj?.given_name == 'Group'}
<span class="fas fa-users m-0.5"></span>
{:else}
<span class="fas fa-user-slash m-0.5"></span>
{/if }
{#if event_presenter_obj.priority}
<span class="fas fa-star text-yellow-500 text-xs m-0.5"></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 variant-glass-success hover:variant-filled-success" title="{event_presenter_obj.file_count} files">
<span class="fas fa-file-alt mx-1"></span>
{event_presenter_obj?.file_count}&times;
<!-- {event_presenter_obj?.file_count ? `(${event_presenter_obj?.file_count}&times; files)` : '(0 files)'} -->
</span>
{/if}
</a>
{#if event_presenter_obj?.email && ($ae_loc.administrator_access || !$events_loc.auth__person?.id)}
<button
type="button"
on:click={() => {
console.log('Email the access link');
if (!event_presenter_obj.email) {
alert('No email address found for this presenter.');
return;
}
if (confirm(`This will send the sign in email to ${event_presenter_obj.email}`)) {
console.log('Send the email to the presenter.');
} else {
console.log('Cancelled sending the email.');
return false;
}
events_func.email_sign_in__event_presenter(
{
api_cfg: $ae_api,
to_email: event_presenter_obj.email,
to_name: event_presenter_obj?.full_name?? '-- not set --',
base_url: $ae_loc.url_origin,
person_id: event_presenter_obj?.person_id_random?? '-- not set --',
person_passcode: event_presenter_obj.person_passcode?? '-- not set --',
event_session_id: event_presenter_obj.event_session_id_random,
event_presentation_id: event_presenter_obj.event_presentation_id_random,
event_presenter_id: event_presenter_obj.event_presenter_id_random,
session_name: event_presenter_obj?.event_session_name?? '-- not set --',
presentation_name: event_presenter_obj?.event_presentation_name?? '-- not set --',
}
);
}}
class="btn variant-ghost-secondary hover:variant-filled-secondary 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_random]} -->
<button
type="button"
disabled={!$ae_loc.trusted_access && !$events_loc.auth__kv.presenter[event_presenter_obj.event_presenter_id_random]}
on:click={
() => {
console.log('View terms and conditions');
$events_slct.event_presentation_id = event_presenter_obj.event_presentation_id_random;
// $events_slct.event_presentation_obj = $lq__event_presentation_obj;
$events_slct.event_presenter_id = event_presenter_obj.event_presenter_id_random;
// $events_slct.event_presenter_obj = event_presenter_obj;
$events_sess.pres_mgmt.show_modal__presenter_agree = event_presenter_obj.event_presenter_id_random;
}
}
class="btn variant-soft-success hover:variant-filled-success 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_random]}
on:click={
() => {
console.log('View terms and conditions');
$events_slct.event_presentation_id = event_presenter_obj.event_presentation_id_random;
// $events_slct.event_presentation_obj = $lq__event_presentation_obj;
$events_slct.event_presenter_id = event_presenter_obj.event_presenter_id_random;
// $events_slct.event_presenter_obj = event_presenter_obj;
$events_sess.pres_mgmt.show_modal__presenter_agree = event_presenter_obj.event_presenter_id_random;
}
}
class="btn variant-ghost-warning hover:variant-filled-warning 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_random}
<button
type="button"
on:click={async () => {
console.log('Add Person');
let person_data = {
account_id_random: $slct.account_id,
// user_id_random: user_obj.user_id_random,
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.handle_create_ae_obj__person({
api_cfg: $ae_api,
// user_id: $ae_loc.user_id,
data_kv: person_data,
log_lvl: log_lvl,
})
console.log('new_person_obj:', 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_random,
data_kv: {person_id_random: new_person_obj.person_id_random},
log_lvl: log_lvl
})
}}
class:hidden={!$ae_loc.edit_mode}
class="btn btn-sm variant-soft-warning hover:variant-filled-warning"
>
<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}
</section>
<style>
</style>

View File

@@ -0,0 +1,58 @@
<script lang="ts">
// Imports
import Comp_event_presenter_obj_li from './ae_comp__event_presenter_obj_li.svelte';
import { liveQuery } from "dexie";
import { db_events } from "$lib/db_events";
// Exports
export let container_class_li: string|Array<string> = [];
export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
export let event_presenter_id_random_li: Array<string> = [];
export let link_to_type: string;
export let link_to_id: string;
// export let lq__event_presentation_obj
export let log_lvl: number = 0;
if (log_lvl) {
console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
}
// Variables
// let ae_promises: key_val = {};
// let ae_tmp: key_val = {};
// let ae_triggers: key_val = {};
let dq__where_type_id_val: string = `${link_to_type}_id_random`;
let dq__where_eq_id_val: string = link_to_id;
// Functions and Logic
$: lq__event_presenter_obj_li = liveQuery(async () => {
if (link_to_type && link_to_id) {
let results = await db_events.presenters
.where(dq__where_type_id_val)
.equals(dq__where_eq_id_val)
.sortBy('name')
return results;
} else if (event_presenter_id_random_li.length > 0) {
let results = await db_events.presenters
.bulkGet(event_presenter_id_random_li);
return results;
} else {
return null;
}
});
</script>
<Comp_event_presenter_obj_li
container_class_li={container_class_li}
display_mode={display_mode}
link_to_type={link_to_type}
link_to_id={link_to_id}
lq__event_presenter_obj_li={lq__event_presenter_obj_li}
log_lvl={log_lvl}
>
</Comp_event_presenter_obj_li>

View File

@@ -0,0 +1,162 @@
<script lang="ts">
// Imports
// import type { key_val } from '$lib/ae_stores';
import { ae_util } from '$lib/ae_utils/ae_utils';
// import { liveQuery } from "dexie";
// import { db_events } from "$lib/db_events";
// import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$lib/ae_stores';
// import { events_loc, events_sess, events_slct, events_trigger, events_trig_kv } from '$lib/ae_events_stores';
// import { events_func } from '$lib/ae_events_functions';
// Exports
export let container_class_li: string|Array<string> = [];
export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
export let link_to_type: string;
export let link_to_id: string;
export let event_presenter_id_random_li: Array<string>;
export let lq__event_presenter_obj_li: any;
export let log_lvl: number = 0;
// export let allow_basic: boolean = false;
// export let allow_moderator: boolean = false;
export let show_presentation_fields: boolean = false;
export let show_session_fields: boolean = false;
// if (log_lvl) {
// console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
// }
// Variables
// let ae_promises: key_val = {};
// let ae_tmp: key_val = {};
// let ae_triggers: key_val = {};
// Functions and Logic
// let lq__event_presenter_obj = liveQuery(
// () => db_events.presenters.get($events_slct.event_presenter_id)
// );
// let lq_kv__event_presenter_obj_li = liveQuery(
// () => db_events.presenters
// .bulkGet(event_presenter_id_random_li)
// );
</script>
<section class="ae_comp event_presenter_obj_tbl container {container_class_li}">
{#if $lq__event_presenter_obj_li?.length}
<div class="overflow-auto space-y-2">
<h2 class="h3">
<span class="text-base">
Results:
</span>
{#if $lq__event_presenter_obj_li.length}
<span class="text-3xl font-bold bg-success-100 px-4 border rounded-lg border-success-200"
title="Count {$lq__event_presenter_obj_li.length ?? 'None'}"
>
<span class="fas fa-list-ol mx-4"></span>
{$lq__event_presenter_obj_li.length ?? 'None'}
</span>
{/if}
</h2>
<table
class="table table-auto table-striped table-hover w-full text-xs lg:text-sm"
>
<thead>
<tr>
<th class="px-4 py-2">Name</th>
<th class="px-4 py-2">Email</th>
<th class="px-4 py-2">Agree</th>
<th class="px-4 py-2">Files</th>
{#if show_session_fields}
<th class="px-4 py-2">
Session
</th>
<th class="px-4 py-2">Start datetime</th>
{/if}
{#if show_presentation_fields}
<th class="px-4 py-2">Presentation</th>
<th class="px-4 py-2">Presentation time</th>
{/if}
<th class="px-4 py-2">
Updated On
</th>
</tr>
</thead>
<tbody
class="">
{#each $lq__event_presenter_obj_li as event_presenter_obj}
<tr
class:dim={event_presenter_obj?.hide}>
<td class="px-4 py-2">
<span class="fas fa-user"></span>
<a
href="/events/{event_presenter_obj?.event_id_random}/presenter/{event_presenter_obj?.event_presenter_id_random}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.full_name}
</a>
</td>
<td class="px-4 py-2">
<span class="fas fa-envelope"></span>
<a
href="mailto:{event_presenter_obj?.email}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.email}
</a>
</td>
<td class="px-4 py-2">{event_presenter_obj?.agree ? 'Yes' : 'No'}</td>
<td class="px-4 py-2">{event_presenter_obj?.file_count ?? '0'}</td>
{#if show_session_fields}
<td class="px-4 py-2 lg:text-xs">
<span class="fas fa-chalkboard-teacher"></span>
<!-- href="/events/{event_presenter_obj?.event_id_random}/session/{event_presenter_obj?.event_session_id_random}" -->
<a
href="/events_pres_mgmt/session/{event_presenter_obj?.event_session_id_random}"
class="text-blue-500 underline hover:text-blue-800"
>
{event_presenter_obj?.event_session_name}
</a>
</td>
<td class="px-4 py-2 text-sm">{ae_util.iso_datetime_formatter(event_presenter_obj?.event_session_start_datetime, 'datetime_12_no_seconds')}</td>
{/if}
{#if show_presentation_fields}
<td class="px-4 py-2 lg:text-xs">{event_presenter_obj?.event_presentation_name}</td>
<td class="px-4 py-2 lg:text-xs">{ae_util.iso_datetime_formatter(event_presenter_obj?.event_presentation_start_datetime, 'time_12_short')}</td>
{/if}
<td class="px-4 py-2 text-sm">{ae_util.iso_datetime_formatter(event_presenter_obj?.updated_on, 'datetime_12_no_seconds')}</td>
</tr>
{/each}
</tbody>
</table>
</div>
{:else}
<p class="text-sm">
No presenters available to show.
</p>
{/if}
</section>
<style>
.dim {
opacity: 0.5;
color: #999;
}
</style>

View File

@@ -0,0 +1,64 @@
<script lang="ts">
// Imports
import Comp_event_presenter_obj_tbl from './ae_comp__event_presenter_obj_tbl.svelte';
import { liveQuery } from "dexie";
import { db_events } from "$lib/db_events";
// Exports
export let container_class_li: string|Array<string> = [];
export let display_mode: string = 'default'; // 'default', 'compact', 'minimal', 'launcher'
export let event_presenter_id_random_li: Array<string>;
export let link_to_type: string;
export let link_to_id: string;
// export let lq__event_presentation_obj
export let log_lvl: number = 0;
export let show_presentation_fields: boolean = false;
export let show_session_fields: boolean = false;
if (log_lvl) {
console.log(`link_to_type: ${link_to_type}; link_to_id: ${link_to_id}`);
}
// Variables
// let ae_promises: key_val = {};
// let ae_tmp: key_val = {};
// let ae_triggers: key_val = {};
let dq__where_type_id_val: string = `${link_to_type}_id_random`;
let dq__where_eq_id_val: string = link_to_id;
// Functions and Logic
$: lq__event_presenter_obj_li = liveQuery(async () => {
if (link_to_type && link_to_id) {
let results = await db_events.presenters
.where(dq__where_type_id_val)
.equals(dq__where_eq_id_val)
.sortBy('name')
return results;
} else if (event_presenter_id_random_li.length > 0) {
let results = await db_events.presenters
.bulkGet(event_presenter_id_random_li);
return results;
} else {
return null;
}
});
</script>
<Comp_event_presenter_obj_tbl
container_class_li={container_class_li}
display_mode={display_mode}
link_to_type={link_to_type}
link_to_id={link_to_id}
event_presenter_id_random_li={event_presenter_id_random_li}
lq__event_presenter_obj_li={lq__event_presenter_obj_li}
show_presentation_fields={show_presentation_fields}
show_session_fields={show_session_fields}
log_lvl={log_lvl}
>
</Comp_event_presenter_obj_tbl>

View File

@@ -11,7 +11,7 @@ import { ae_util } from '$lib/ae_utils/ae_utils';
// import Element_data_store from '$lib/element_data_store_v2.svelte';
import Comp_event_file_obj_tbl from '../../../events_pres_mgmt/ae_comp__event_file_obj_tbl.svelte';
import Comp_event_session_obj_tbl from '../../../events_pres_mgmt/ae_comp__event_session_obj_tbl_wrapper.svelte';
import Comp_event_presenter_obj_tbl from '../../../events_pres_mgmt/ae_comp__event_presenter_obj_tbl_wrapper.svelte';
import Comp_event_presenter_obj_tbl from './../presenter/ae_comp__event_presenter_obj_tbl_wrapper.svelte';
import { liveQuery } from "dexie";
// import { core_func } from '$lib/ae_core_functions';