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
+ }
+ }
+ }
+ }
+`