summaryrefslogtreecommitdiff
path: root/app/client/modules/samplernn/views/samplernn.results.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/client/modules/samplernn/views/samplernn.results.js')
-rw-r--r--app/client/modules/samplernn/views/samplernn.results.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/app/client/modules/samplernn/views/samplernn.results.js b/app/client/modules/samplernn/views/samplernn.results.js
new file mode 100644
index 0000000..12367a3
--- /dev/null
+++ b/app/client/modules/samplernn/views/samplernn.results.js
@@ -0,0 +1,84 @@
+import { h, Component } from 'preact'
+import { bindActionCreators } from 'redux'
+import { Link } from 'react-router-dom';
+import { connect } from 'react-redux'
+
+import * as util from '../../../util'
+import * as samplernnActions from '../samplernn.actions'
+import * as audioPlayerActions from '../../../common/audioPlayer/audioPlayer.actions'
+
+import Loading from '../../../common/loading.component'
+import { FileList, FileRow } from '../../../common/fileList.component'
+
+class SampleRNNResults extends Component {
+ constructor(props){
+ super()
+ if (!props.samplernn.data) props.actions.load_directories()
+ }
+ render(){
+ if (this.props.samplernn.loading) return <Loading progress={this.props.samplernn.progress} />
+ const { folderLookup, fileLookup, datasetLookup } = this.props.samplernn.data
+ // const { folderLookup } = samplernn
+
+ const renders = Object.keys(folderLookup).sort(util.sort.stringSort.asc).map(key => {
+ const folder = folderLookup[key]
+ let { mapFn, sortFn } = util.sort.orderByFn('epoch desc')
+ const datasetPairs = folder.datasets.map(name => datasetLookup[name]).map(mapFn).sort(sortFn)
+ const bestRenders = datasetPairs
+ .map(pair => pair[1])
+ .filter(dataset => dataset.output.length)
+ .map(dataset => {
+ const { output } = dataset
+ return output.map(id => fileLookup[id]).map(mapFn).sort(sortFn)[0][1]
+ })
+ // console.log(bestRenders.map(r => r.epoch))
+ const path = folder.name === 'unsorted'
+ ? "/samplernn/import/"
+ : "/samplernn/datasets/" + folder.id + "/"
+ return (
+ <div className='col bestRenders'>
+ <h3><Link to={path}>{folder.name}</Link></h3>
+ <FileList
+ files={bestRenders}
+ orderBy='date desc'
+ fields={'name date epoch size'}
+ onClick={(file, e) => {
+ e.preventDefault()
+ e.stopPropagation()
+ console.log('picked a file', file)
+ this.handlePick(file)
+ }}
+ />
+ </div>
+ )
+ })
+
+ return (
+ <div className='app samplernn'>
+ <div className='heading row middle'>
+ <h1>SampleRNN Results</h1>
+ <Link to='/samplernn/new/'>new project</Link>
+ </div>
+ <div class='rows params renders'>
+ {renders}
+ </div>
+ </div>
+ )
+ }
+ handlePick(file){
+ this.props.audioPlayer.play(file)
+ }
+}
+
+const mapStateToProps = state => ({
+ samplernn: state.module.samplernn,
+ runner: state.system.runner,
+ task: state.task,
+})
+
+const mapDispatchToProps = (dispatch, ownProps) => ({
+ actions: bindActionCreators(samplernnActions, dispatch),
+ audioPlayer: bindActionCreators(audioPlayerActions, dispatch),
+})
+
+export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNResults)