diff --git a/gql/queries/FTVAEventSeriesDetail.gql b/gql/queries/FTVAEventSeriesDetail.gql index 7158bd0..5c3e49b 100644 --- a/gql/queries/FTVAEventSeriesDetail.gql +++ b/gql/queries/FTVAEventSeriesDetail.gql @@ -57,16 +57,16 @@ query FTVAEventSeries ($slug: [String!]) { title } } - pastEvents: entries(section: "ftvaEvent", relatedToEntries: { section: "ftvaEventSeries", slug: $slug }, startDateWithTime: "< now", orderBy: "startDateWithTime ASC") { - uri - eventTitle - startDateWithTime - ftvaImage { - ...Image - } - ftvaEventFilters { - title - } + pastEvents: entries(section: "ftvaEvent", relatedToEntries: { section: "ftvaEventSeries", slug: $slug }, startDateWithTime: "< now", orderBy: "startDateWithTime ASC") { + uri + eventTitle + startDateWithTime + ftvaImage { + ...Image + } + ftvaEventFilters { + title + } } otherSeriesOngoing: entries(section: "ftvaEventSeries", limit: 3, ongoing: true) { uri diff --git a/pages/series/[...slug].vue b/pages/series/[...slug].vue index 0f3056e..a54767f 100644 --- a/pages/series/[...slug].vue +++ b/pages/series/[...slug].vue @@ -57,14 +57,42 @@ const parsedCarouselData = computed(() => { } }) }) + +const parsedFtvaEventSeries = computed(() => { + /* Early Returns: If series.value is falsy or empty, or + if firstSeries.ftvaEvent is falsy or empty, return + an empty array immediately. */ + if (!series.value || series.value.length === 0) { + return [] + } + + const [firstSeries] = series.value + + if (!firstSeries.ftvaEvent || firstSeries.ftvaEvent.length === 0) { + return [] + } + + // Destructure each series item object and its image object + const seriesEvents = firstSeries.ftvaEvent.map(({ image, ...rest }) => ({ + ...rest, + image: image && image.length > 0 ? image[0] : null, + })) + + const pageId = page.value.id + + // Return series without the page's featured event + const filteredEvents = seriesEvents.filter(({ id }) => id !== pageId) + + // Return first 3 events + return filteredEvents.slice(0, 3) +})