import React from 'react' import DatetimeDot from './DatetimeDot' import DatetimeBar from './DatetimeBar' import DatetimeSquare from './DatetimeSquare' import DatetimeStar from './DatetimeStar' import Project from './Project' import { calcOpacity } from '../../../common/utilities' import { sizes } from '../../../common/global' function renderDot (event, styles, props) { return } function renderBar (event, styles, props) { const fillOpacity = props.features.GRAPH_NONLOCATED ? event.projectOffset >= 0 ? styles.opacity : 0.5 : 0.6 return } function renderDiamond (event, styles, props) { return } function renderStar (event, styles, props) { return } const TimelineEvents = ({ events, projects, narrative, getDatetimeX, getCategoryY, getCategoryColor, getHighlights, onSelect, transitionDuration, dims, features }) => { const narIds = narrative ? narrative.steps.map(s => s.id) : [] function renderEvent (event) { if (narrative) { if (!(narIds.includes(event.id))) { return null } } const isDot = (!!event.location && !!event.longitude) || (features.GRAPH_NONLOCATED && event.projectOffset !== -1) let renderShape = isDot ? renderDot : renderBar if (event.shape) { if (event.shape === 'bar') { renderShape = renderBar } else if (event.shape === 'diamond') { renderShape = renderDiamond } else if (event.shape === 'star') { renderShape = renderStar } } let eventY = getCategoryY(event.category) const isNonlocated = !event.latitude && !event.longitude if (features.GRAPH_NONLOCATED && isNonlocated) { const { project } = event if (project) { const { offset } = projects[project] eventY = dims.marginTop + offset + sizes.eventDotR } else { eventY = 0 } } let colour = event.colour ? event.colour : getCategoryColor(event.category) const styles = { fill: colour, fillOpacity: eventY > 0 ? calcOpacity(1) : 0, transition: `transform ${transitionDuration / 1000}s ease` } return renderShape(event, styles, { x: getDatetimeX(event.datetime), y: eventY, onSelect: () => { console.log(event); onSelect(event) }, dims, highlights: features.HIGHLIGHT_GROUPS ? getHighlights(event.tags[features.HIGHLIGHT_GROUPS.tagIndexIndicatingGroup]) : [], features }) } /* set `renderProjects` */ // TODO(lachlan): remove hardcoded 'Legislation' let renderProjects = () => null if (features.GRAPH_NONLOCATED) { renderProjects = function () { return {Object.values(projects).map(project => console.log(project)} getX={getDatetimeX} dims={dims} colour={getCategoryColor(project.category)} />)} } } return ( {renderProjects()} {events.map(event => renderEvent(event))} ) } export default TimelineEvents