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 | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/animism-align/frontend/views/align/components/timeline.component.js b/animism-align/frontend/views/align/components/timeline.component.js new file mode 100644 index 0000000..af3c57b --- /dev/null +++ b/animism-align/frontend/views/align/components/timeline.component.js @@ -0,0 +1,75 @@ +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 uploadActions from './upload.actions' + +import Ticks from './ticks.component' + +import * as constants from '../constants' + +class Timeline extends Component { + constructor(props){ + super(props) + this.canvasRef = React.createRef() + this.handleKeydown = this.handleKeydown.bind(this) + } + componentDidMount() { + this.bind() + this.resize() + this.draw() + } + componentDidUpdate() { + this.draw() + } + componentWillUnmount() { + this.unbind() + } + bind() { + document.addEventListener('keydown', this.handleKeydown) + } + unbind() { + document.removeEventListener('keydown', this.handleKeydown) + } + handleKeydown(e) { + // console.log(e.shiftKey, e.keyCode) + } + resize() { + const canvas = this.canvasRef.current + canvas.width = window.innerWidth + canvas.height = constants.DEFAULT_HEIGHT + } + draw() { + const canvas = this.canvasRef.current + const ctx = canvas.getContext('2d') + const w = window.innerWidth + this.clearCanvas(ctx, w) + } + clearCanvas(ctx, w) { + const h = constants.WAVEFORM_HEIGHT + ctx.clearRect(0, 0, w, h) + ctx.fillStyle = 'rgba(0,0,0,0.5)' + ctx.fillRect(0, 0, w, h) + ctx.fillStyle = 'rgba(64,128,192,0.5)' + } + render() { + return ( + <div className='timeline'> + <canvas ref={this.canvasRef} /> + <Ticks timeline={this.props.timeline} /> + </div> + ) + } +} + +const mapStateToProps = state => ({ + timeline: state.align.timeline, +}) + +const mapDispatchToProps = dispatch => ({ + // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(Timeline) |
