diff --git a/src/app.css b/src/app.css index ead23e7d..c486b35d 100644 --- a/src/app.css +++ b/src/app.css @@ -39,13 +39,12 @@ padding-bottom: 1em; } - .markdown ul{ + .markdown ul { @apply py-4; } - .markdown li{ + .markdown li { list-style-type: disc; @apply pl-2 ml-6; - } .external::after { diff --git a/src/lib/components/CalendarList.svelte b/src/lib/components/CalendarList.svelte index 0dad88e5..83d60374 100644 --- a/src/lib/components/CalendarList.svelte +++ b/src/lib/components/CalendarList.svelte @@ -3,7 +3,7 @@ import EventTypeBadge from '$lib/components/EventTypeBadge.svelte'; import { config } from '$lib/pbw'; import { format } from 'date-fns'; - import { formatInTimeZone } from 'date-fns-tz' + import { formatInTimeZone } from 'date-fns-tz'; export let segments; export let date; @@ -13,20 +13,21 @@ export let event = null; for (let i = 0; i < segments.length; i++) { - const sg = segments[i] + const sg = segments[i]; if (sg.remote) { - const event = bundle.events.find(e => e.id === sg.remote) + const event = bundle.events.find((e) => e.id === sg.remote); if (!event || !event.segments) { - continue + continue; } - const remoteSegments = event.segments.map(rs => Object.assign(rs, { - event, - remote: true - })) - segments.splice(i, remoteSegments.length, ...remoteSegments) + const remoteSegments = event.segments.map((rs) => + Object.assign(rs, { + event, + remote: true + }) + ); + segments.splice(i, remoteSegments.length, ...remoteSegments); } } -
@@ -58,12 +59,16 @@
{#if !event || segment.remote} {#if (segment.event || event).hidden} - {(segment.event || event)[(segment.event || event).shortname ? 'shortname' : 'name']}* + {(segment.event || event)[ + (segment.event || event).shortname ? 'shortname' : 'name' + ]}* {:else} {(segment.event || event)[(segment.event || event).shortname ? 'shortname' : 'name']}{(segment.event || event)[ + (segment.event || event).shortname ? 'shortname' : 'name' + ]} {/if} {:else} diff --git a/src/lib/components/CollectionList.svelte b/src/lib/components/CollectionList.svelte index 6589a9af..426ee80b 100644 --- a/src/lib/components/CollectionList.svelte +++ b/src/lib/components/CollectionList.svelte @@ -13,6 +13,7 @@ export let offer = false; export let bundle = null; export let currentItem = null; + export let thumb = '300'; function findObject(it) { if (!bundle) { @@ -39,7 +40,7 @@
{#if col === 'benefit'} @@ -53,10 +54,11 @@
@@ -113,9 +115,10 @@ {#if col === 'speaker'}Participate as a speaker!{/if} - {#if col === 'place'}Offer your own venue!{/if} + {#if col === 'place'}Offer your own venue!{/if}
diff --git a/src/lib/components/ItemLogo.svelte b/src/lib/components/ItemLogo.svelte index 7fc3a5ab..d90729c5 100644 --- a/src/lib/components/ItemLogo.svelte +++ b/src/lib/components/ItemLogo.svelte @@ -6,13 +6,18 @@ export let width = 'w-10'; export let aspect = 'aspect-square'; export let rounded = 'rounded'; + export let thumb = '300'; + + if (width.match(/^w-48/)) { + thumb = '500'; + } $: blockie = !item[img] && item.hash ? makeBlockie('0x' + item.hash.substr(0, 40)) : null; {#if item[img]} {item.name} diff --git a/src/lib/pbw.js b/src/lib/pbw.js index b5d87ec7..bd8848d2 100644 --- a/src/lib/pbw.js +++ b/src/lib/pbw.js @@ -1,5 +1,5 @@ export const config = { - tz: "Europe/Prague", + tz: 'Europe/Prague', collections: { places: { title: 'Places', diff --git a/src/lib/utils.js b/src/lib/utils.js index f340037d..a967f203 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -36,16 +36,16 @@ export function getFlagEmoji(str, mapper = true) { return String.fromCodePoint(...codePoints); } -export function processItemsList (arr) { - const out = [] - const ids = [] +export function processItemsList(arr) { + const out = []; + const ids = []; for (const sp of arr) { // filter out duplicates if (ids.includes(sp.id)) { - continue + continue; } - out.push(sp) - ids.push(sp.id) + out.push(sp); + ids.push(sp.id); } - return out + return out; } diff --git a/src/routes/[entry]/+page.svelte b/src/routes/[entry]/+page.svelte index db26003d..f4e45fb4 100644 --- a/src/routes/[entry]/+page.svelte +++ b/src/routes/[entry]/+page.svelte @@ -15,7 +15,7 @@ return !e.types.find((t) => ['conference', 'hackathon'].includes(t)) && !e.hidden; }); - const speakers = processItemsList(data.bundle.speakers) + const speakers = processItemsList(data.bundle.speakers); const collections = [ { title: 'Days', value: 10, col: 'schedule' }, @@ -27,7 +27,6 @@ //{ title: "Unions", col: "unions" }, { title: 'Benefits', col: 'benefits' } ]; - @@ -58,7 +57,7 @@
- +

@@ -67,7 +66,7 @@
- +

Speakers ({speakers.length}) @@ -77,7 +76,11 @@ class="grid grid-cols-3 sm:grid-cols-3 md:grid-cols-6 xl:grid-cols-8 my-6 text-center text-xl" > !['cz', 'sk'].includes(s.country)).sort((x, y) => (x.name > y.name ? 1 : -1)))} + arr={processItemsList( + speakers + .filter((s) => !['cz', 'sk'].includes(s.country)) + .sort((x, y) => (x.name > y.name ? 1 : -1)) + )} {entry} offer="true" circle="true" @@ -90,7 +93,11 @@ class="grid grid-cols-3 sm:grid-cols-3 md:grid-cols-6 xl:grid-cols-8 my-6 text-center text-xl" > ['cz', 'sk'].includes(s.country)).sort((x, y) => (x.name > y.name ? 1 : -1)))} + arr={processItemsList( + speakers + .filter((s) => ['cz', 'sk'].includes(s.country)) + .sort((x, y) => (x.name > y.name ? 1 : -1)) + )} {entry} offer="true" circle="true" @@ -102,7 +109,14 @@
- +
{#if data.bundle.benefits}

diff --git a/src/routes/[entry]/[type]/+page.svelte b/src/routes/[entry]/[type]/+page.svelte index 6fa11105..09a323c1 100644 --- a/src/routes/[entry]/[type]/+page.svelte +++ b/src/routes/[entry]/[type]/+page.svelte @@ -23,12 +23,11 @@ let entry = $page.params.entry; $: type = $page.params.type; $: tc = config.collections[type]; - $: items = type === 'speakers' ? processItemsList(data.bundle[type]) : data.bundle[type] - + $: items = type === 'speakers' ? processItemsList(data.bundle[type]) : data.bundle[type]; function processItems(_items, query = {}) { if (!_items) return []; - _items = [..._items] + _items = [..._items]; if (type === 'events') { _items = _items.sort((x, y) => (x.date > y.date ? 1 : -1)); } @@ -45,10 +44,10 @@ }); } if (['speakers', 'benefits', 'media-partner'].includes(type)) { - _items = _items.sort((x, y) => (x.name.toLowerCase() > y.name.toLowerCase() ? 1 : -1)) + _items = _items.sort((x, y) => (x.name.toLowerCase() > y.name.toLowerCase() ? 1 : -1)); } if (type === 'places') { - _items = _items.sort((x, y) => (x.capacity > y.capacity ? -1 : 1)) + _items = _items.sort((x, y) => (x.capacity > y.capacity ? -1 : 1)); } return _items; diff --git a/src/routes/[entry]/[type]/[slug]/+page.svelte b/src/routes/[entry]/[type]/[slug]/+page.svelte index d1eca56b..4b4907b2 100644 --- a/src/routes/[entry]/[type]/[slug]/+page.svelte +++ b/src/routes/[entry]/[type]/[slug]/+page.svelte @@ -12,7 +12,7 @@ import { formatItemDate, bareDomain, getFlagEmoji } from '$lib/utils.js'; import { config } from '$lib/pbw'; import { format } from 'date-fns'; - import { formatInTimeZone } from 'date-fns-tz' + import { formatInTimeZone } from 'date-fns-tz'; const colsDef = Object.fromEntries( Object.keys(config.collections).map((col) => { @@ -38,26 +38,28 @@ return dates; } - function enrichItem (it) { - if (!it || !it.segments) return it + function enrichItem(it) { + if (!it || !it.segments) return it; // segments - let segments = it.segments + let segments = it.segments; for (let i = 0; i < segments.length; i++) { - const sg = segments[i] + const sg = segments[i]; if (sg.remote) { - const event = data.bundle.events.find(e => e.id === sg.remote) + const event = data.bundle.events.find((e) => e.id === sg.remote); if (!event || !event.segments) { - continue + continue; } - const remoteSegments = event.segments.map(rs => Object.assign(rs, { - event, - remote: true - })) - segments.splice(i, remoteSegments.length, ...remoteSegments) + const remoteSegments = event.segments.map((rs) => + Object.assign(rs, { + event, + remote: true + }) + ); + segments.splice(i, remoteSegments.length, ...remoteSegments); } } - it.segments = segments - return it + it.segments = segments; + return it; } $: entry = $page.params.entry; @@ -66,38 +68,49 @@ $: item = enrichItem(data.bundle[colPlural].find((e) => e.id === $page.params.slug)); $: defs = data.schema ? data.schema.definitions[col] : {}; - function venuesMap (arr, rich = false) { - return arr.map((vId) => { - const place = data.bundle.places.find((p) => p.id === vId); - return rich ? `${place.name}` : place.name; - }) - .join(', ') + function venuesMap(arr, rich = false) { + return arr + .map((vId) => { + const place = data.bundle.places.find((p) => p.id === vId); + return rich + ? `${place.name}` + : place.name; + }) + .join(', '); } - $: itemDescription = col === 'event' ? `${formatItemDate(item, { full: true })} @ ${item.venues ? venuesMap(item.venues) : item.venueName }. ${item.tags ? item.tags.join(', ') : ''}` : null - $: itemImage = item[config.collections[colPlural]?.img || 'logo'] + $: itemDescription = + col === 'event' + ? `${formatItemDate(item, { full: true })} @ ${ + item.venues ? venuesMap(item.venues) : item.venueName + }. ${item.tags ? item.tags.join(', ') : ''}` + : null; + $: itemImage = item[config.collections[colPlural]?.img || 'logo']; {item.name} | #PBW{$page.params.entry} - - + + {#if item.links?.web} - - + + {/if} - - - + + + - + {#if item.links?.twitter} - + {/if} - - - + + +
@@ -370,7 +383,11 @@
s.remote || formatInTimeZone(new Date(s.startTime), config.tz, 'yyyy-MM-dd') === date)} + segments={item.segments.filter( + (s) => + s.remote || + formatInTimeZone(new Date(s.startTime), config.tz, 'yyyy-MM-dd') === date + )} {entry} bundle={data.bundle} event={item} @@ -386,7 +403,12 @@
- +
{/if} {#if item.events} diff --git a/src/routes/[entry]/for-speakers/+page.svelte b/src/routes/[entry]/for-speakers/+page.svelte index 9be5096b..aa753d67 100644 --- a/src/routes/[entry]/for-speakers/+page.svelte +++ b/src/routes/[entry]/for-speakers/+page.svelte @@ -45,7 +45,9 @@ >
-
Date: {formatItemDate(event, { full: true })}
+
+ Date: {formatItemDate(event, { full: true })} +
{#if event.cfp.text}
{event.cfp.text}
{/if}