- {stage.capacity.seat} + {stage.capacity.stand}
- {stage.name}
+ {#if $schedulePref && ($schedulePref.stage === stage.id || $schedulePref.stage === "all")}
+ |
+
+ {stage.capacity.seat} + {stage
+ .capacity.stand}
+
+ {stage.name}
|
{/if}
{/each}
@@ -422,7 +457,7 @@
height="60">{ds.title}
{#each activeStages($bundle, $bundle.spec.stages, st, plan) as stage}
- {#if $schedulePref && ($schedulePref.stage === stage.id || $schedulePref.stage === 'all')}
+ {#if $schedulePref && ($schedulePref.stage === stage.id || $schedulePref.stage === "all")}
{#if ds.stages[stage.id] === undefined}
-
+
+
{#if spoiler.stripped}
{/if}
diff --git a/src/routes/program.svelte b/src/routes/program.svelte
index bcc0c9d..869849d 100644
--- a/src/routes/program.svelte
+++ b/src/routes/program.svelte
@@ -9,90 +9,99 @@
import { format, compareAsc, compareDesc } from "date-fns";
import { bundle, userData, loadInfo, schedulePref } from "$lib/stores.js";
import { cs } from "date-fns/locale/index.js";
- import { parsePeriod } from '$lib/periods.js';
+ import { parsePeriod } from "$lib/periods.js";
import SvelteMarkdown from "svelte-markdown";
+ import SvelteTooltip from "$lib/SvelteTooltip.svelte";
const renderers = { link: Link };
import Link from "$lib/Link.svelte";
- let scheduleTimesArr = null
- let stagesArr = null
+ let scheduleTimesArr = null;
+ let stagesArr = null;
let planNumber = 0;
$: plan = $bundle ? $bundle.spec.schedule : null;
const params = {
- time: { key: 'time' },
- stage: { key: 'stage' },
- desc: { key: 'showDescriptions', type: 'boolean' }
- }
+ time: { key: "time" },
+ stage: { key: "stage" },
+ desc: { key: "showDescriptions", type: "boolean" },
+ };
+ let subs = [];
- let subs = []
-
- subs.push(page.subscribe(() => {
-
- schedulePref.update(sp => {
- for (const upk of Object.keys(params)) {
- const up = params[upk]
- const _sp = $page.url.searchParams.get(upk)
- if (up.type === 'boolean') {
- if (_sp !== undefined) {
- sp[up.key] = Boolean(_sp)
+ subs.push(
+ page.subscribe(() => {
+ schedulePref.update((sp) => {
+ for (const upk of Object.keys(params)) {
+ const up = params[upk];
+ const _sp = $page.url.searchParams.get(upk);
+ if (up.type === "boolean") {
+ if (_sp !== undefined) {
+ sp[up.key] = Boolean(_sp);
+ }
+ } else {
+ sp[up.key] = _sp ? _sp : "all";
}
- } else {
- sp[up.key] = _sp ? _sp : 'all'
}
- }
- return sp
+ return sp;
+ });
})
- }))
+ );
onMount(async () => {
-
const bsub = bundle.subscribe((bundle) => {
-
- scheduleTimesArr = scheduleTimes(bundle)
- stagesArr = bundle.spec.stages
+ scheduleTimesArr = scheduleTimes(bundle);
+ stagesArr = bundle.spec.stages;
const pref = {};
//pref.stages = bundle.spec.stages.map((s) => s.id);
//pref.tracks = bundle.spec.tracks.map((s) => s.id);
//pref.times = scheduleTimesArr.map((s) => s.id);
//schedulePref.set(pref);
});
- subs.push(bsub)
+ subs.push(bsub);
- const pref = {}
- let schedulePrefInicialized = null
+ const pref = {};
+ let schedulePrefInicialized = null;
const spsub = schedulePref.subscribe((sp) => {
- const updates = []
- updates.push([ 'time', sp.time === 'all' ? undefined : sp.time ])
- updates.push([ 'stage', sp.stage === 'all' ? undefined : sp.stage ])
- updates.push([ 'desc', sp.showDescriptions === null || sp.showDescriptions === false || sp.showDescriptions === undefined ? undefined : true ])
+ const updates = [];
+ updates.push(["time", sp.time === "all" ? undefined : sp.time]);
+ updates.push(["stage", sp.stage === "all" ? undefined : sp.stage]);
+ updates.push([
+ "desc",
+ sp.showDescriptions === null ||
+ sp.showDescriptions === false ||
+ sp.showDescriptions === undefined
+ ? undefined
+ : true,
+ ]);
- let target = '?'
+ let target = "?";
if (updates.length > 0) {
for (const up of updates) {
- if (up[1] === undefined && $page.url.searchParams.get(up[0]) !== undefined) {
- $page.url.searchParams.delete(up[0])
+ if (
+ up[1] === undefined &&
+ $page.url.searchParams.get(up[0]) !== undefined
+ ) {
+ $page.url.searchParams.delete(up[0]);
} else {
- $page.url.searchParams.set(up[0], up[1])
+ $page.url.searchParams.set(up[0], up[1]);
}
}
- target = `?${$page.url.searchParams.toString()}`
+ target = `?${$page.url.searchParams.toString()}`;
}
goto(target);
- return false
- })
- subs.push(spsub)
+ return false;
+ });
+ subs.push(spsub);
});
onDestroy(() => {
for (const unsub of subs) {
- unsub()
+ unsub();
}
- })
+ });
function filterDateStage(arr, date, stageId) {
return arr
@@ -129,7 +138,11 @@
rowspans[stage.id]--;
continue;
}
- if (schedulePref && (schedulePref.stage !== stage.id && schedulePref.stage !== 'all')) {
+ if (
+ schedulePref &&
+ schedulePref.stage !== stage.id &&
+ schedulePref.stage !== "all"
+ ) {
continue;
}
let si = pl.find(
@@ -185,26 +198,26 @@
function scheduleTimes(bundle, filter = false) {
let arr = bundle.scheduleTimes.map((item, i) => {
const out = parsePeriod(bundle, item);
- out.id = String(i)
+ out.id = String(i);
switch (i) {
case 0:
- out.code = 'sobota';
- break
+ out.code = "sobota";
+ break;
case 1:
- out.code = 'sobota-party';
- break
+ out.code = "sobota-party";
+ break;
case 2:
- out.code = 'nedele';
- break
+ out.code = "nedele";
+ break;
}
- return out
+ return out;
});
if (filter) {
- arr = arr.filter(st => st.id === filter || filter === 'all')
+ arr = arr.filter((st) => st.id === filter || filter === "all");
}
- return arr
+ return arr;
}
function eventTrackClasses(bundle, ev, selectedTracks) {
@@ -214,35 +227,32 @@
return "border border-blue-web/50";
}
- function isPeriodOverlap(x, y) {
- const xstart = new Date(x.start)
- const xend = new Date(x.end)
- const ystart = new Date(y.start)
- const yend = new Date(y.end)
- return (xstart.getTime() < yend.getTime() &&
- xend.getTime() > ystart.getTime());
+ function isPeriodOverlap(x, y) {
+ const xstart = new Date(x.start);
+ const xend = new Date(x.end);
+ const ystart = new Date(y.start);
+ const yend = new Date(y.end);
+ return (
+ xstart.getTime() < yend.getTime() && xend.getTime() > ystart.getTime()
+ );
}
- function activeStages (bundle, stages, st, pl) {
- return stages.filter(stage => {
- return Boolean(pl.filter(i => i.stage === stage.id).find(i => isPeriodOverlap(st.period, i.period))
-
- )
- })
+ function activeStages(bundle, stages, st, pl) {
+ return stages.filter((stage) => {
+ return Boolean(
+ pl
+ .filter((i) => i.stage === stage.id)
+ .find((i) => isPeriodOverlap(st.period, i.period))
+ );
+ });
}
- function allScheduleTimes (bundle) {
- return [
- { id: 'all', name: 'Všechny dny' },
- ...scheduleTimes(bundle)
- ]
+ function allScheduleTimes(bundle) {
+ return [{ id: "all", name: "Všechny dny" }, ...scheduleTimes(bundle)];
}
- function allStages (bundle) {
- return [
- { id: 'all', name: 'Všechny sály' },
- ...bundle.spec.stages
- ]
+ function allStages(bundle) {
+ return [{ id: "all", name: "Všechny sály" }, ...bundle.spec.stages];
}
function makeSpoiler(_e) {
@@ -295,7 +305,12 @@
>
Program
{#if $bundle}
@@ -303,9 +318,12 @@
Den
{#each allScheduleTimes($bundle) as st}
-
+
{/each}
@@ -313,9 +331,12 @@
Sál
{#each allStages($bundle) as et}
-
+
{/if}
-
{#if $bundle}
{#each scheduleTimes($bundle, $schedulePref.time) as st}
-
+
{#if st.name}
{st.name}
@@ -383,20 +410,53 @@
{format(new Date(st.date), "iiii d.M.y", { locale: cs })}
{/if}
-
-
Zdrojová data: {format(new Date($bundle.time), 'd.M.y H:mm')}
+
+
+ Zdrojová data: {format(new Date($bundle.time), "d.M.y H:mm")}
+