summaryrefslogtreecommitdiff
path: root/client/components
diff options
context:
space:
mode:
Diffstat (limited to 'client/components')
-rw-r--r--client/components/Browser/Browser.jsx4
-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.jsx2
-rw-r--r--client/components/Tasks/Tasks.jsx17
-rw-r--r--client/components/UI/AudioPlayer.jsx35
-rw-r--r--client/components/UI/Header.jsx2
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>
)
}