summaryrefslogtreecommitdiff
path: root/app/client/modules/samplernn/samplernn.datasets.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/client/modules/samplernn/samplernn.datasets.js')
-rw-r--r--app/client/modules/samplernn/samplernn.datasets.js109
1 files changed, 109 insertions, 0 deletions
diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js
new file mode 100644
index 0000000..5f15dbc
--- /dev/null
+++ b/app/client/modules/samplernn/samplernn.datasets.js
@@ -0,0 +1,109 @@
+import { h, Component } from 'preact'
+import { bindActionCreators } from 'redux'
+import { connect } from 'react-redux'
+
+import { actions, parser } from '../../api'
+import * as taskActions from '../../task/task.actions'
+import * as systemActions from '../../system/system.actions'
+
+import Dataset from '../../dataset/dataset.component'
+
+import Group from '../../common/group.component'
+import Slider from '../../common/slider.component'
+import Select from '../../common/select.component'
+import Button from '../../common/button.component'
+import FileList from '../../common/fileList.component'
+import TextInput from '../../common/textInput.component'
+
+class SampleRNNDatasets extends Component {
+ constructor(props){
+ super()
+ // fetch file list
+ this.fileOptions = this.fileOptions.bind(this)
+ this.pickFile = this.pickFile.bind(this)
+ props.actions.folder.index({ module: 'samplernn' })
+ props.actions.file.index({ module: 'samplernn' })
+ }
+ pickFile(file){
+ console.log('pick', file)
+ }
+ fileOptions(file){
+ console.log(file)
+ if (file.activity === 'url' && !file.dataset) {
+ if (this.props.runner.cpu.status !== 'IDLE') {
+ return (
+ <div className='gray'>
+ fetching...
+ </div>
+ )
+ } else {
+ return (
+ <div className='link' onClick={() => this.fetchURL(file.url)}>
+ fetch
+ </div>
+ )
+ }
+ }
+ return (
+ <div>
+ <div className='link' onClick={() => this.train(file)}>train</div>
+ {file.epoch == 0 && <div className='epochs'>{file.epochs} ep.</div>}
+ </div>
+ )
+ }
+ fetchURL(url) {
+ console.log(url)
+ this.props.actions.task.start_task({
+ activity: 'fetch',
+ module: 'samplernn',
+ dataset: 'test',
+ epochs: 1,
+ opt: { url }
+ }, { preempt: true, watch: true })
+ }
+ render(){
+ const { samplernn } = this.props
+ console.log(samplernn.upload)
+ // sort files??
+ const module = {
+ name: 'samplernn',
+ datatype: 'audio',
+ }
+ return (
+ <div className='app'>
+ <div className='heading'>
+ <h3>SampleRNN</h3>
+ </div>
+ <Dataset
+ canRename
+ canUpload
+ canAddURL
+ canDeleteFile
+ linkFiles
+ fileOptions={this.fileOptions}
+ onPick={this.handlePick}
+ module={module}
+ folder={samplernn.input.folder}
+ files={samplernn.input.files}
+ />
+ </div>
+ )
+ }
+}
+
+const mapStateToProps = state => ({
+ samplernn: state.module.samplernn,
+ runner: state.system.runner,
+ task: state.task,
+})
+
+const mapDispatchToProps = (dispatch, ownProps) => ({
+ actions: {
+ folder: bindActionCreators(actions.folder, dispatch),
+ file: bindActionCreators(actions.file, dispatch),
+ task: bindActionCreators(taskActions, dispatch),
+ system: bindActionCreators(systemActions, dispatch),
+ }
+})
+
+export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNDatasets)