From 990e1c89e55f953bfbd1783fee8a0427e1683bd0 Mon Sep 17 00:00:00 2001 From: James Doc Date: Sat, 21 Sep 2024 17:16:32 +0100 Subject: [PATCH] Add filtered event block to student pages --- src/_includes/blocks/cal/eventsUpcoming.njk | 50 ++++++++++++++------- src/_utils/11ty.filters.js | 6 +++ src/augmentedPages/students.njk | 9 ++++ 3 files changed, 50 insertions(+), 15 deletions(-) create mode 100644 src/augmentedPages/students.njk diff --git a/src/_includes/blocks/cal/eventsUpcoming.njk b/src/_includes/blocks/cal/eventsUpcoming.njk index 8e5c4c8..4324f36 100644 --- a/src/_includes/blocks/cal/eventsUpcoming.njk +++ b/src/_includes/blocks/cal/eventsUpcoming.njk @@ -1,3 +1,13 @@ +{% set eventCount = 4 %} + +{% if eventFilter %} + {% set taggedEvents = events | eventsFuture | eventsTagged(eventFilter) | eventsSort | limit(4) %} +{% endif %} + +{% if eventFilter and taggedEvents|length == 0 %} + +{% else %} +

Upcoming events

@@ -5,26 +15,36 @@
- {% set eventCount = 4 %} + {% if eventFilter and taggedEvents %} + + {% for event in taggedEvents %} + {% include 'blocks/cal/simpleEvent.njk' %} + {% endfor %} - {% set featuredEvent = events | eventsFuture | eventsFeatured | eventsSort | limit(1) | first %} - {% if featuredEvent %} - {% set event = featuredEvent %} - {% include 'blocks/cal/simpleEvent.njk' %} - {% set eventCount = 3 %} - {% endif %} + {% else %} + - {% set soonEvents = events | eventsFuture(0, 'day') | eventsSort | limit(eventCount + 1) %} - {% set displayedEvents = 0 %} - {% for event in soonEvents %} - {% if event.title == featuredEvent.title or displayedEvents == eventCount%} - {# nothing to see here #} - {% else %} + {% set featuredEvent = events | eventsFuture | eventsFeatured | eventsSort | limit(1) | first %} + {% if featuredEvent %} + {% set event = featuredEvent %} {% include 'blocks/cal/simpleEvent.njk' %} - {% set displayedEvents = displayedEvents + 1 %} + {% set eventCount = 3 %} {% endif %} - {% endfor %} + {% set soonEvents = events | eventsFuture(0, 'day') | eventsSort | limit(eventCount + 1) %} + {% set displayedEvents = 0 %} + {% for event in soonEvents %} + {% if event.title == featuredEvent.title or displayedEvents == eventCount%} + {# nothing to see here #} + {% else %} + {% include 'blocks/cal/simpleEvent.njk' %} + {% set displayedEvents = displayedEvents + 1 %} + {% endif %} + {% endfor %} + + {% endif %}
+ +{%endif %} diff --git a/src/_utils/11ty.filters.js b/src/_utils/11ty.filters.js index 7859b39..779de55 100644 --- a/src/_utils/11ty.filters.js +++ b/src/_utils/11ty.filters.js @@ -53,6 +53,12 @@ module.exports = { }); }, + eventsTagged: (events, tagName) => { + return events.filter(event => { + return event.data.tags && event.data.tags.includes(tagName); + }); + }, + eventsSort: (events) => { return events.sort((a, b) => { if (a.startDate > b.startDate) { diff --git a/src/augmentedPages/students.njk b/src/augmentedPages/students.njk new file mode 100644 index 0000000..c64180d --- /dev/null +++ b/src/augmentedPages/students.njk @@ -0,0 +1,9 @@ +--- +pagePosition: bottom +--- + +
+{% set eventFilter = 'students' %} +{% include 'blocks/cal/eventsUpcoming.njk' %} +{% set eventFilter = null %} +