summaryrefslogtreecommitdiff
path: root/app/client/modules/samplernn/samplernn.results.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/client/modules/samplernn/samplernn.results.js')
-rw-r--r--app/client/modules/samplernn/samplernn.results.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/app/client/modules/samplernn/samplernn.results.js b/app/client/modules/samplernn/samplernn.results.js
new file mode 100644
index 0000000..518864b
--- /dev/null
+++ b/app/client/modules/samplernn/samplernn.results.js
@@ -0,0 +1,108 @@
+import { h, Component } from 'preact'
+import { bindActionCreators } from 'redux'
+import { connect } from 'react-redux'
+import * as util from '../../util'
+
+import * as samplernnActions from './samplernn.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, FileRow } from '../../common/fileList.component'
+import TextInput from '../../common/textInput.component'
+
+class SampleRNNResults extends Component {
+ constructor(props){
+ super()
+ this.fileOptions = this.fileOptions.bind(this)
+ this.pickFile = this.pickFile.bind(this)
+ let id = props.match.params.id || localStorage.getItem('samplernn.last_id')
+ if (!props.samplernn.data) props.actions.load_directories()
+ }
+ pickFile(file){
+ console.log('pick', file)
+ }
+ fileOptions(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>
+ )
+ }
+ render(){
+ if (this.props.samplernn.loading) return <span>Loading</span>
+ console.log(this.props.samplernn.data)
+ const { folderLookup } = this.props.samplernn.data
+ // const { folderLookup } = samplernn
+ console.log(this.props)
+
+ const renders = Object.keys(folderLookup).sort(util.sort.stringSort.asc).map(key => {
+ const folder = folderLookup[key]
+ let { mapFn, sortFn } = util.sort.orderByFn('epoch desc')
+ console.log(mapFn, sortFn)
+ const datasetPairs = folder.datasets.map(mapFn).sort(sortFn)
+ const bestRenders = datasetPairs
+ .map(pair => pair[1])
+ .filter(dataset => dataset.output.length)
+ .map(dataset => {
+ const { output } = dataset
+ return output.map(mapFn).sort(sortFn)[0][1]
+ })
+ console.log(bestRenders.map(r => r.epoch))
+ return (
+ <div className='col'>
+ <h3>{key}</h3>
+ {!!bestRenders.length &&
+ <FileList
+ files={bestRenders}
+ orderBy='epoch desc'
+ fields={'name date epoch size'}
+ />
+ }
+ </div>
+ )
+ })
+
+ return (
+ <div className='app'>
+ <div className='heading'>
+ <h2>SampleRNN</h2>
+ </div>
+ <div class='rows params renders'>
+ {renders}
+ </div>
+ </div>
+ )
+ }
+}
+
+const mapStateToProps = state => ({
+ samplernn: state.module.samplernn,
+ runner: state.system.runner,
+ task: state.task,
+})
+
+const mapDispatchToProps = (dispatch, ownProps) => ({
+ actions: bindActionCreators(samplernnActions, dispatch),
+})
+
+export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNResults)