From af1bc9d332872f06de3bbb17536e83e573515951 Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Tue, 6 Aug 2019 03:42:24 +0200 Subject: [PATCH] Filter out old events for smaller page payloads --- gatsby-node.js | 27 +++++++++++++++++++++++++++ src/pages/index.js | 31 ++++++++++++++++++++++++------- src/pages/program.js | 7 +++++-- src/templates/event-organizer.js | 7 +++++-- 4 files changed, 61 insertions(+), 11 deletions(-) diff --git a/gatsby-node.js b/gatsby-node.js index ab6d7bb..6a63c1c 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -2,10 +2,17 @@ const _ = require('lodash') const path = require('path') const { createFilePath } = require('gatsby-source-filesystem') const { paginate } = require('gatsby-awesome-pagination') +const moment = require('moment') const getOnlyPublished = edges => _.filter(edges, ({ node }) => node.status === 'publish') +// Used to filter out older events from queries +const eventsNotBefore = moment() + .startOf('day') + .subtract(1, 'days') + .toISOString() + exports.createPages = ({ actions, graphql }) => { const { createPage } = actions @@ -275,6 +282,7 @@ exports.createPages = ({ actions, graphql }) => { slug: eventOrganizer.slug, description: eventOrganizer.description, association: eventOrganizer.association, + after: eventsNotBefore, }, }) } @@ -440,3 +448,22 @@ exports.onCreateNode = ({ node, actions, getNode }) => { }) } } + +exports.onCreatePage = ({ page, actions }) => { + const { createPage, deletePage } = actions + + // We need to add context to a few pages + const pagesWithContext = ['/', '/program/'] + if (!pagesWithContext.includes(page.path)) { + return + } + + deletePage(page) + createPage({ + ...page, + context: { + ...page.context, + after: eventsNotBefore, + }, + }) +} diff --git a/src/pages/index.js b/src/pages/index.js index 36e2e69..b9007d9 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -23,12 +23,23 @@ export default class IndexPage extends React.Component {

Besøk oss

-

Chateau Neuf ligger på Majorstua i Oslo, i Slemdalsveien 15.

+

+ Chateau Neuf ligger på Majorstua i Oslo, i{' '} + + Slemdalsveien 15 + + . +

- + Praktisk informasjon -
- + +
+ Åpningstider
@@ -39,7 +50,10 @@ export default class IndexPage extends React.Component { Bli frivillig

- Chateau Neuf drives i stor grad av frivillige. Vil du være med å arrangere greier på studentersamfundet? Sjekk ut de ulike foreningene som holder til på huset for å finne ut hva som passer for deg. + Chateau Neuf drives i stor grad av frivillige. Vil du være med å + arrangere greier på studentersamfundet? Sjekk ut de ulike{' '} + foreningene som holder til på + huset for å finne ut hva som passer for deg.

Les mer om å bli frivillig @@ -65,8 +79,11 @@ IndexPage.propTypes = { } export const pageQuery = graphql` - query { - allWordpressWpEvents(sort: { fields: start_time, order: ASC }) { + query IndexPage($after: Date!) { + allWordpressWpEvents( + sort: { fields: start_time, order: ASC } + filter: { start_time: { gt: $after } } + ) { edges { node { ...EventListFields diff --git a/src/pages/program.js b/src/pages/program.js index 0beb141..02b9500 100644 --- a/src/pages/program.js +++ b/src/pages/program.js @@ -34,8 +34,11 @@ EventProgram.propTypes = { } export const pageQuery = graphql` - query { - allWordpressWpEvents(sort: { fields: start_time, order: ASC }) { + query ProgramPage($after: Date!) { + allWordpressWpEvents( + filter: { start_time: { gt: $after } } + sort: { fields: start_time, order: ASC } + ) { edges { node { ...EventListFields diff --git a/src/templates/event-organizer.js b/src/templates/event-organizer.js index 62ad55c..01cf5bc 100644 --- a/src/templates/event-organizer.js +++ b/src/templates/event-organizer.js @@ -59,9 +59,12 @@ EventOrganizerPage.propTypes = { } export const pageQuery = graphql` - query EventOrganizerPage($slug: String!) { + query EventOrganizerPage($slug: String!, $after: Date!) { allWordpressWpEvents( - filter: { event_organizers: { elemMatch: { slug: { eq: $slug } } } } + filter: { + event_organizers: { elemMatch: { slug: { eq: $slug } } } + start_time: { gt: $after } + } sort: { fields: date, order: DESC } ) { totalCount