diff options
Diffstat (limited to 'animism-align/frontend/views/align/components/timeline.component.js')
| -rw-r--r-- | animism-align/frontend/views/align/components/timeline.component.js | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/animism-align/frontend/views/align/components/timeline.component.js b/animism-align/frontend/views/align/components/timeline.component.js deleted file mode 100644 index 3b12cb5..0000000 --- a/animism-align/frontend/views/align/components/timeline.component.js +++ /dev/null @@ -1,129 +0,0 @@ -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 PlayButton from './playButton.component' -import PlayCursor from './playCursor.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) - this.handleClick = this.handleClick.bind(this) - } - componentDidMount() { - this.bind() - } - componentWillUnmount() { - this.unbind() - } - bind() { - document.addEventListener('keydown', this.handleKeydown) - } - unbind() { - document.removeEventListener('keydown', this.handleKeydown) - } - handleKeydown(e) { - if (document.activeElement !== document.body) { - return - } - if (e.shiftKey) { - switch (e.keyCode) { - case 187: // plus - actions.align.setZoom(this.props.timeline.zoom - 1) - break - case 189: // minus - actions.align.setZoom(this.props.timeline.zoom + 1) - break - } - } else { - console.log(e.keyCode) - switch (e.keyCode) { - case 32: // spacebar - actions.audio.toggle() - break - case 38: // up - actions.audio.jump(- ZOOM_STEPS[this.props.timeline.zoom] * 0.1) - break - case 40: // down - actions.audio.jump(ZOOM_STEPS[this.props.timeline.zoom] * 0.1) - break - } - } - } - 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)) - if (e.shiftKey) { - if (Math.abs(e.deltaY) < 2) return - if (e.deltaY > 0) { - actions.align.throttledSetZoom(this.props.timeline.zoom + 1) - } else { - actions.align.throttledSetZoom(this.props.timeline.zoom - 1) - } - } else if (e.altKey) { - actions.audio.seek(start_ts) - } else { - actions.align.setScrollPosition(start_ts) - } - } - handleMouseMove(e) { - const cursor_ts = positionToTime(e.pageY, this.props.timeline) - actions.align.setCursor(cursor_ts) - } - handleClick(e) { - const play_ts = positionToTime(e.pageY, this.props.timeline) - actions.audio.seek(play_ts) - } - render() { - return ( - <div - className='timeline' - onWheel={this.handleWheel} - onMouseMove={this.handleMouseMove} - > - <Waveform onClick={this.handleClick} /> - <Ticks timeline={this.props.timeline} /> - <Cursor timeline={this.props.timeline} /> - <PlayCursor /> - <PlayButton /> - </div> - ) - } -} - -const positionToTime = (y, { start_ts, zoom, duration }) => { - const secondsPerPixel = ZOOM_STEPS[zoom] * 0.1 - const widthTimeDuration = window.innerHeight * secondsPerPixel - - const timeMin = start_ts - const timeMax = Math.min(start_ts + widthTimeDuration, duration) - const timeWidth = timeMax - timeMin - - return clamp(y * secondsPerPixel + start_ts, 0, timeMax) -} - -const mapStateToProps = state => ({ - timeline: state.align.timeline, -}) - -const mapDispatchToProps = dispatch => ({ - // alignActions: bindActionCreators({ ...alignActions }, dispatch), -}) - -export default connect(mapStateToProps, mapDispatchToProps)(Timeline) |
