diff options
Diffstat (limited to 'animism-align/frontend/views/media/components/media.formVideo.js')
| -rw-r--r-- | animism-align/frontend/views/media/components/media.formVideo.js | 89 |
1 files changed, 78 insertions, 11 deletions
diff --git a/animism-align/frontend/views/media/components/media.formVideo.js b/animism-align/frontend/views/media/components/media.formVideo.js index 16c1fbb..89954b9 100644 --- a/animism-align/frontend/views/media/components/media.formVideo.js +++ b/animism-align/frontend/views/media/components/media.formVideo.js @@ -1,11 +1,12 @@ import React, { Component } from 'react' import { Link } from 'react-router-dom' +import VimeoPlayer from '@u-wave/react-vimeo' -import { session } from '../../../session' import { capitalize } from '../../../util' - import { TextInput, LabelDescription, Select, TextArea, Checkbox, SubmitButton, Loader } from '../../../common' +import { getVimeoMetadata } from '../media.actions' + export default class MediaVideoForm extends Component { state = { } @@ -17,27 +18,93 @@ export default class MediaVideoForm extends Component { this.handleSettingsChange = this.handleSettingsChange.bind(this) } - componentDidMount() { - } - handleChange(e) { - const { name, value } = e.target - this.handleSelect(name, value) + let { name, value } = e.target + return this.handleSelect(name, value) } handleSelect(name, value) { - this.props.onSelect(name, value) + value = value.trim() + if (name === 'url') { + getVimeoMetadata(value) + .then(data => { + console.log('video metadata', data) + this.props.onChange(name, value) + setTimeout(() => { + this.props.onSettingsChange('video', { + thumbnail_url: data.thumbnail_url, + duration: data.duration, + video_id: data.video_id, + }) + }, 20) + }) + } else { + this.props.onChange(name, value) + } + } + + handleSettingsChange(e) { + let { name, value } = e.target + this.props.onSettingsChange(name, value) } - handleSettingsChange(name, value) { + handleSettingsSelect(name, value) { this.props.onSettingsChange(name, value) } render() { const { data } = this.props - console.log(data) return ( - <div className='imageForm'> + <div className='videoForm'> + <TextInput + title="Video URL" + name="url" + required + data={data} + onChange={this.handleChange} + autoComplete="off" + /> + + {data.url && + <div> + <LabelDescription className='video'> + <VimeoPlayer video={data.url} /> + </LabelDescription> + + {data.settings.video && data.settings.video.thumbnail && + <LabelDescription className='thumbnail'> + <img src={data.settings.video.thumbnail} /> + </LabelDescription> + } + + <TextInput + title="Start time" + name="video_start_time" + data={data.settings} + placeholder="0:00" + onChange={this.handleSettingsChange} + autoComplete="off" + /> + + <TextInput + title="End time" + name="video_end_time" + data={data.settings} + placeholder="0:00" + onChange={this.handleSettingsChange} + autoComplete="off" + /> + + <TextInput + title="Original duration" + name="original_duration" + data={data.settings} + placeholder="0:00" + onChange={this.handleSettingsChange} + autoComplete="off" + /> + </div> + } </div> ) } |
