diff --git a/gatsby-node.js b/gatsby-node.js index 26d8c12..4ae3364 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -102,7 +102,8 @@ exports.createPages = ({ actions, graphql }) => { createPage, items: posts, itemsPerPage: 10, - pathPrefix: ({ pageNumber }) => (pageNumber === 0 ? `/` : `/page`), + pathPrefix: ({ pageNumber }) => + pageNumber === 0 ? `/nyheter/` : `/nyheter/page`, component: blogTemplate, }) }) @@ -158,6 +159,14 @@ exports.createPages = ({ actions, graphql }) => { component: programTemplate, }) }) + .then(() => { + const indexTemplate = path.resolve(`./src/templates/front-page.js`) + + createPage({ + path: `/`, + component: indexTemplate, + }) + }) .then(() => { return graphql(` { diff --git a/src/components/EventList.js b/src/components/EventList.js index 8192f2e..1bab5ff 100644 --- a/src/components/EventList.js +++ b/src/components/EventList.js @@ -8,7 +8,34 @@ import 'moment/locale/nb' moment.locale('nb') export default class EventList extends React.Component { - render_event(event) { + render() { + const { events, title, onlyUpcoming, numDays } = this.props + + const displayEvents = events.filter(({ node: event }) => { + const startTime = moment(event.start_time) + if (onlyUpcoming && !startTime.isSameOrAfter(new Date(), 'day')) { + return false + } + if (numDays) { + const lastDay = moment().add(numDays - 1, 'days') + if (!startTime.isSameOrBefore(lastDay, 'day')) { + return false + } + } + return true + }) + + return ( +
+ {title &&

{title}

} +
+ {displayEvents.map(({ node: event }) => this.renderEvent(event))} +
+
+ ) + } + + renderEvent(event) { return (
@@ -55,24 +82,18 @@ export default class EventList extends React.Component { ) } - - render() { - const { events, title } = this.props - - return ( -
-

{title}

-
- {events.map(({ node: event }) => this.render_event(event))} -
-
- ) - } } EventList.propTypes = { events: PropTypes.arrayOf(PropTypes.object), title: PropTypes.string, + onlyUpcoming: PropTypes.bool, + numDays: PropTypes.number, +} + +EventList.defaultProps = { + onlyUpcoming: true, + numDays: 0, } export const pageQuery = graphql` diff --git a/src/components/Navbar.js b/src/components/Navbar.js index 869a52d..e8a8da8 100644 --- a/src/components/Navbar.js +++ b/src/components/Navbar.js @@ -21,7 +21,7 @@ const Navbar = () => (
diff --git a/src/components/PostList.js b/src/components/PostList.js index 883bdac..72723ee 100644 --- a/src/components/PostList.js +++ b/src/components/PostList.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { Link, graphql } from 'gatsby' -export default class IndexPage extends React.Component { +export default class PostList extends React.Component { render() { const { posts, title } = this.props @@ -37,7 +37,7 @@ export default class IndexPage extends React.Component { } } -IndexPage.propTypes = { +PostList.propTypes = { posts: PropTypes.arrayOf(PropTypes.object), title: PropTypes.string, } diff --git a/src/templates/blog.js b/src/templates/blog.js index 9dd4e08..18d1e87 100644 --- a/src/templates/blog.js +++ b/src/templates/blog.js @@ -5,21 +5,21 @@ import Layout from '../components/Layout' import PostList from '../components/PostList' import Pagination from '../components/Pagination' -export default class IndexPage extends React.Component { +export default class BlogPage extends React.Component { render() { const { data, pageContext } = this.props const { edges: posts } = data.allWordpressPost return ( - + ) } } -IndexPage.propTypes = { +BlogPage.propTypes = { data: PropTypes.shape({ allWordpressPost: PropTypes.shape({ edges: PropTypes.array, @@ -32,7 +32,7 @@ IndexPage.propTypes = { } export const pageQuery = graphql` - query IndexQuery($limit: Int!, $skip: Int!) { + query BlogQuery($limit: Int!, $skip: Int!) { allWordpressPost( sort: { fields: date, order: DESC } limit: $limit diff --git a/src/templates/event-program.js b/src/templates/event-program.js index 18bdaec..68343c8 100644 --- a/src/templates/event-program.js +++ b/src/templates/event-program.js @@ -27,7 +27,7 @@ EventProgram.propTypes = { export const pageQuery = graphql` query { - allWordpressWpEvents(sort: { fields: date, order: DESC }) { + allWordpressWpEvents(sort: { fields: start_time, order: ASC }) { edges { node { ...EventListFields diff --git a/src/templates/event.js b/src/templates/event.js index 72758ce..0ef0403 100644 --- a/src/templates/event.js +++ b/src/templates/event.js @@ -118,7 +118,9 @@ const Event = ({ data }) => { + + + + ) + } +} + +IndexPage.propTypes = { + data: PropTypes.shape({ + allWordpressPost: PropTypes.shape({ + edges: PropTypes.array, + }), + allWordpressWpEvents: PropTypes.shape({ + edges: PropTypes.array, + }), + }), +} + +export const pageQuery = graphql` + query { + allWordpressWpEvents(sort: { fields: start_time, order: ASC }) { + edges { + node { + ...EventListFields + } + } + } + allWordpressPost(sort: { fields: date, order: DESC }, limit: 4) { + edges { + node { + ...PostListFields + } + } + } + } +`