From 6e100e7b2cfa6870062234f924e74a6fae7164f5 Mon Sep 17 00:00:00 2001 From: Lee Cattarin Date: Thu, 24 Sep 2026 12:03:48 -0700 Subject: [PATCH] event stuff --- _config/filters.js | 15 +++++++++++++++ _includes/layouts/event.njk | 4 ++-- src/calendar.njk | 19 +++++++++++++++++++ src/events/events.11tydata.js | 3 +++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/calendar.njk diff --git a/_config/filters.js b/_config/filters.js index e70a467..ab12122 100644 --- a/_config/filters.js +++ b/_config/filters.js @@ -18,11 +18,13 @@ export default function (eleventyConfig) { return collection.slice(0, n); }); + /* Check if a dateTime happened before the current dateTime */ eleventyConfig.addFilter("inThePast", (dateString) => { if (DateTime.fromISO(dateString) < DateTime.now()) return true; return false; }); + /* Check if dates occurred on the same day */ eleventyConfig.addFilter("dateStringsEqual", (dateString1, dateString2) => { const date1 = DateTime.fromISO(dateString1); const date2 = DateTime.fromISO(dateString2); @@ -61,6 +63,13 @@ export default function (eleventyConfig) { ); }); + /* Human-readable dates with times */ + eleventyConfig.addFilter("readableDateTime", (dateString, zone) => { + return DateTime.fromISO(dateString, { zone: zone || "utc" }).toLocaleString( + DateTime.DATETIME_MED_WITH_WEEKDAY, + ); + }); + /* Filter out structural tags */ eleventyConfig.addFilter("removeBasicTags", (tags) => { return tags.filter((tag) => ["all"].indexOf(tag) === -1); @@ -70,4 +79,10 @@ export default function (eleventyConfig) { eleventyConfig.addFilter("sortAlphabetically", (strings) => (strings || []).sort((b, a) => b.localeCompare(a)), ); + + /* Sort by date field (note: NOT datePosted, dateUpdated) */ + eleventyConfig.addFilter("sortByDate", (collection) => { + collection.sort((b, a) => DateTime.fromISO(b.data.date) < DateTime.fromISO(a.data.date)); + return collection; + }); } diff --git a/_includes/layouts/event.njk b/_includes/layouts/event.njk index 99b95f1..c21759e 100644 --- a/_includes/layouts/event.njk +++ b/_includes/layouts/event.njk @@ -4,9 +4,9 @@ layout: page.njk

{% if date | inThePast %} - Occurred at + Occurred at {% else %} - Occuring at + Occuring at {% endif %}

diff --git a/src/calendar.njk b/src/calendar.njk new file mode 100644 index 0000000..8a73fda --- /dev/null +++ b/src/calendar.njk @@ -0,0 +1,19 @@ +--- +title: Calendar of Events +--- + +

Upcoming events

+ +{% for event in collections.events | sortByDate %} + {% if not event.data.date | inThePast %} +

{{ event.data.title }}

+ {% endif %} +{% endfor %} + +

Previous events

+ +{% for event in collections.events | sortByDate | reverse %} + {% if event.data.date | inThePast %} +

{{ event.data.title }}

+ {% endif %} +{% endfor %} diff --git a/src/events/events.11tydata.js b/src/events/events.11tydata.js index 4cfd6b9..8bb6c25 100644 --- a/src/events/events.11tydata.js +++ b/src/events/events.11tydata.js @@ -1,3 +1,6 @@ export default { layout: "event.njk", + tags: [ + "events" + ] };