layered projects working; with some bugs

This commit is contained in:
Lachlan Kermode
2020-03-26 16:58:01 +01:00
parent 678d63f78b
commit 85476ee6fb
6 changed files with 96 additions and 23 deletions

View File

@@ -63,7 +63,6 @@ class Map extends React.Component {
}
initializeMap () {
return
/**
* Creates a Leaflet map and a tilelayer for the map background
*/

View File

@@ -259,8 +259,8 @@ class Timeline extends React.Component {
this.props.methods.onUpdateTimerange(this.state.timerange)
}
getDatetimeX (dt) {
return this.state.scaleX(parseDate(dt.timestamp))
getDatetimeX (timestamp) {
return this.state.scaleX(parseDate(timestamp))
}
/**

View File

@@ -1,6 +1,7 @@
import React from 'react'
import DatetimeDot from './DatetimeDot'
import DatetimeBar from './DatetimeBar'
import Project from './Project'
import { getEventOpacity } from '../../../common/utilities'
import { sizes } from '../../../common/global'
@@ -85,7 +86,7 @@ const TimelineEvents = ({
onSelect={() => onSelect(unlocatedEvents)}
category={dot.category}
events={unlocatedEvents}
x={getDatetimeX(datetime)}
x={getDatetimeX(datetime.timestamp)}
y={dims.marginTop}
width={sizes.eventDotR}
height={dims.trackHeight}
@@ -98,7 +99,7 @@ const TimelineEvents = ({
onSelect={() => onSelect(unlocatedEvents)}
category={dot.category}
events={[ev]}
x={getDatetimeX(datetime)}
x={getDatetimeX(datetime.timestamp)}
y={ev.projectOffset >= 0 ? dims.trackHeight - ev.projectOffset : dims.marginTop}
width={sizes.eventDotR}
height={ev.projectOffset >= 0 ? sizes.eventDotR * 2 : 20}
@@ -112,7 +113,7 @@ const TimelineEvents = ({
onSelect={() => onSelect(locatedEvents)}
category={dot.category}
events={locatedEvents}
x={getDatetimeX(datetime)}
x={getDatetimeX(datetime.timestamp)}
y={getCategoryY(dot.category)}
r={sizes.eventDotR}
styleProps={locatedProps}
@@ -125,10 +126,32 @@ const TimelineEvents = ({
})
}
// const projOffsets = {}
// const pEvents = datetimes.filter(dt => dt.events.some(ev => ev.project !== null))
// pEvents.forEach(({ events }) => {
// events.forEach(ev => {
// if (!projOffsets.hasOwnProperty(ev.project)) {
// projOffsets[ev.project] = ev.projectOffset
// }
// })
// })
let projects
if (process.env.features.ASSOCIATIVE_EVENTS_BY_TAG) {
projects = datetimes[1]
datetimes = datetimes[0]
}
return (
<g
clipPath={'url(#clip)'}
>
{projects.map(project => (<Project
{...project}
getX={getDatetimeX}
dims={dims}
colour={getCategoryColor(project.category)}
/>))}
{datetimes.map(datetime => renderDatetime(datetime))}
</g>
)

View File

@@ -24,7 +24,7 @@ const TimelineMarkers = ({
stroke-linejoin='round'
stroke-dasharray={styles ? styles['stroke-dasharray'] : '2,2'}
style={{
'transform': `translate(${getEventX(event)}px, ${getCategoryY(event.category)}px)`,
'transform': `translate(${getEventX(event.timestamp)}px, ${getCategoryY(event.category)}px)`,
'-webkit-transition': `transform ${transitionDuration / 1000}s ease`,
'-moz-transition': 'none',
'opacity': 0.9
@@ -43,7 +43,7 @@ const TimelineMarkers = ({
stroke-width={styles ? styles['stroke-width'] : 1}
stroke-dasharray={styles ? styles['stroke-dasharray'] : '2,2'}
style={{
'transform': `translate(${getEventX(event)}px, 40px)`,
'transform': `translate(${getEventX(event.timestamp)}px, 40px)`,
'-webkit-transition': `transform ${transitionDuration / 1000}s ease`,
'-moz-transition': 'none',
'opacity': 0.9

View File

@@ -0,0 +1,23 @@
import React from 'react'
import { sizes } from '../../../common/global'
export default ({
id,
offset,
start,
end,
getX,
dims,
colour
}) => {
const length = getX(end) - getX(start)
return <rect
onClick={() => alert('TODO: associate all events')}
className='project'
x={getX(start)}
y={dims.trackHeight - offset}
width={length}
style={{ fill: colour, fillOpacity: 0.1 }}
height={2 * sizes.eventDotR}
/>
}