summaryrefslogtreecommitdiff
path: root/animism-align/frontend/views/align/components/timeline.component.js
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/frontend/views/align/components/timeline.component.js')
-rw-r--r--animism-align/frontend/views/align/components/timeline.component.js75
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)