WIP: shapes and colours

This commit is contained in:
Lachlan Kermode
2020-05-14 19:22:36 +02:00
parent 3641756539
commit d548ca875b
4 changed files with 82 additions and 14 deletions

View File

@@ -1,23 +1,24 @@
import React from 'react'
export default ({
category,
events,
x,
y,
r,
transform,
onSelect,
styleProps,
extraRender
}) => (
<rect
onClick={onSelect}
className='event'
x={x}
y={y - 0.5 * r}
style={styleProps}
width={r}
height={r}
/>
)
}) => {
return (
<rect
onClick={onSelect}
className='event'
x={x}
y={y - r}
style={styleProps}
width={r}
height={r}
transform={`rotate(45, ${x}, ${y})`}
/>
)
}

View File

@@ -0,0 +1,24 @@
import React from 'react'
export default ({
x,
y,
r,
transform,
onSelect,
styleProps,
extraRender
}) => {
const s = r * 2 / 3
const s2 = r * 4 / 3
return (
<polygon
onClick={onSelect}
className='event'
x={x}
y={y - r}
style={styleProps}
points={`${x},${y + s} ${x - s},${y - s} ${x + s},${y} ${x - s},${y} ${x + s},${y - s}`}
/>
)
}

View File

@@ -1,6 +1,8 @@
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'
@@ -76,6 +78,39 @@ const TimelineEvents = ({
/>
}
function renderDiamond (event, colour) {
const props = ({
fill: colour,
fillOpacity: calcOpacity(1),
transition: `transform ${transitionDuration / 1000}s ease`
})
return <DatetimeSquare
onSelect={() => onSelect([event])}
x={getDatetimeX(event.timestamp)}
y={getCategoryY(event.category)}
r={1.8 * sizes.eventDotR}
styleProps={props}
/>
}
function renderStar (event, colour) {
const props = ({
fill: colour,
fillOpacity: calcOpacity(1),
transition: `transform ${transitionDuration / 1000}s ease`,
fillRule: 'nonzero'
})
return <DatetimeStar
onSelect={() => onSelect([event])}
x={getDatetimeX(event.timestamp)}
y={getCategoryY(event.category)}
r={1.8 * sizes.eventDotR}
styleProps={props}
transform='rotate(90)'
/>
}
function renderDatetime (datetime) {
// narrative checking for non-rendering still uses datetimes as legacy TODO(lachlan)
if (narrative) {
@@ -157,6 +192,10 @@ const TimelineEvents = ({
if (event.shape) {
if (event.shape === 'bar') {
renderShape = renderBar
} else if (event.shape === 'diamond') {
renderShape = renderDiamond
} else if (event.shape === 'star') {
renderShape = renderStar
}
}

View File

@@ -53,6 +53,10 @@ const TimelineMarkers = ({
return renderCircle()
case 'bar':
return renderBar()
case 'diamond':
return renderCircle()
case 'star':
return renderCircle()
default:
return isLocated ? renderBar() : renderCircle()
}