diff --git a/src/lib/Event.svelte b/src/lib/Event.svelte
index d08c4a8..b297e70 100644
--- a/src/lib/Event.svelte
+++ b/src/lib/Event.svelte
@@ -85,7 +85,7 @@
{#if schedule && !hideDate}
-
+
{/if}
{#if duration}
{duration}m
{/if}
{#if e.track}
diff --git a/src/lib/EventSchedule.svelte b/src/lib/EventSchedule.svelte
index 1e2e3d5..3d6bb98 100644
--- a/src/lib/EventSchedule.svelte
+++ b/src/lib/EventSchedule.svelte
@@ -9,11 +9,19 @@
? bundle.spec.stages.find((s) => s.id === item.stage)
: null;
- $: start = typeof(item.period.start) === 'string' ? new Date(item.period.start) : item.period.start
- $: end = typeof(item.period.end) === 'string' ? new Date(item.period.end) : item.period.end
+ $: start =
+ typeof item.period.start === "string"
+ ? new Date(item.period.start)
+ : item.period.start;
+ $: end =
+ typeof item.period.end === "string"
+ ? new Date(item.period.end)
+ : item.period.end;
{formatCET(start, "yyyy-MM-dd") === "2022-06-04" ? "SO" : "NE"}
- {formatCET(start, "HH:mm")}-{formatCET(end, "HH:mm")} ({stage ? stage.name : "n/a"}) @{item.id}
+ {formatCET(start, "HH:mm")}-{formatCET(end, "HH:mm")} ({stage
+ ? stage.name
+ : "n/a"}) @{item.id}
diff --git a/src/lib/api.js b/src/lib/api.js
index 0bc88e8..86f7385 100644
--- a/src/lib/api.js
+++ b/src/lib/api.js
@@ -37,9 +37,11 @@ class API {
description: sp.desc
}
})
- const schedule = this.bundle.schedule.find(s => s.event === ev.id)
- if (schedule) {
- ev.scheduleId = '@' + schedule.id
+ if (this.bundle.schedule) {
+ const schedule = this.bundle.schedule.find(s => s.event === ev.id)
+ if (schedule) {
+ ev.scheduleId = '@' + schedule.id
+ }
}
}
}
diff --git a/src/lib/config.js b/src/lib/config.js
new file mode 100644
index 0000000..e07472a
--- /dev/null
+++ b/src/lib/config.js
@@ -0,0 +1,33 @@
+
+export const EventTypes = {
+ panel: {
+ color: 'bg-orange-400',
+ colorLight: 'bg-orange-400/20',
+ colorDark: 'bg-orange-400/40'
+ },
+ talk: {
+ color: 'bg-custom-green',
+ colorLight: 'bg-custom-green/20',
+ colorDark: 'bg-custom-green/40'
+ },
+ workshop: {
+ color: 'bg-custom-blue',
+ colorLight: 'bg-custom-blue/20',
+ colorDark: 'bg-custom-blue/40'
+ },
+ campfire: {
+ color: 'bg-purple-400',
+ colorLight: 'bg-purple-400/20',
+ colorDark: 'bg-purple-400/40'
+ },
+ 'lightning-series': {
+ color: 'bg-yellow-400',
+ colorLight: 'bg-yellow-400/20',
+ colorDark: 'bg-yellow-400/40'
+ },
+ other: {
+ color: 'bg-rose-400',
+ colorLight: 'bg-rose-400/20',
+ colorDark: 'bg-rose-400/40'
+ }
+}
diff --git a/src/routes/program.svelte b/src/routes/program.svelte
index 4776b4c..df457d4 100644
--- a/src/routes/program.svelte
+++ b/src/routes/program.svelte
@@ -7,10 +7,11 @@
import { goto } from "$app/navigation";
import { page } from "$app/stores";
import { format, compareAsc, compareDesc } from "date-fns";
- import { formatCET } from '$lib/utils.js';
+ import { formatCET } from "$lib/utils.js";
import { bundle, userData, loadInfo, schedulePref } from "$lib/stores.js";
import { parsePeriod } from "$lib/periods.js";
- import { cs } from "date-fns/locale/index.js"
+ import { cs } from "date-fns/locale/index.js";
+ import { EventTypes } from "$lib/config.js";
import SvelteMarkdown from "svelte-markdown";
import SvelteTooltip from "$lib/SvelteTooltip.svelte";
const renderers = { link: Link };
@@ -228,6 +229,16 @@
return "border border-blue-web/50";
}
+ $: eventTypes = $bundle && $bundle.spec ? extendEventTypes($bundle) : [];
+
+ function extendEventTypes(bundle) {
+ return bundle.spec["event-types"]
+ .map((et) => {
+ return Object.assign({}, et, EventTypes[et.id]);
+ })
+ .filter((et) => !et.hidden);
+ }
+
function isPeriodOverlap(x, y) {
const xstart = new Date(x.start);
const xend = new Date(x.end);
@@ -274,25 +285,9 @@
console.log(`Event not found: ${eventId}`);
return null;
}
- switch (ev.type) {
- case "panel":
- ev.color = "bg-orange-400/20 hover:bg-orange-400/40";
- break;
- case "talk":
- ev.color = "bg-custom-green/20 hover:bg-custom-green/40";
- break;
- case "workshop":
- ev.color = "bg-custom-blue/20 hover:bg-custom-blue/40";
- break;
- case "campfire":
- ev.color = "bg-purple-400/20 hover:bg-purple-400/40";
- break;
- case "lightning-series":
- ev.color = "bg-yellow-400/20 hover:bg-yellow-400/40";
- break;
- default:
- ev.color = "bg-rose-400/20 hover:bg-rose-400/40";
- }
+ const et = EventTypes[ev.type];
+ ev.color = et.color ? `${et.colorLight} hover:${et.colorDark}` : "";
+ console.log(ev.color);
return ev;
}
@@ -402,26 +397,40 @@
{#if $bundle}
{#each scheduleTimes($bundle, $schedulePref.time) as st}
-
+
{#if st.name}
{st.name}
{:else}
{formatCET(new Date(st.date), "iiii d.M.y")}
{/if}
-
+
+
+ {#each eventTypes as et}
+
+
+
+ {#if et.url}
{et.shortname || et.name}{:else}{et.shortname || et.name}{/if}
+
+
+ {/each}
+
- Poslední aktualizace: {formatCET(new Date($bundle.time), "d.M.y H:mm")}
+ Aktualizováno: {formatCET(new Date($bundle.time), "d.M.y H:mm")}
@@ -541,8 +550,12 @@
{/each}
-
- Všechny časy jsou lokální - středoevropské časové pásmo CET (+02:00). Všechny události jsou v češtině nebo slovenštině, pokud není uvedeno jinak.
+
+ Všechny časy jsou lokální - středoevropské časové pásmo CET (+02:00).
+ Všechny události jsou v češtině nebo slovenštině, pokud není uvedeno
+ jinak.
{:else}
Načítám ..
diff --git a/src/routes/seznam-udalosti.svelte b/src/routes/seznam-udalosti.svelte
index c603f95..a0cc36b 100644
--- a/src/routes/seznam-udalosti.svelte
+++ b/src/routes/seznam-udalosti.svelte
@@ -106,10 +106,12 @@
arr = arr.filter((e) => e.track === f.key);
}
if (f.type === "text") {
- if (f.key.substring(0,1) === '@') {
- const schedule = bd.spec.schedule.find(e => e.id === f.key.substring(1))
+ if (f.key.substring(0, 1) === "@") {
+ const schedule = bd.spec.schedule.find(
+ (e) => e.id === f.key.substring(1)
+ );
if (schedule) {
- const ev = bd.spec.events.find(e => e.id === schedule.event)
+ const ev = bd.spec.events.find((e) => e.id === schedule.event);
arr = [ev];
} else {
arr = [];
@@ -243,7 +245,7 @@
- {#each ids.map(id => $bundle.spec.events.find(e => e.id === id)) as ev}
+ {#each ids.map((id) => $bundle.spec.events.find((e) => e.id === id)) as ev}
{/each}
diff --git a/src/routes/tv.svelte b/src/routes/tv.svelte
index 21cb6f0..eb5c740 100644
--- a/src/routes/tv.svelte
+++ b/src/routes/tv.svelte
@@ -6,6 +6,7 @@
import { onMount, onDestroy } from "svelte";
import { bundle, userData } from "$lib/stores.js";
import { format, formatDistanceToNow } from "date-fns";
+ import { formatCET } from "$lib/utils.js";
import { parsePeriod } from "$lib/periods.js";
import EventTypeLabel from "$lib/EventTypeLabel.svelte";
import Avatar from "$lib/Avatar.svelte";
@@ -89,8 +90,8 @@
}
function genStatus(_bundle) {
- const now = new Date(`2022-06-04T${format(new Date(), "HH:mm:ss")}`);
- //const now = new Date()
+ //const now = new Date(`2022-06-05T${format(new Date(), "HH:mm:ss")}`);
+ const now = new Date();
//const now = new Date(`2022-06-04T13:25`)
let globalNextEvents = events.filter((ev) => {
@@ -130,7 +131,10 @@
currentPercentage = elapsed / (duration / 100);
}
- const day = format(new Date(nextStreams[0].period.start), "yyyy-MM-dd");
+ const day = formatCET(
+ new Date(nextStreams[0].period.start),
+ "yyyy-MM-dd"
+ );
let ctime = 0;
if (day === "2022-06-05") {
ctime = 2;
@@ -178,7 +182,7 @@
on:click={() => startStream(stage.id)}
>