147 lines
4.9 KiB
Svelte
147 lines
4.9 KiB
Svelte
<script lang="ts">
|
|
import {
|
|
ae_snip,
|
|
ae_loc,
|
|
ae_sess,
|
|
ae_api,
|
|
ae_trig,
|
|
slct,
|
|
slct_trigger
|
|
} from '$lib/stores/ae_stores';
|
|
import {
|
|
TrendingUp,
|
|
MapPin,
|
|
Wrench,
|
|
Search,
|
|
GraduationCap,
|
|
Plane,
|
|
Settings
|
|
} from '@lucide/svelte';
|
|
|
|
interface Props {
|
|
// import { events_loc, events_sess, events_slct, events_trigger, events_trig_kv } from '$lib/stores/ae_events_stores';
|
|
hide?: boolean;
|
|
event_id?: null | string;
|
|
ae_core?: boolean;
|
|
events__launcher_id?: null | string; // event_location_id
|
|
events__location_id?: null | string; // event_location_id
|
|
events__locations?: boolean; // event_id
|
|
// export let events__presenter_id: null|string = null; // event_presenter_id
|
|
events__reports?: boolean; // event_id
|
|
events__settings?: boolean; // event_id
|
|
events__launcher_session_id?: null | string; // event_session_id to pass to launcher as ?session_id=
|
|
events__session_id?: null | string; // event_session_id — used for "Back to Session" link only
|
|
events__session_search?: boolean; // event_id
|
|
events__launcher_extra_params?: string; // extra URL params appended to the launcher link (e.g. 'iframe=true&launcher_menu=hide')
|
|
}
|
|
|
|
let {
|
|
hide = true,
|
|
event_id = null,
|
|
ae_core = false,
|
|
events__launcher_id = null,
|
|
events__launcher_session_id = null,
|
|
events__launcher_extra_params = '',
|
|
events__location_id = null,
|
|
events__locations = false,
|
|
events__reports = false,
|
|
events__settings = false,
|
|
events__session_id = null,
|
|
events__session_search = false
|
|
}: Props = $props();
|
|
|
|
// Build launcher URL segments separately so the href template stays simple (avoids ternaries in href attr)
|
|
let launcher_loc_seg = $derived(
|
|
events__launcher_id ? `/${events__launcher_id}` : ''
|
|
);
|
|
let launcher_sess_qry = $derived.by(() => {
|
|
const parts: string[] = [];
|
|
if (events__launcher_session_id)
|
|
parts.push(`session_id=${events__launcher_session_id}`);
|
|
if (events__launcher_extra_params)
|
|
parts.push(events__launcher_extra_params);
|
|
return parts.length ? `?${parts.join('&')}` : '';
|
|
});
|
|
</script>
|
|
|
|
<!-- This is for common navigation links. -->
|
|
<div
|
|
class="ae_comp__events_menu_nav flex w-full flex-row flex-wrap items-center justify-between gap-1.5"
|
|
class:hidden={hide}>
|
|
<span
|
|
class="ae_menu__navigation_options flex flex-row flex-wrap items-center justify-around gap-0.5">
|
|
{#if $ae_loc.trusted_access && $ae_loc.edit_mode}
|
|
<a
|
|
href="/core"
|
|
class="btn btn-sm ae_btn_warning mx-1"
|
|
class:hidden={!ae_core}>
|
|
<Settings size="1em" aria-hidden="true" />
|
|
Æ Core
|
|
</a>
|
|
{/if}
|
|
|
|
{#if $ae_loc.public_access && $ae_loc.edit_mode}
|
|
<a
|
|
href="/events/{event_id}/reports"
|
|
class="btn btn-sm ae_btn_info mx-1"
|
|
class:hidden={!events__reports}>
|
|
<TrendingUp size="1em" aria-hidden="true" />
|
|
Pres Mgmt Reports
|
|
</a>
|
|
{/if}
|
|
{#if $ae_loc.administrator_access || ($ae_loc.trusted_access && $ae_loc.edit_mode)}
|
|
<a
|
|
href="/events/{event_id}/locations"
|
|
class="btn btn-sm ae_btn_info mx-1"
|
|
class:hidden={!events__locations}>
|
|
<MapPin size="1em" aria-hidden="true" />
|
|
Locations
|
|
</a>
|
|
{/if}
|
|
<a
|
|
href="/events/{event_id}/settings"
|
|
class="btn btn-sm ae_btn_warning mx-1"
|
|
class:hidden={!events__settings}>
|
|
<Wrench size="1em" aria-hidden="true" />
|
|
Admin Tools
|
|
</a>
|
|
</span>
|
|
|
|
<span
|
|
class="ae_menu__navigation_options flex flex-row flex-wrap items-center justify-around gap-0.5 grow">
|
|
<a
|
|
href="/events/{event_id}/pres_mgmt"
|
|
class="btn btn-sm ae_btn_info mx-1"
|
|
class:hidden={!events__session_search}>
|
|
<Search size="1em" aria-hidden="true" />
|
|
Session Search
|
|
</a>
|
|
<a
|
|
href="/events/{event_id}/session/{events__session_id}"
|
|
class="btn btn-sm ae_btn_info mx-1"
|
|
class:hidden={!events__session_id}>
|
|
<GraduationCap size="1em" aria-hidden="true" />
|
|
Back to Session
|
|
</a>
|
|
|
|
{#if $ae_loc.administrator_access || ($ae_loc.trusted_access && $ae_loc.edit_mode)}
|
|
<a
|
|
href="/events/{event_id}/launcher{launcher_loc_seg}{launcher_sess_qry}"
|
|
class="btn btn-sm ae_btn_info mx-1"
|
|
class:hidden={!event_id}>
|
|
<Plane size="1em" aria-hidden="true" />
|
|
Launcher
|
|
</a>
|
|
{/if}
|
|
{#if $ae_loc.trusted_access}
|
|
<a
|
|
href="/events/{event_id}/location/{events__location_id}"
|
|
class="btn btn-sm ae_btn_info mx-1"
|
|
class:hidden={!events__location_id}>
|
|
<MapPin size="1em" aria-hidden="true" />
|
|
Session Location
|
|
</a>
|
|
{/if}
|
|
</span>
|
|
</div>
|