Improvement and updates to the event list loading and showing.

This commit is contained in:
Scott Idem
2024-10-01 11:28:50 -04:00
parent 35c901f144
commit d7284d5010
6 changed files with 124 additions and 178 deletions

View File

@@ -73,6 +73,7 @@ export async function load_ae_obj_li__event(
api_cfg, api_cfg,
for_obj_type = 'account', for_obj_type = 'account',
for_obj_id, for_obj_id,
qry_conference = true,
inc_file_li = false, inc_file_li = false,
inc_location_li = false, inc_location_li = false,
inc_presentation_li = false, inc_presentation_li = false,
@@ -86,6 +87,7 @@ export async function load_ae_obj_li__event(
api_cfg: any, api_cfg: any,
for_obj_type: string, for_obj_type: string,
for_obj_id: string, for_obj_id: string,
qry_conference?: boolean,
inc_file_li?: boolean, inc_file_li?: boolean,
inc_location_li?: boolean, inc_location_li?: boolean,
inc_presentation_li?: boolean, inc_presentation_li?: boolean,
@@ -107,15 +109,37 @@ export async function load_ae_obj_li__event(
let params_json: key_val = {}; let params_json: key_val = {};
params_json['and_qry'] = {};
if (qry_conference) {
params_json['and_qry']['conference'] = qry_conference;
}
// console.log('params_json:', params_json); // console.log('params_json:', params_json);
ae_promises.load__event_obj_li = await api.get_ae_obj_li_for_obj_id_crud({ // ae_promises.load__event_obj_li = await api.get_ae_obj_li_for_obj_id_crud({
// api_cfg: api_cfg,
// obj_type: 'event',
// for_obj_type: for_obj_type,
// for_obj_id: for_obj_id,
// use_alt_table: true, // NOTE: This will use the table_name_alt value instead of the table_name value in the API config.
// use_alt_base: false, // NOTE: This will use the base_name_alt value instead of the base_name value
// enabled: enabled,
// hidden: hidden,
// order_by_li: order_by_li,
// limit: limit,
// offset: offset,
// params_json: params_json,
// params: params,
// log_lvl: log_lvl
// })
ae_promises.load__event_obj_li = await api.get_ae_obj_li_for_obj_id_crud_v2({
api_cfg: api_cfg, api_cfg: api_cfg,
obj_type: 'event', obj_type: 'event',
for_obj_type: for_obj_type, for_obj_type: for_obj_type,
for_obj_id: for_obj_id, for_obj_id: for_obj_id,
use_alt_table: true, // NOTE: This will use the table_name_alt value instead of the table_name value in the API config. use_alt_tbl: true, // NOTE: This will use the table_name_alt value instead of the table_name value in the API config.
use_alt_base: false, // NOTE: This will use the base_name_alt value instead of the base_name value // use_alt_mdl: false, // NOTE: This will use the base_name_alt value instead of the base_name value
enabled: enabled, enabled: enabled,
hidden: hidden, hidden: hidden,
order_by_li: order_by_li, order_by_li: order_by_li,

View File

@@ -9,23 +9,23 @@ export async function get_ae_obj_li_for_obj_id_crud_v2(
obj_type, obj_type,
for_obj_type, for_obj_type,
for_obj_id, // NOTE: Changed 2023-12-06 to no longer required for_obj_id, // NOTE: Changed 2023-12-06 to no longer required
use_alt_tbl=false, use_alt_tbl = false, // Alternate table or view name
use_alt_mdl=false, use_alt_mdl = false, // Alternate model name
use_alt_exp=false, use_alt_exp = false, // Alternate export table or view name
inc={}, inc = {},
enabled='enabled', enabled = 'enabled',
hidden='not_hidden', hidden = 'not_hidden',
order_by_li=null, order_by_li = null,
limit=999999, limit = 999999,
offset=0, offset = 0,
// key, // key,
// jwt=null, // jwt = null,
headers={}, headers = {},
params_json=null, // NOTE: This is a JSON object that needs to be safely converted to a string for the params. This is used for the API endpoint. Example: { "fulltext_search": { "default_qry_str": "Search string for default", "address_default_qry_str": "Search string for address", "contact_1_default_qry_str": "Search string for contact_1" } } params_json = null, // NOTE: This is a JSON object that needs to be safely converted to a string for the params. This is used for the API endpoint. Example: { "fulltext_search": { "default_qry_str": "Search string for default", "address_default_qry_str": "Search string for address", "contact_1_default_qry_str": "Search string for contact_1" } }
// json_obj=null, // NOTE: This is a JSON object that needs to be safely converted to a string for the params. This is used for the search endpoint. // json_obj = null, // NOTE: This is a JSON object that needs to be safely converted to a string for the params. This is used for the search endpoint.
params={}, params = {},
return_meta=false, return_meta = false,
log_lvl=1 log_lvl = 1
}: { }: {
api_cfg: any, api_cfg: any,
obj_type: string, obj_type: string,

View File

@@ -102,51 +102,4 @@ if (browser) {
<title>Presentation Management - {$events_loc.title ?? 'Æ loading...'}</title> <title>Presentation Management - {$events_loc.title ?? 'Æ loading...'}</title>
</svelte:head> </svelte:head>
{#if $ae_loc.administrator_access && 1==2}
<section
class="submenu flex flex-row justify-center"
class:hidden={$ae_loc.iframe}
>
<span class="btn-group variant-soft-secondary px-4 py-2">
{#each Object.entries(data.submenu) as [key, item]}
<!-- <a href="/settings/{item.slug}">{item.title}</a> -->
<!-- class:hidden={!$ae_loc.trusted_access && item.access} -->
{#if item.disable}
<button
title={item.title}
class="hover:variant-ghost-secondary"
class:hidden={(!$ae_loc.trusted_access && item.access === 'trusted') || (!$ae_loc.administrator_access && item.access === 'administrator' || item.hide)}
disabled={item.disable}
on:click={() => {
// window.location(item.href);
// href={item.href}
// invalidateAll
goto(item.href, { });
}}
>
{item.name}
</button>
{:else}
<a
href={item.href}
title={item.title}
class="hover:variant-ghost-secondary"
class:hidden={(!$ae_loc.trusted_access && item.access === 'trusted') || (!$ae_loc.administrator_access && item.access === 'administrator' || item.hide)}
class:disabled={item.disable}
>
{item.name}
</a>
{/if}
{/each}
</span>
</section>
{/if}
<!-- <div class="container m-auto"> -->
<slot></slot> <slot></slot>
<!-- </div> -->

View File

@@ -7,7 +7,7 @@ import { events_func } from '$lib/ae_events_functions';
export async function load({ parent }) { export async function load({ parent }) {
let log_lvl = 0; let log_lvl = 1;
let data = await parent(); let data = await parent();
// console.log(`ae_events_pres_mgmt +layout.ts data:`, data); // console.log(`ae_events_pres_mgmt +layout.ts data:`, data);
@@ -30,11 +30,16 @@ export async function load({ parent }) {
} }
if (browser) { if (browser) {
if (log_lvl) {
console.log(`ae_events_pres_mgmt +layout.ts data:`, data);
}
// Should we limit these to event.conference = true? // Should we limit these to event.conference = true?
let load_event_obj_li = events_func.load_ae_obj_li__event({ let load_event_obj_li = events_func.load_ae_obj_li__event({
api_cfg: ae_acct.api, api_cfg: ae_acct.api,
account_id: account_id, for_obj_type: 'account',
params: {enabled: 'enabled', qry__limit: 25}, for_obj_id: account_id,
params: {qry__enabled: 'enabled', qry__limit: 25},
try_cache: true, try_cache: true,
log_lvl: log_lvl log_lvl: log_lvl
}); });

View File

@@ -5,7 +5,6 @@ export let data: any;
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { api } from '$lib/api';
import { liveQuery } from "dexie"; import { liveQuery } from "dexie";
import { db_events } from "$lib/db_events"; import { db_events } from "$lib/db_events";
import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores'; import { ae_loc, ae_sess, ae_api, slct, slct_trigger } from '$lib/ae_stores';
@@ -14,53 +13,20 @@ import { ae_util } from '$lib/ae_utils/ae_utils';
// import Element_data_store from '$lib/element_data_store_v2.svelte'; // import Element_data_store from '$lib/element_data_store_v2.svelte';
let ae_acct = data[$slct.account_id]; let ae_acct = data[$slct.account_id];
// $events_slct.event_obj = ae_acct.slct.event_obj;
// $events_slct.event_obj_li = ae_acct.slct.event_obj_li;
$: lq__event_obj_li = liveQuery(async () => {
let lq__event_obj_li = liveQuery( let results = await db_events.events
() => db_events.events .where('account_id')
.orderBy('start_datetime') .equals(ae_acct.slct.account_id)
.reverse() .reverse()
.toArray() .sortBy('start_datetime')
// .sortBy('start_datetime') return results;
// () => db_events.events });
// .where('conference')
// // .aboveOrEqual(0)
// .equals('true')
// // .above(0)
// .sortBy('name') // Use sortBy() instead of orderBy(). toArray() is also not needed???
// // .sortBy('[priority+name]')
// // .orderBy('name')
// // .offset(10).limit(5)
// // .toArray()
);
// console.log(`lq__event_obj_li:`, $lq__event_obj_li);
let lq__event_obj = liveQuery(
async () => db_events.events
.where('id')
.equals(ae_acct.slct.event_id)
.toArray()
// .first()
// .get($events_slct.event_id)
);
onMount(() => { onMount(() => {
console.log('Events - Presentation Management: +page.svelte'); // console.log('Events - Presentation Management: +page.svelte');
console.log('ae_ slct:', $slct);
let href_url = window.location.href;
// console.log(href_url);
$ae_loc.href_url = href_url;
// console.log(`$ae_loc.href_url = `, $ae_loc.href_url);
console.log(`lq__event_obj = `, $lq__event_obj);
// $events_slct.event_obj = db_events.events.get($events_slct.event_id);
// console.log(`$events_slct.event_obj = `, $events_slct.event_obj?.name);
}); });
</script> </script>
@@ -69,9 +35,6 @@ onMount(() => {
<h2 class="h3">Presentation Management for {$ae_loc.account_name ?? 'Æ loading...'}</h2> <h2 class="h3">Presentation Management for {$ae_loc.account_name ?? 'Æ loading...'}</h2>
<!-- {$events_slct.event_obj.name ?? '--'} -->
<!-- ({$events_slct.event_id}) -->
{#if $ae_loc.administrator_access} {#if $ae_loc.administrator_access}
<h3 class="h4">Administrator Access - Technical Support</h3> <h3 class="h4">Administrator Access - Technical Support</h3>
<p>You are accessing the presentation management system with "administrator" level permissions.</p> <p>You are accessing the presentation management system with "administrator" level permissions.</p>
@@ -80,7 +43,7 @@ onMount(() => {
<p>You are accessing the presentation management system with "trusted" level permissions.</p> <p>You are accessing the presentation management system with "trusted" level permissions.</p>
{:else if !$ae_loc.trusted_access} {:else if !$ae_loc.trusted_access}
<h3 class="h4">Restricted Access</h3> <h3 class="h4">Restricted Access</h3>
<p>You are accessing to the presentation management system is limited</p> <p>You access to the presentation management system is limited.</p>
{/if} {/if}
<!-- <Element_data_store <!-- <Element_data_store
@@ -106,78 +69,83 @@ onMount(() => {
/> --> /> -->
{#await ae_acct.slct.event_obj_li} {#if $lq__event_obj_li}
<div class="flex flex-row items-center justify-center"> <!-- <div class="flex flex-row items-center justify-center">
<span class="fas fa-spinner fa-spin mx-1"></span>
<span>Loading...</span>
</div>
{:then}
<div class="flex flex-row items-center justify-center">
<span class="fas fa-check text-green-500 mx-1"></span> <span class="fas fa-check text-green-500 mx-1"></span>
<span>Loaded</span> <span>Loaded</span>
</div> </div> -->
{#if $lq__event_obj_li.length}
{#if ae_acct.slct.event_obj_li && $lq__event_obj_li} <ul
<ul class="space-y-2"
class="space-y-2" >
> {#each $lq__event_obj_li as event_obj}
{#each $lq__event_obj_li as event_obj} <li
<li> class:dim={event_obj?.hide}
<!-- We do not want to show events more than 8 months old. -->
{#if (
new Date(event_obj.start_datetime).getTime())
> >
(new Date().getTime() - (1000 * 60 * 60 * 24 * 30 * 8)) <!-- We do not want to show events more than 8 months old. -->
|| $ae_loc.trusted_access {#if (
} new Date(event_obj.start_datetime ?? '').getTime())
<!-- {#if $events_slct.event_id === event_obj.event_id_random} -->
<a
href="/events_pres_mgmt/event/{event_obj.event_id_random}"
class="btn btn-md variant-ghost-primary hover:variant-filled-primary hover:underline"
on:pointerover={() => {
// When the cursor is hovering we want to set the event_id and event_obj
// $events_slct.event_id = event_obj.event_id_random;
// $events_slct.event_obj = event_obj;
}}
>
{ae_util.iso_datetime_formatter(event_obj.start_datetime, 'date_long')}
-
{event_obj.name}
</a>
{:else}
<button
disabled
class="btn btn-md variant-ghost-surface"
> >
{ae_util.iso_datetime_formatter(event_obj.start_datetime, 'date_long')} (new Date().getTime() - (1000 * 60 * 60 * 24 * 30 * 8))
- || $ae_loc.trusted_access
{event_obj.name} }
</button>
{/if}
{#if $ae_loc.trusted_access} <!-- {#if $events_slct.event_id === event_obj.event_id_random} -->
<a <a
data-sveltekit-reload href="/events_pres_mgmt/event/{event_obj.event_id_random}"
href="/event/{event_obj.event_id_random}" class="btn btn-md variant-ghost-primary hover:variant-filled-primary"
class="btn btn-sm variant-ghost-warning hover:variant-filled-warning hover:underline" >
> {ae_util.iso_datetime_formatter(event_obj.start_datetime, 'date_long')}
Manage -
</a> {event_obj.name}
{/if} </a>
</li> {:else}
{/each} <button
</ul> disabled
class="btn btn-md variant-ghost-surface"
>
{ae_util.iso_datetime_formatter(event_obj.start_datetime, 'date_long')}
-
{event_obj.name}
</button>
{/if}
{#if $ae_loc.trusted_access}
<a
data-sveltekit-reload
href="/event/{event_obj.event_id_random}"
class="btn btn-sm variant-ghost-warning hover:variant-filled-warning"
>
Manage
</a>
{/if}
</li>
{/each}
</ul>
{:else}
<div class="flex flex-row items-center justify-center">
<span class="fas fa-exclamation-triangle text-red-500 mx-1"></span>
<span>No events available to display.</span>
<span class="fas fa-exclamation-triangle text-red-500 mx-1"></span>
</div>
{/if}
{:else}
<div class="flex flex-row items-center justify-center">
<span class="fas fa-spinner fa-spin mx-1"></span>
<span>Loading...</span>
</div>
<!-- {/if} -->
{/if} {/if}
{:catch error} <!-- {:catch error}
<div class="text-red-800"> <div class="text-red-800">
<span class="fas fa-exclamation-triangle text-xl"></span> <span class="fas fa-exclamation-triangle text-xl"></span>
<span>Error: {error.message}</span> <span>Error: {error.message}</span>
</div> </div>
{/await} {/await} -->
</section> </section>

View File

@@ -31,8 +31,4 @@ export async function load({ parent }) {
// data[account_id] = ae_acct; // data[account_id] = ae_acct;
return data; return data;
// return {
// ae_events_pres_mgmt_page_ts: true,
// };
} }