Update
This commit is contained in:
rodič
258d49015b
revize
cdc0fc58cb
|
@ -63,8 +63,8 @@
|
||||||
|
|
||||||
{#if size === 'normal'}
|
{#if size === 'normal'}
|
||||||
<div class="w-36 sm:w-44 text-center pb-4">
|
<div class="w-36 sm:w-44 text-center pb-4">
|
||||||
<a href="/lide/{speaker.id}" on:mouseover={mouseOver} on:mouseleave={mouseLeave}><img src={currentImg} class="w-36 sm:w-40 rounded-full m-auto shadow-xl" alt={speaker.name} /></a>
|
<a href="/lide?id={speaker.id}" on:mouseover={mouseOver} on:mouseleave={mouseLeave}><img src={currentImg} class="w-36 sm:w-40 rounded-full m-auto shadow-xl" alt={speaker.name} /></a>
|
||||||
<div class="mt-4 text-sm text-blue-web uppercase font-bold"><a href="/lide/{speaker.id}">{speaker.name}</a> {country}</div>
|
<div class="mt-4 text-sm text-blue-web uppercase font-bold"><a href="/lide?id={speaker.id}">{speaker.name}</a> {country}</div>
|
||||||
{#if speaker.bio || speaker.orgs}
|
{#if speaker.bio || speaker.orgs}
|
||||||
<div class="mt-1 text-xs text-blue-web italic"><SvelteMarkdown source={speaker.bio || speaker.orgs} /></div>
|
<div class="mt-1 text-xs text-blue-web italic"><SvelteMarkdown source={speaker.bio || speaker.orgs} /></div>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -85,13 +85,13 @@
|
||||||
|
|
||||||
{#if size === 'extra-small'}
|
{#if size === 'extra-small'}
|
||||||
<div class="w-6 h-6 text-center">
|
<div class="w-6 h-6 text-center">
|
||||||
<a href="/lide/{speaker.id}"><img src={currentImg} class="w-6 rounded-full m-auto" alt="{speaker.name}" /></a>
|
<a href="/lide?id={speaker.id}"><img src={currentImg} class="w-6 rounded-full m-auto" alt="{speaker.name}" /></a>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if size === 'micro'}
|
{#if size === 'micro'}
|
||||||
<div class="w-4 h-4 text-center">
|
<div class="w-4 h-4 text-center">
|
||||||
<a href="/lide/{speaker.id}"><img src={currentImg} class="w-4 rounded-full m-auto" alt="{speaker.name}" /></a>
|
<a href="/lide?id={speaker.id}"><img src={currentImg} class="w-4 rounded-full m-auto" alt="{speaker.name}" /></a>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
|
|
@ -44,13 +44,13 @@
|
||||||
|
|
||||||
<div class="transition-all mb-4 border px-3 py-2 rounded-md shadow {$userData.favoriteEvents.includes(e.id) ? 'bg-yellow-100' : '' }" >
|
<div class="transition-all mb-4 border px-3 py-2 rounded-md shadow {$userData.favoriteEvents.includes(e.id) ? 'bg-yellow-100' : '' }" >
|
||||||
<div class="float-right"><i class="fa-star {$userData.favoriteEvents.includes(e.id) ? 'fa-solid' : 'fa-regular'} cursor-pointer" utxo-event-id="{e.id}" on:click={handleFavorite}></i></div>
|
<div class="float-right"><i class="fa-star {$userData.favoriteEvents.includes(e.id) ? 'fa-solid' : 'fa-regular'} cursor-pointer" utxo-event-id="{e.id}" on:click={handleFavorite}></i></div>
|
||||||
<div class="text-lg font-semibold"><a href="/udalosti/{e.id}">{e.name}</a></div>
|
<div class="text-lg font-semibold"><a href="/udalosti?id={e.id}">{e.name}</a></div>
|
||||||
{#if e.speakers && e.speakers.length > 0}
|
{#if e.speakers && e.speakers.length > 0}
|
||||||
<div class="mt-1 mb-2 flex flex-wrap gap-2">
|
<div class="mt-1 mb-2 flex flex-wrap gap-2">
|
||||||
{#each speakersMap(e.speakers) as s}
|
{#each speakersMap(e.speakers) as s}
|
||||||
<div class="flex gap-1.5">
|
<div class="flex gap-1.5">
|
||||||
<Avatar speaker={s} size='extra-small' />
|
<Avatar speaker={s} size='extra-small' />
|
||||||
<div class="m-auto"><a href="/lide/{s.id}">{s.name}</a></div>
|
<div class="m-auto"><a href="/lide?id={s.id}">{s.name}</a></div>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
@ -65,13 +65,13 @@
|
||||||
<div class="flex flex-wrap gap-2" cellpadding="5">
|
<div class="flex flex-wrap gap-2" cellpadding="5">
|
||||||
{#each getParents(e) as pe}
|
{#each getParents(e) as pe}
|
||||||
<div class="border rounded py-1.5 px-2.5 bg-gray-100 text-sm">
|
<div class="border rounded py-1.5 px-2.5 bg-gray-100 text-sm">
|
||||||
<div class="font-bold"><a href="/udalosti/{pe.id}">{pe.name}</a></div>
|
<div class="font-bold"><a href="/udalosti?id={pe.id}">{pe.name}</a></div>
|
||||||
<div class="mt-1">
|
<div class="mt-1">
|
||||||
{#if pe.speakers.length === 0}
|
{#if pe.speakers.length === 0}
|
||||||
<div>TBA</div>
|
<div>TBA</div>
|
||||||
{:else}
|
{:else}
|
||||||
{#each speakersMap(pe.speakers) as s}
|
{#each speakersMap(pe.speakers) as s}
|
||||||
<div class="flex gap-1"><Avatar speaker={s} size='micro' /><div><a href="/lide/{s.id}">{s.name}</a></div></div>
|
<div class="flex gap-1"><Avatar speaker={s} size='micro' /><div><a href="/lide?id={s.id}">{s.name}</a></div></div>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -5,14 +5,26 @@
|
||||||
<script>
|
<script>
|
||||||
import SvelteMarkdown from 'svelte-markdown';
|
import SvelteMarkdown from 'svelte-markdown';
|
||||||
|
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
import Avatar from '$lib/Avatar.svelte';
|
import Avatar from '$lib/Avatar.svelte';
|
||||||
import Event from '$lib/Event.svelte';
|
import Event from '$lib/Event.svelte';
|
||||||
|
import { onMount } from 'svelte';
|
||||||
import { page } from '$app/stores';
|
import { page } from '$app/stores';
|
||||||
import { bundle } from '$lib/stores.js';
|
import { bundle } from '$lib/stores.js';
|
||||||
|
|
||||||
$: s = $bundle ? $bundle.spec.speakers.find(s => s.id === $page.params.id) : null
|
let id = null
|
||||||
|
let s = null
|
||||||
|
|
||||||
$: events = $bundle.spec.events.filter(ev => ev.speakers && ev.speakers.includes(s.id))
|
$: s = $bundle ? $bundle.spec.speakers.find(s => s.id === id) : null
|
||||||
|
$: events = s ? $bundle.spec.events.filter(ev => ev.speakers && ev.speakers.includes(s.id)) : []
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
const searchParams = new URLSearchParams($page.url.search)
|
||||||
|
id = searchParams.get('id')
|
||||||
|
if (!$bundle.spec.speakers.find(s => s.id === id)) {
|
||||||
|
goto('/')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
function trackRender (trackId) {
|
function trackRender (trackId) {
|
||||||
const track = $bundle.spec.tracks.find(t => t.id === trackId)
|
const track = $bundle.spec.tracks.find(t => t.id === trackId)
|
||||||
|
@ -30,7 +42,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<section class="relative mx-auto py-6 sm:py-10 px-6 max-w-6xl text-blue-web">
|
<section class="relative mx-auto py-6 sm:py-10 px-6 max-w-6xl text-blue-web">
|
||||||
{#if $bundle}
|
{#if $bundle && s}
|
||||||
<div class="sm:flex gap-10 mt-4">
|
<div class="sm:flex gap-10 mt-4">
|
||||||
<div><Avatar speaker={s} size="big" /></div>
|
<div><Avatar speaker={s} size="big" /></div>
|
||||||
<div class="mt-4 sm:mt-0">
|
<div class="mt-4 sm:mt-0">
|
|
@ -6,11 +6,23 @@
|
||||||
import SvelteMarkdown from 'svelte-markdown';
|
import SvelteMarkdown from 'svelte-markdown';
|
||||||
|
|
||||||
import { page } from '$app/stores';
|
import { page } from '$app/stores';
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
|
import { onMount } from 'svelte';
|
||||||
import { bundle, userData } from '$lib/stores.js';
|
import { bundle, userData } from '$lib/stores.js';
|
||||||
import EventTypeLabel from '$lib/EventTypeLabel.svelte';
|
import EventTypeLabel from '$lib/EventTypeLabel.svelte';
|
||||||
import Avatar from '$lib/Avatar.svelte';
|
import Avatar from '$lib/Avatar.svelte';
|
||||||
|
|
||||||
$: e = $bundle ? $bundle.spec.events.find(ev => ev.id === $page.params.id) : null
|
let id = null
|
||||||
|
|
||||||
|
$: e = $bundle ? $bundle.spec.events.find(ev => ev.id === id) : null
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
const searchParams = new URLSearchParams($page.url.search)
|
||||||
|
id = searchParams.get('id')
|
||||||
|
if (!$bundle.spec.events.find(ev => ev.id === id)) {
|
||||||
|
goto('/program')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
function speakersMap (arr) {
|
function speakersMap (arr) {
|
||||||
if (!arr) return;
|
if (!arr) return;
|
||||||
|
@ -27,7 +39,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<section class="relative mx-auto py-6 sm:py-10 px-6 max-w-6xl text-blue-web">
|
<section class="relative mx-auto py-6 sm:py-10 px-6 max-w-6xl text-blue-web">
|
||||||
{#if $bundle}
|
{#if $bundle && e}
|
||||||
<div class="mb-6 flex flex-wrap gap-4">
|
<div class="mb-6 flex flex-wrap gap-4">
|
||||||
<div><EventTypeLabel event={e} size="big" /></div>
|
<div><EventTypeLabel event={e} size="big" /></div>
|
||||||
<div class="text-md my-auto">{trackRender(e.track)}</div>
|
<div class="text-md my-auto">{trackRender(e.track)}</div>
|
Načítá se…
Odkázat v novém úkolu