The Launcher works pretty well. Except for the native app...
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "osit-aether-app-svelte",
|
||||
"version": "3.9.4",
|
||||
"version": "3.9.5",
|
||||
"description": "One Sky IT's Aether App created with Svelte, SvelteKit, Tailwind CSS, Lucide, Font Awesome, and Skeleton UI. -Scott Idem",
|
||||
"homepage": "https://oneskyit.com/",
|
||||
"private": true,
|
||||
|
||||
@@ -126,11 +126,14 @@ let events_local_data_struct: key_val = {
|
||||
hide__ws_messages: true,
|
||||
hide__ws_commands: true,
|
||||
|
||||
hide_content__draft_files: true,
|
||||
|
||||
show_content__disabled_files: false,
|
||||
show_content__hidden_files: false,
|
||||
show_content__hidden_presentations: false,
|
||||
show_content__hidden_presenters: false,
|
||||
show_content__hidden_sessions: false,
|
||||
show_content__draft_files: false,
|
||||
|
||||
// These should be renamed to match the pres_mgmt section. Use "hide" instead of "show".
|
||||
show_content__session_code: true,
|
||||
|
||||
@@ -10,9 +10,12 @@ interface Props {
|
||||
hide_created_on?: boolean;
|
||||
hide_os?: boolean;
|
||||
hide_size?: boolean;
|
||||
hide_draft?: boolean; // Based on the file purpose
|
||||
show_bak_download?: boolean;
|
||||
// export let hide_api_download: boolean = true;
|
||||
btn_size?: string;
|
||||
text_size?: string;
|
||||
text_size_md?: string;
|
||||
session_type?: string; // oral, poster, workshop, symposium, roundtable, other
|
||||
open_method?: null|string; // modal, download, native open (download, cache, copy, open), URL
|
||||
modal_title?: string;
|
||||
@@ -23,19 +26,22 @@ interface Props {
|
||||
}
|
||||
|
||||
let {
|
||||
log_lvl = 0,
|
||||
log_lvl = $bindable(0),
|
||||
event_file_id,
|
||||
event_file_obj = $bindable({}),
|
||||
max_filename_length = 50,
|
||||
hide_launch_icon = false,
|
||||
hide_meta = false,
|
||||
hide_created_on = false,
|
||||
hide_os = false,
|
||||
hide_size = false,
|
||||
max_filename_length = $bindable(50),
|
||||
hide_launch_icon = $bindable(false),
|
||||
hide_meta = $bindable(false),
|
||||
hide_created_on = $bindable(false),
|
||||
hide_os = $bindable(false),
|
||||
hide_size = $bindable(false),
|
||||
hide_draft = $bindable(false),
|
||||
show_bak_download = false,
|
||||
btn_size = 'btn_md',
|
||||
session_type = 'oral',
|
||||
open_method = 'download',
|
||||
btn_size = $bindable('btn-sm'),
|
||||
text_size = $bindable('text-sm'),
|
||||
text_size_md = $bindable('md:text-base'),
|
||||
session_type = $bindable('oral'),
|
||||
open_method = $bindable('download'),
|
||||
modal_title = $bindable(''),
|
||||
|
||||
modal__title = $bindable(''),
|
||||
@@ -262,16 +268,18 @@ function preventDefault(fn) {
|
||||
|
||||
|
||||
<div
|
||||
|
||||
class:justify-between={!hide_meta}
|
||||
class:justify-center={hide_meta}
|
||||
class:hidden={hide_draft && (event_file_obj.file_purpose == 'outline' || event_file_obj.file_purpose == 'draft')}
|
||||
class="
|
||||
event_launcher_file_cont
|
||||
grow
|
||||
flex flex-col md:flex-row flex-wrap
|
||||
gap-1 items-center
|
||||
gap-1 items-center justify-center
|
||||
max-w-full
|
||||
transition-all
|
||||
"
|
||||
class:justify-between={!hide_meta}
|
||||
class:justify-center={hide_meta}
|
||||
>
|
||||
|
||||
{#if open_file_clicked}
|
||||
@@ -306,7 +314,7 @@ function preventDefault(fn) {
|
||||
{/if}
|
||||
|
||||
|
||||
<span class="event_file_action">
|
||||
<span class="event_file_action grow max-w-full flex flex-row flex-wrap gap-1 items-center justify-center">
|
||||
|
||||
<!-- First [WORKING!] - Handle opening using a modal. This applies to all Launcher app modes (default, onsite, native) -->
|
||||
{#if (session_type == 'poster' || open_method == 'modal')}
|
||||
@@ -455,6 +463,9 @@ function preventDefault(fn) {
|
||||
log_lvl: 1
|
||||
});
|
||||
|
||||
$events_slct.event_file_id = event_file_id;
|
||||
$events_slct.event_file_obj = event_file_obj;
|
||||
|
||||
// window.postMessage({ type: 'download_event_file', event_file_id: event_file_id, filename: event_file_obj.filename, auto_download: true }, '*');
|
||||
|
||||
if ($events_loc.launcher.controller == 'local_push') {
|
||||
@@ -464,15 +475,18 @@ function preventDefault(fn) {
|
||||
// tick();
|
||||
}
|
||||
}}
|
||||
|
||||
class:outline-2={$events_slct.event_file_id == event_file_id}
|
||||
class="
|
||||
btn btn-sm
|
||||
btn {btn_size}
|
||||
gap-1
|
||||
min-w-full w-full max-w-96
|
||||
preset-tonal-primary border border-primary-500
|
||||
min-w-72 lg:min-w-96
|
||||
"
|
||||
title={`Download this file:\n${event_file_obj.filename}\n[API] SHA256: ${event_file_obj.hash_sha256.slice(0, 10)}...\nHosted ID: ${event_file_obj.hosted_file_id_random} Event File ID: ${event_file_id}`}
|
||||
>
|
||||
{#await ae_promises[event_file_id]}
|
||||
<span class="text-sm">
|
||||
<span class="shrink text-sm p-0">
|
||||
<span class="fas fa-spinner fa-spin mx-0.5"></span>
|
||||
<span class="">
|
||||
Downloading
|
||||
@@ -483,7 +497,7 @@ function preventDefault(fn) {
|
||||
</span>
|
||||
</span>
|
||||
{:then result}
|
||||
<span class="text-xs">
|
||||
<span class="shrink text-xs">
|
||||
<span class="fas fa-{ae_util.file_extension_icon(event_file_obj.extension)} mx-0.5"></span>
|
||||
{event_file_obj.extension}
|
||||
{#if result === null}
|
||||
@@ -495,7 +509,12 @@ function preventDefault(fn) {
|
||||
</span>
|
||||
{/await}
|
||||
|
||||
<span class="grow text-xs md:text-sm border-l border-gray-400 pl-1">
|
||||
<span
|
||||
class="
|
||||
grow {text_size} {text_size_md} max-w-96 border-l border-gray-400 pl-1
|
||||
overflow-hidden text-ellipsis text-left
|
||||
"
|
||||
>
|
||||
<!-- {event_file_obj.filename_no_ext} -->
|
||||
<!-- {ae_util.shorten_filename({filename: event_file_obj.filename_w_ext, max_length: 40})} -->
|
||||
{ae_util.shorten_string({string: event_file_obj.filename_no_ext, begin_length: 45, max_length: 65})}
|
||||
|
||||
@@ -75,6 +75,7 @@ import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
|
||||
import Event_launcher_file_cont from './launcher_file_cont.svelte';
|
||||
import Menu_location_list_menu from './menu_location_list.svelte';
|
||||
import Menu_session_list_menu from './menu_session_list.svelte';
|
||||
|
||||
@@ -129,6 +130,27 @@ let ae_promises: key_val = $state({
|
||||
</strong>
|
||||
</div> -->
|
||||
{#each $lq__event_event_file_obj_li as event_file_obj, index}
|
||||
<Event_launcher_file_cont
|
||||
event_file_id={event_file_obj.event_file_id_random}
|
||||
event_file_obj={event_file_obj}
|
||||
hide_launch_icon={true}
|
||||
hide_meta={true}
|
||||
hide_created_on={true}
|
||||
hide_os={true}
|
||||
hide_size={true}
|
||||
show_bak_download={$ae_loc.trusted_access && $ae_loc.edit_mode}
|
||||
btn_size={'btn-sm'}
|
||||
text_size={'text-xs'}
|
||||
text_size_md={'text-xs'}
|
||||
session_type={event_file_obj?.event_session_type_code ?? 'oral'}
|
||||
open_method={event_file_obj?.event_session_type_code == 'poster' ? 'modal' : null}
|
||||
modal_title={$lq__event_session_obj?.name}
|
||||
|
||||
bind:modal__title={$events_sess.launcher.modal__title}
|
||||
bind:modal__open_event_file_id={$events_sess.launcher.modal__open_event_file_id}
|
||||
bind:modal__event_file_obj={$events_sess.launcher.modal__event_file_obj}
|
||||
/>
|
||||
|
||||
<button
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
@@ -194,49 +216,26 @@ let ae_promises: key_val = $state({
|
||||
{#if $lq__location_event_file_obj_li}
|
||||
<div class="w-full flex flex-col gap-0.5">
|
||||
{#each $lq__location_event_file_obj_li as event_file_obj, index}
|
||||
<button
|
||||
disabled={!$ae_loc.trusted_access}
|
||||
onclick={() => {
|
||||
// ae_promises[event_file_obj.event_file_id_random]
|
||||
ae_promises[event_file_obj?.event_file_id_random] = api.download_hosted_file({
|
||||
api_cfg: $ae_api,
|
||||
hosted_file_id: event_file_obj?.hosted_file_id_random,
|
||||
return_file: true,
|
||||
filename: event_file_obj?.filename,
|
||||
auto_download: true,
|
||||
log_lvl: 0
|
||||
});
|
||||
}}
|
||||
class="
|
||||
btn btn-sm
|
||||
text-xs w-full
|
||||
preset-tonal-primary
|
||||
hover:preset-tonal-success
|
||||
transition-all
|
||||
"
|
||||
title={`Download this file:\n${event_file_obj.filename}\n[API] SHA256: ${event_file_obj.hash_sha256.slice(0, 10)}... Hosted ID: ${event_file_obj.hosted_file_id_random} Event File ID: ${event_file_obj.event_file_id_random}`}
|
||||
>
|
||||
{#await ae_promises[event_file_obj.event_file_id_random]}
|
||||
<span class="fas fa-spinner fa-spin mx-1"></span>
|
||||
<span class="">
|
||||
Downloading
|
||||
{#if $ae_sess.api_download_kv[event_file_obj.hosted_file_id_random]}
|
||||
{$ae_sess.api_download_kv[event_file_obj.hosted_file_id_random].percent_completed}%
|
||||
{/if}
|
||||
:
|
||||
</span>
|
||||
{:then}
|
||||
<!-- <span class="fas fa-download mx-1"></span> -->
|
||||
<span class="fas fa-{ae_util.file_extension_icon(event_file_obj.extension)}"></span>
|
||||
<!-- <span class="text-sm">
|
||||
Download:
|
||||
</span> -->
|
||||
{/await}
|
||||
<Event_launcher_file_cont
|
||||
event_file_id={event_file_obj.event_file_id_random}
|
||||
event_file_obj={event_file_obj}
|
||||
hide_launch_icon={true}
|
||||
hide_meta={true}
|
||||
hide_created_on={true}
|
||||
hide_os={true}
|
||||
hide_size={true}
|
||||
show_bak_download={$ae_loc.trusted_access && $ae_loc.edit_mode}
|
||||
btn_size={'btn-sm'}
|
||||
text_size={'text-xs'}
|
||||
text_size_md={'text-xs'}
|
||||
session_type={event_file_obj?.event_session_type_code ?? 'oral'}
|
||||
open_method={event_file_obj?.event_session_type_code == 'poster' ? 'modal' : null}
|
||||
modal_title={$lq__event_session_obj?.name}
|
||||
|
||||
<span class="grow">
|
||||
{ae_util.shorten_filename({filename: event_file_obj.filename, max_length: 30})}
|
||||
</span>
|
||||
</button>
|
||||
bind:modal__title={$events_sess.launcher.modal__title}
|
||||
bind:modal__open_event_file_id={$events_sess.launcher.modal__open_event_file_id}
|
||||
bind:modal__event_file_obj={$events_sess.launcher.modal__event_file_obj}
|
||||
/>
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
@@ -262,7 +261,14 @@ let ae_promises: key_val = $state({
|
||||
>
|
||||
<button
|
||||
onclick={() => {
|
||||
$events_loc.launcher.show_content__hidden_files = !$events_loc.launcher.show_content__hidden_files;
|
||||
if ($events_loc.launcher.show_content__hidden_files) {
|
||||
$events_loc.launcher.show_content__hidden_files = false;
|
||||
$events_loc.launcher.hide_content__draft_files = true;
|
||||
} else {
|
||||
$events_loc.launcher.show_content__hidden_files = true;
|
||||
$events_loc.launcher.hide_content__draft_files = false;
|
||||
}
|
||||
|
||||
}}
|
||||
class="
|
||||
btn btn-sm
|
||||
@@ -272,6 +278,7 @@ let ae_promises: key_val = $state({
|
||||
hover:preset-tonal-success
|
||||
transition-all
|
||||
"
|
||||
title="Toggle showing hidden files. Including files marked as 'draft'."
|
||||
>
|
||||
{#if $events_loc.launcher.show_content__hidden_files}
|
||||
<span class="fas fa-eye-slash m-1 text-neutral-800/80"></span>
|
||||
|
||||
@@ -81,6 +81,7 @@ let lq__event_file_obj_li = $derived(liveQuery(async () => {
|
||||
event_file_id={event_file_obj.event_file_id_random}
|
||||
event_file_obj={event_file_obj}
|
||||
hide_created_on={false}
|
||||
bind:hide_draft={$events_loc.launcher.hide_content__draft_files}
|
||||
show_bak_download={$ae_loc.trusted_access}
|
||||
session_type={event_file_obj?.event_session_type_code ?? 'oral'}
|
||||
open_method={event_file_obj?.event_session_type_code == 'poster' ? 'modal' : null}
|
||||
|
||||
@@ -15,7 +15,7 @@ let {
|
||||
|
||||
import type { key_val } from '$lib/ae_stores';
|
||||
import { ae_util } from '$lib/ae_utils/ae_utils';
|
||||
import { api } from '$lib/api';
|
||||
|
||||
// import Element_ae_crud from '$lib/element_ae_crud.svelte';
|
||||
import Event_launcher_file_cont from './launcher_file_cont.svelte';
|
||||
import Launcher_presenter_view from './launcher_presenter_view.svelte';
|
||||
@@ -28,7 +28,6 @@ import { ae_snip, ae_loc, ae_sess, ae_api, ae_trig, slct, slct_trigger } from '$
|
||||
import { db_events } from "$lib/ae_events/db_events";
|
||||
import { events_loc, events_sess, events_slct, events_trigger } from '$lib/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events_functions';
|
||||
import { hide } from '@popperjs/core';
|
||||
|
||||
|
||||
// let load_event_session_obj = events_func.load_ae_obj_id__event_session({
|
||||
|
||||
@@ -229,6 +229,9 @@ function handle_load_ae_obj_id__event_session(event_session_id: any) {
|
||||
onclick={async () => {
|
||||
trigger_reload__event_session_obj_id = event_session_obj?.id;
|
||||
|
||||
$events_slct.event_file_id = null;
|
||||
$events_slct.event_file_obj = null;
|
||||
|
||||
// handle_load_ae_obj_id__event_session(event_session_obj?.id);
|
||||
|
||||
// loading__session_id_status = true;
|
||||
|
||||
Reference in New Issue
Block a user