Link events to venues, but handle custom venues
This commit is contained in:
1 parent
cb53037a8b
commit
cbe7107038
3 files changed
+55
-13
No files matched your search
+2
-1
@@ -6,7 +6,8 @@
|
||||
"react/prefer-stateless-function": "off",
|
||||
"react/require-default-props": "off",
|
||||
"react/no-danger": "off",
|
||||
"react/jsx-one-expression-per-line": "off"
|
||||
"react/jsx-one-expression-per-line": "off",
|
||||
"no-underscore-dangle": "off"
|
||||
},
|
||||
"settings": {
|
||||
"import/core-modules": []
|
||||
|
||||
+21
-3
@@ -28,6 +28,7 @@ export const EventTemplate = ({
|
||||
startTime,
|
||||
endTime,
|
||||
venue,
|
||||
venueCustom,
|
||||
facebookUrl,
|
||||
ticketUrl,
|
||||
priceStudent,
|
||||
@@ -41,7 +42,17 @@ export const EventTemplate = ({
|
||||
<div className="event-hero_text">
|
||||
<h1>{title}</h1>
|
||||
<div className="event-meta">
|
||||
<div className="venue">i {venue}</div>
|
||||
<div className="venue">
|
||||
{venueCustom && <span>{venueCustom}</span>}
|
||||
{venue && venue.title !== 'Hele huset' && (
|
||||
<span>
|
||||
{venue.preposition} <Link to={venue.path}>{venue.title}</Link>
|
||||
</span>
|
||||
)}
|
||||
{venue && venue.title === 'Hele huset' && (
|
||||
<span>på Chateau Neuf</span>
|
||||
)}
|
||||
</div>
|
||||
<div className="event-date">
|
||||
<span className="event-date-weekday">
|
||||
{moment(startTime).format('dddd')}{' '}
|
||||
@@ -111,7 +122,8 @@ EventTemplate.propTypes = {
|
||||
featuredMedia: PropTypes.shape({}),
|
||||
startTime: PropTypes.string.isRequired,
|
||||
endTime: PropTypes.string,
|
||||
venue: PropTypes.string,
|
||||
venue: PropTypes.shape({}),
|
||||
venueCustom: PropTypes.string,
|
||||
facebookUrl: PropTypes.string,
|
||||
ticketUrl: PropTypes.string,
|
||||
priceStudent: PropTypes.string,
|
||||
@@ -132,6 +144,7 @@ const Event = ({ data }) => {
|
||||
startTime={event.start_time}
|
||||
endTime={event.end_time}
|
||||
venue={event.venue}
|
||||
venueCustom={event.venue_custom}
|
||||
facebookUrl={event.facebook_url}
|
||||
ticketUrl={event.ticket_url}
|
||||
priceStudent={event.price_member}
|
||||
@@ -160,7 +173,12 @@ export const eventQuery = graphql`
|
||||
content
|
||||
start_time
|
||||
end_time
|
||||
venue
|
||||
venue {
|
||||
title
|
||||
path
|
||||
preposition
|
||||
}
|
||||
venue_custom
|
||||
facebook_url
|
||||
ticket_url
|
||||
price_member
|
||||
|
||||
+32
-9
@@ -2,14 +2,6 @@ const Entities = require('html-entities').AllHtmlEntities
|
||||
|
||||
const htmlEntities = new Entities()
|
||||
|
||||
const neufNormalizer = ({ entities }) => {
|
||||
entities = decodeTitles(entities)
|
||||
entities = mapEventsToEventTypes(entities)
|
||||
return entities
|
||||
}
|
||||
|
||||
exports.neufNormalizer = neufNormalizer
|
||||
|
||||
const decodeTitles = entities => {
|
||||
return entities.map(e => {
|
||||
if (e.title) {
|
||||
@@ -25,7 +17,7 @@ const mapEventsToEventTypes = entities => {
|
||||
|
||||
return entities.map(e => {
|
||||
// Replace event types with links to their nodes.
|
||||
let eventHasType =
|
||||
const eventHasType =
|
||||
e.event_types && Array.isArray(e.event_types) && e.event_types.length
|
||||
if (eventTypes.length && eventHasType) {
|
||||
e.event_types___NODE = e.event_types.map(
|
||||
@@ -41,3 +33,34 @@ const mapEventsToEventTypes = entities => {
|
||||
return e
|
||||
})
|
||||
}
|
||||
|
||||
const mapEventsToVenues = entities => {
|
||||
const venues = entities.filter(e => e.__type === 'wordpress__wp_venues')
|
||||
|
||||
return entities.map(e => {
|
||||
if (e.__type !== 'wordpress__wp_events') {
|
||||
return e
|
||||
}
|
||||
// Replace venue IDs with links to their nodes.
|
||||
const venueId = parseInt(e.venue_id, 10)
|
||||
const eventHasVenueId = !Number.isNaN(venueId)
|
||||
if (!eventHasVenueId) {
|
||||
e.venue_custom = e.venue
|
||||
} else {
|
||||
e.venue_custom = null
|
||||
e.venue___NODE = venues.find(obj => venueId === obj.wordpress_id).id
|
||||
}
|
||||
delete e.venue
|
||||
delete e.venue_id
|
||||
return e
|
||||
})
|
||||
}
|
||||
|
||||
const neufNormalizer = ({ entities }) => {
|
||||
entities = decodeTitles(entities)
|
||||
entities = mapEventsToEventTypes(entities)
|
||||
entities = mapEventsToVenues(entities)
|
||||
return entities
|
||||
}
|
||||
|
||||
exports.neufNormalizer = neufNormalizer
|
||||
Reference in new issue
Block a user