diff options
Diffstat (limited to 'client/components')
| -rw-r--r-- | client/components/Browser/Browser.jsx | 4 | ||||
| -rw-r--r-- | client/components/Browser/Folder/Files.jsx (renamed from client/components/Browser/Folder/Folder.jsx) | 20 | ||||
| -rw-r--r-- | client/components/Tasks/TaskFormView.jsx | 2 | ||||
| -rw-r--r-- | client/components/Tasks/Tasks.jsx | 17 | ||||
| -rw-r--r-- | client/components/UI/AudioPlayer.jsx | 35 | ||||
| -rw-r--r-- | client/components/UI/Header.jsx | 2 |
6 files changed, 66 insertions, 14 deletions
diff --git a/client/components/Browser/Browser.jsx b/client/components/Browser/Browser.jsx index 10b86c3..a7731f1 100644 --- a/client/components/Browser/Browser.jsx +++ b/client/components/Browser/Browser.jsx @@ -1,7 +1,7 @@ import { h, Component } from 'preact' import Folders from './Folders/Folders.jsx' -import Folder from './Folder/Folder.jsx' +import Files from './Folder/Files.jsx' import client from '../../client' @@ -36,7 +36,7 @@ class Browser extends Component { if (! folder_list.length) return const folder = folder_list[0] return ( - <Folder + <Files folder={folder} onClose={() => this.closeFolder(folder)} /> diff --git a/client/components/Browser/Folder/Folder.jsx b/client/components/Browser/Folder/Files.jsx index a3588f1..7d439c5 100644 --- a/client/components/Browser/Folder/Folder.jsx +++ b/client/components/Browser/Folder/Files.jsx @@ -1,22 +1,25 @@ import { h, Component } from 'preact' +import { audioPlayFile } fromĀ '../../../actions' + import client from '../../../client.js' import FileUploadButton from './FileUploadButton.jsx' +import FileLink from '../../../containers/fileLink.js' import TaskContentLink from '../../../containers/taskContentLink.js' import TaskStyleLink from '../../../containers/taskStyleLink.js' -export default class Folder extends Component { +export default class Files extends Component { constructor(props) { super() this.state = { files: props.folder.files || [], + selected: null, } this.addFiles = this.addFiles.bind(this) if (! props.folder.files) { client.file.index({ folder_id: props.folder.id }).then( files => this.setState({ files }) ) } - this.audio = document.createElement('audio') } addFiles(newFiles) { if (! newFiles) return @@ -25,21 +28,22 @@ export default class Folder extends Component { } handleClick(file) { if (file.type === 'audio') { - this.audio.setAttribute('src', mp3path(file)) - this.audio.play() + audioPlayFile(file) document.body.style.backgroundImage = 'url(' + pngpath(file) + ')' } + this.setState({ selected: file }) } render() { const files = (this.state.files).map(toFilenamePair).sort(sortByFilename).map(fromPair).map( (file, i) => { if (! file) return return ( - <div key={i}> - <span class='name' onClick={() => this.handleClick(file)}>{file.name}</span> + <div key={i} class={this.state.selected === file ? 'selected' : ''}> + <span class='name'><FileLink file={file}>{file.name}</FileLink></span> <span class='mime'>{file.mime}</span> + <span class='duration'>{file.duration.toFixed(1) + 's'}</span> <span class='actions'> - <TaskContentLink file={file}> content </TaskContentLink> - <TaskStyleLink file={file}> style </TaskStyleLink> + <TaskContentLink file={file}>content</TaskContentLink> + <TaskStyleLink file={file}>style</TaskStyleLink> </span> </div> ) diff --git a/client/components/Tasks/TaskFormView.jsx b/client/components/Tasks/TaskFormView.jsx index 36660de..e296a66 100644 --- a/client/components/Tasks/TaskFormView.jsx +++ b/client/components/Tasks/TaskFormView.jsx @@ -4,7 +4,7 @@ import { Link } from 'react-router-dom' import client from '../../client.js' export default function TaskFormView (props) { - console.log(props) + // console.log(props) return ( <div class='form'> <div> diff --git a/client/components/Tasks/Tasks.jsx b/client/components/Tasks/Tasks.jsx index a107acf..263e669 100644 --- a/client/components/Tasks/Tasks.jsx +++ b/client/components/Tasks/Tasks.jsx @@ -10,14 +10,20 @@ export default class Tasks extends Component { super() this.state = { adding: false, + tasks: [], } client.task.index().then( tasks => this.setState({ tasks }) ) } render() { - const tasks = (this.props.tasks || []).map( (task, i) => { +// <span class='name'>{task.result_file.name}</span> + const tasks = (this.state.tasks || []).map( (task, i) => { return ( <div key={i} onClick={() => this.toggle(task)}> - <span class='name'>{task.name}</span> + <span>{task.id}</span> + <span>{task.created_at}</span> + <span class='name'>{task.content_file.name}</span> + <span class='name'>{task.style_file.name}</span> + <span>{task.alpha}</span> </div> ) }) @@ -25,9 +31,14 @@ export default class Tasks extends Component { <div class='column'> <div class='window'> <div class='heading'> - <b>tasks</b> + <b>create task</b> </div> <TaskForm /> + </div> + <div class='window'> + <div class='heading'> + <b>recent tasks</b> + </div> <div class='list'> {tasks} </div> diff --git a/client/components/UI/AudioPlayer.jsx b/client/components/UI/AudioPlayer.jsx new file mode 100644 index 0000000..de6502c --- /dev/null +++ b/client/components/UI/AudioPlayer.jsx @@ -0,0 +1,35 @@ +import { h, Component } from 'preact' + +const audio = document.createElement('audio') + +export default function AudioPlayer (props) { + if (props.file) { + audio.src = mp3path(props.file) + audio.play() + return ( + <div> + Playing {props.file.name} + </div> + ) + } + else { + return ( + <div> + Not Playing + </div> + ) + } +} + +function filepath (file) { + return '/data/' + file.folder_id + '/' + encodeURIComponent(file.name) +} +function mp3path (file) { + if (file.mime !== 'audio/mp3') { + return filepath(file) + '.mp3' + } + return filepath(file) +} +function pngpath (file) { + return filepath(file) + '.png' +} diff --git a/client/components/UI/Header.jsx b/client/components/UI/Header.jsx index 1727f7a..55dd25f 100644 --- a/client/components/UI/Header.jsx +++ b/client/components/UI/Header.jsx @@ -1,5 +1,6 @@ import { h, Component } from 'preact' // import { Link } from 'react-router-dom' +import AudioPlayerContainer from '../../containers/audioPlayerContainer.js' export default class Header extends Component { constructor(props) { @@ -11,6 +12,7 @@ export default class Header extends Component { return ( <div class='header'> <b>spawn cortex</b> + <AudioPlayerContainer /> </div> ) } |
