From b84e59cd2885a4974b83dde5d23b958dfcd6b3bb Mon Sep 17 00:00:00 2001 From: Franc Camps-Febrer Date: Tue, 8 Jan 2019 17:44:21 +0100 Subject: [PATCH] Center timeline on event select --- src/components/Timeline.jsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/components/Timeline.jsx b/src/components/Timeline.jsx index fc3f15b..eded3c1 100644 --- a/src/components/Timeline.jsx +++ b/src/components/Timeline.jsx @@ -58,6 +58,12 @@ class Timeline extends React.Component { scaleY: this.makeScaleY(nextProps.domain.categories) }); } + + if (hash(nextProps.app.selected) !== hash(this.props.app.selected)) { + if (nextProps.app.selected !== null) { + this.onCenterTime(parseDate(nextProps.app.selected[0].timestamp)); + } + } } addEventListeners() { @@ -132,6 +138,17 @@ class Timeline extends React.Component { }); } + onCenterTime(newCentralTime) { + const extent = this.getTimeScaleExtent(); + + const domain0 = d3.timeMinute.offset(newCentralTime, -extent/2); + const domainF = d3.timeMinute.offset(newCentralTime, +extent/2); + + this.setState({ timerange: [domain0, domainF] }, () => { + this.props.methods.onUpdateTimerange(this.state.timerange); + }); + } + /** * Change display of time range * WITHOUT updating the store, or data shown.