import React, { Component } from 'react' // import { Link } from 'react-router-dom' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import actions from '../../../actions' // import * as alignActions from '../align.actions' import Waveform from './waveform.component' import Ticks from './ticks.component' import Cursor from './cursor.component' import { ZOOM_STEPS } from '../constants' import { clamp } from '../../../util' class Timeline extends Component { constructor(props){ super(props) this.handleKeydown = this.handleKeydown.bind(this) this.handleMouseMove = this.handleMouseMove.bind(this) this.handleWheel = this.handleWheel.bind(this) } componentDidMount() { this.bind() } componentWillUnmount() { this.unbind() } bind() { document.addEventListener('keydown', this.handleKeydown) } unbind() { document.removeEventListener('keydown', this.handleKeydown) } handleKeydown(e) { if (e.shiftKey && e.keyCode === 189) { actions.align.setZoom(this.props.timeline.zoom - 1) } else if (e.shiftKey && e.keyCode === 187) { actions.align.setZoom(this.props.timeline.zoom + 1) } } handleWheel(e) { let { start_ts, zoom, duration } = this.props.timeline let secondsPerPixel = ZOOM_STEPS[zoom] * 0.1 // 0.1 sec / step let widthTimeDuration = window.innerHeight * secondsPerPixel // secs per pixel start_ts = clamp(start_ts + e.deltaY * ZOOM_STEPS[zoom], 0, Math.max(0, duration - widthTimeDuration / 2)) console.log(start_ts) actions.align.setScrollPosition(start_ts) } handleMouseMove(e) { const { start_ts, zoom, duration } = this.props.timeline const y = e.pageY const height = window.innerHeight let secondsPerPixel = ZOOM_STEPS[zoom] * 0.1 let widthTimeDuration = height * secondsPerPixel let timeMin = start_ts let timeMax = Math.min(start_ts + widthTimeDuration, duration) let timeWidth = timeMax - timeMin let cursor_ts = y * secondsPerPixel + start_ts cursor_ts = clamp(cursor_ts, 0, timeMax) actions.align.setCursor(cursor_ts) // let pixelMin = timeMin / secondsPerPixel // const ts = } render() { return (