From b0f2e2ccdfd6aca763c146cc052b82480583d43e Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Fri, 22 Mar 2024 19:16:14 -0400 Subject: [PATCH] Done for the day --- src/lib/ae_events_functions.ts | 33 + src/lib/element_ae_crud.svelte | 366 +++++++++++ src/lib/element_input_v2.svelte | 574 ++++++++++++++++++ .../exhibit/[slug]/leads_list.svelte | 32 +- .../exhibit/[slug]/leads_manage.svelte | 180 +++++- .../exhibit/[slug]/leads_view_lead.svelte | 198 +++++- 6 files changed, 1357 insertions(+), 26 deletions(-) create mode 100644 src/lib/element_ae_crud.svelte create mode 100644 src/lib/element_input_v2.svelte diff --git a/src/lib/ae_events_functions.ts b/src/lib/ae_events_functions.ts index 750268db..bccc8d48 100644 --- a/src/lib/ae_events_functions.ts +++ b/src/lib/ae_events_functions.ts @@ -346,6 +346,38 @@ async function handle_load_ae_obj_li__exhibit({api_cfg, event_id, params={}, try // } +async function handle_load_ae_obj_id__exhibit_tracking({api_cfg, exhibit_tracking_id, try_cache=false}) { + console.log(`*** handle_load_ae_obj_id__exhibit_tracking() *** exhibit_tracking_id=${exhibit_tracking_id}`); + + let params = {}; + + // $events_sess.exhibits.status_load__exhibit_tracking_obj = 'loading'; + ae_promises.load__event_exhibit_tracking_obj = await api.get_ae_obj_id_crud({ + api_cfg: api_cfg, + obj_type: 'event_exhibit_tracking', + obj_id: exhibit_tracking_id, // NOTE: This is the FQDN, not normally the ID. + use_alt_table: false, // 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 in the API config. + params: params, + log_lvl: 0 + }) + .then(function (exhibit_tracking_obj_get_result) { + if (exhibit_tracking_obj_get_result) { + // This is expecting a list + handle_db_save_ae_obj_li__exhibitor_tracking({obj_type: 'event_exhibit_tracking', obj_li: [exhibit_tracking_obj_get_result]}); + return exhibit_tracking_obj_get_result; + } else { + console.log('No results returned.'); + return null; + } + }) + .catch(function (error) { + console.log('No results returned or failed.', error); + }); + + return ae_promises.load__event_exhibit_tracking_obj; +} + // Updated 2024-03-19 async function handle_load_ae_obj_li__exhibit_tracking({api_cfg, exhibit_id, params={}, try_cache=true}: {api_cfg: any, exhibit_id: any, params: any, try_cache?: boolean}) { @@ -655,6 +687,7 @@ let export_obj = { handle_search__event_badge: handle_search__event_badge, handle_load_ae_obj_id__exhibit: handle_load_ae_obj_id__exhibit, handle_load_ae_obj_li__exhibit: handle_load_ae_obj_li__exhibit, + handle_load_ae_obj_id__exhibit_tracking: handle_load_ae_obj_id__exhibit_tracking, handle_load_ae_obj_li__exhibit_tracking: handle_load_ae_obj_li__exhibit_tracking, handle_create_ae_obj__exhibit_tracking: handle_create_ae_obj__exhibit_tracking, }; diff --git a/src/lib/element_ae_crud.svelte b/src/lib/element_ae_crud.svelte new file mode 100644 index 00000000..0055c519 --- /dev/null +++ b/src/lib/element_ae_crud.svelte @@ -0,0 +1,366 @@ + + + +
+ + + + + + + + + + + {#if field_type == 'template'} + + {:else if field_type == 'button'} + + {field_value} + {:else if field_type == 'text'} + + {:else if field_type == 'textarea'} + + {:else} + + {/if} + {#if allow_null} + + {/if} + + + + +
+ {#await ae_promises.api_update__ae_obj} +
Processing...
+ {:then} + {#if patch_result} +
{patch_result}
+ {:else} + + {/if} + {/await} +
+
+
+ + + diff --git a/src/lib/element_input_v2.svelte b/src/lib/element_input_v2.svelte new file mode 100644 index 00000000..cbdaea00 --- /dev/null +++ b/src/lib/element_input_v2.svelte @@ -0,0 +1,574 @@ + + +
+ +{#if type === 'email' || type === 'date' || type === 'number' || type === 'tel' || type === 'text' || type === 'time' || type === 'url' } + {#if (content_layout == 'label_start' && label)} + + {/if} + + + + {#if (content_layout != 'label_start' && label)} + + {/if} + + {description} + +{:else if type === 'date_time' } + {#if (content_layout == 'label_start' && label)} + {label} + + {/if} + +
+ {#if label_begin} + + {/if} + + + + {#if !label_begin} + + {/if} +
+ +
+ {#if label_begin} + + {/if} + + + + {#if !label_begin} + + {/if} +
+ + + {#if (content_layout != 'label_start' && label)} + {label} + + {/if} + + {description} + +{:else if type === 'checkbox' } + {#if checkbox_none} + {#if !value} + {checked='checked'} + {/if} + + {/if} + {#if checkbox_li.length} + {#if (content_layout == 'label_start' && label)} + {label} + {/if} + + {#each Object.entries(checkbox_li) as [li_key, li_value]} + {#if li_key.toString() === value.toString() } + + {:else} + + {/if} + {/each} + + {#if (content_layout != 'label_start' && label)} + {label} + {/if} + {:else} + {#if label_begin} + + {/if} + + + {/if} + + {description} + +{:else if type === 'radio' } + {#if radio_none} + {#if !value} + {checked='checked'} + {/if} + + {/if} + {#if radio_li} + {#if (content_layout == 'label_start' && label)} + {label}: + {/if} + + + {#each Object.entries(radio_li) as [li_key, li_value]} + {#if value === null} + + {:else if ( li_key.toString() === value.toString() || (li_key == 'true' && value == true) || (li_key == 'false' && value == false) ) } + + {:else} + + {/if} + + + {/each} + + + {#if !label_begin} + {label}: + {/if} + {:else} + {#if label_begin} + + {/if} + + + + {#if !label_begin} + + {/if} + {/if} + + {description} + +{:else if type === 'textarea'} + {#if label_begin} + + {/if} + + {#if value_new_line}
{/if} + + + + {#if !label_begin} + + {/if} + + {description} + +{:else if type === 'hidden'} + + +{:else if type === 'select'} + {#if label_begin} + + {/if} + + + + {#if !label_begin} + + {/if} + + {description} +{/if} + + + + +
+ + + \ No newline at end of file diff --git a/src/routes/events_leads/exhibit/[slug]/leads_list.svelte b/src/routes/events_leads/exhibit/[slug]/leads_list.svelte index 8b150d86..6320db2a 100644 --- a/src/routes/events_leads/exhibit/[slug]/leads_list.svelte +++ b/src/routes/events_leads/exhibit/[slug]/leads_list.svelte @@ -28,37 +28,49 @@ let event_exhibit_obj = liveQuery( // .where('event_exhibit_id_random') // .equals($events_slct.exhibit_id) // // .above(0) -// .sortBy('created_on') // Use sortBy() instead of orderBy(). toArray() is also not needed??? +// .sortBy('created_on') // // .orderBy('name') // // .offset(10).limit(5) // // .toArray() // ); - // Testing examples: +// Use sortBy() instead of orderBy() +// toArray() is also not needed??? + // .where({event_exhibit_id_random: $events_slct.exhibit_id, enable: true, hide: false}) // .where({event_exhibit_id_random: $events_slct.exhibit_id}) // .where('event_exhibit_id_random').equals($events_slct.exhibit_id) // .and('enable').equals(true) // .reverse() -// .sortBy('updated_on') // Use sortBy() instead of orderBy(). - +// .sortBy('updated_on') // .reverse() -// .sortBy('created_on') // Use sortBy() instead of orderBy(). toArray() is also not needed??? +// .sortBy('created_on') // .toArray() +// .sortBy('created_on') +// .reverse() +// .sortBy('priority') // , 'sort', 'created_on', 'updated_on') +// () => db_events.exhibits.toArray() // Version 2: This needs work... // This is using Dexie JS as a wrapper for IndexedDB // This should only show exhibit_tracking objects that are enabled and not hidden. -// The final results should be sorted by priority, sort, created_on DESC, updated_on DESC -let event_exhibit_tracking_obj_li = liveQuery( - // () => db_events.exhibits.toArray() +// The final results should be sorted by: priority DESC, sort ASC, created_on DESC, updated_on DESC +$: event_exhibit_tracking_obj_li = liveQuery( () => db_events.exhibit_tracking .where({event_exhibit_id_random: $events_slct.exhibit_id}) - // .and('enable').equals(true) + .and((x) => (x.enable === true && x.hide === false)) .reverse() - .sortBy('created_on') // Use sortBy() instead of orderBy(). + .sortBy('priority') + // .orderBy("priority") + // .orderBy("sort") + // .orderBy("created_on", "desc") + // .orderBy("updated_on", "desc") + // .sortBy('priority') // Initial sort + // .thenBy('created_on', 'desc') + // .thenBy('sort') // Secondary sort + // .thenBy('updated_on', 'desc') ); diff --git a/src/routes/events_leads/exhibit/[slug]/leads_manage.svelte b/src/routes/events_leads/exhibit/[slug]/leads_manage.svelte index 279287e6..30b9db96 100644 --- a/src/routes/events_leads/exhibit/[slug]/leads_manage.svelte +++ b/src/routes/events_leads/exhibit/[slug]/leads_manage.svelte @@ -1,19 +1,32 @@