From c05a918de5f52b0333da4ab3e96b0a76611fe101 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 3 Jun 2018 19:53:33 +0200 Subject: abstract this ugly datasets code!! --- app/client/modules/samplernn/index.js | 7 +++- app/client/modules/samplernn/samplernn.datasets.js | 33 ++++++++++++----- app/client/modules/samplernn/samplernn.import.js | 43 ++++++++++++++++++++++ app/client/modules/samplernn/samplernn.new.js | 34 +++++++++++++++++ app/client/modules/samplernn/samplernn.reducer.js | 3 ++ app/client/modules/samplernn/samplernn.results.js | 8 +++- app/client/modules/samplernn/samplernn.show.js | 41 +++++++++++++++++++++ 7 files changed, 157 insertions(+), 12 deletions(-) create mode 100644 app/client/modules/samplernn/samplernn.import.js create mode 100644 app/client/modules/samplernn/samplernn.new.js create mode 100644 app/client/modules/samplernn/samplernn.show.js (limited to 'app/client/modules') diff --git a/app/client/modules/samplernn/index.js b/app/client/modules/samplernn/index.js index e75a411..49d66cd 100644 --- a/app/client/modules/samplernn/index.js +++ b/app/client/modules/samplernn/index.js @@ -1,6 +1,9 @@ import { h, Component } from 'preact' import { Route, Link } from 'react-router-dom' +import SampleRNNNew from './samplernn.new' +import SampleRNNShow from './samplernn.show' import SampleRNNDatasets from './samplernn.datasets' +import SampleRNNImport from './samplernn.import' import SampleRNNResults from './samplernn.results' import SampleRNNInspect from './samplernn.inspect' import SampleRNNLoss from './samplernn.loss' @@ -8,10 +11,12 @@ import SampleRNNLoss from './samplernn.loss' function router () { return (
+ + - +
) diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js index 2a8c224..d37102b 100644 --- a/app/client/modules/samplernn/samplernn.datasets.js +++ b/app/client/modules/samplernn/samplernn.datasets.js @@ -16,17 +16,22 @@ const samplernnModule = { class SampleRNNDatasets extends Component { constructor(props){ - super() + super(props) + console.log('ba') this.fileOptions = this.fileOptions.bind(this) this.pickFile = this.pickFile.bind(this) - let id = props.match.params.id || localStorage.getItem('samplernn.last_id') + } + componentWillMount(){ + const id = this.props.id || this.props.match.params.id || localStorage.getItem('samplernn.last_id') + console.log(id) console.log('load dataset:', id) + const { match, samplernn, actions } = this.props if (id === 'new') return if (id) { localStorage.setItem('samplernn.last_id', id) - if (! props.samplernn.folder || props.samplernn.folder.id !== id) { + if (! samplernn.folder || samplernn.folder.id !== id) { console.log('load directories') - props.actions.load_directories(id) + actions.load_directories(id) } } } @@ -58,16 +63,22 @@ class SampleRNNDatasets extends Component { } render(){ const { samplernn, match, history } = this.props - const folder = samplernn.folder - if (match.params.id === 'new') { - return - } + const id = this.props.id || localStorage.getItem('samplernn.last_id') + console.log(this.props.id) + if (this.props.id && this.props.id !== 'new') return null if (samplernn.loading) { + console.log('loading') return Loading } - if (!folder || !samplernn.data.folders.length) { - return history.push('/samplernn/datasets/new/') + if (!samplernn.folder || !samplernn.data.folders.length) { + console.log('no folders, redirect to /new') + return history.push('/samplernn/new/') } + console.log('render app') + const folder = samplernn.folder + console.log(folder) + if (!folder || !folder.name) return + console.log(folder.name) return (
@@ -106,6 +117,7 @@ class SampleRNNDatasets extends Component { const dataset = pair[1] return (
+ {this.props.beforeRow && this.props.beforeRow(dataset)}
{!!dataset.input.length && }
diff --git a/app/client/modules/samplernn/samplernn.import.js b/app/client/modules/samplernn/samplernn.import.js new file mode 100644 index 0000000..593c67d --- /dev/null +++ b/app/client/modules/samplernn/samplernn.import.js @@ -0,0 +1,43 @@ +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 DatasetForm from '../../dataset/dataset.form' +import NewDatasetForm from '../../dataset/dataset.new' +import { FileList, FileRow } from '../../common/fileList.component' + +import SampleRNNDatasets from './samplernn.datasets' + +const samplernnModule = { + name: 'samplernn', + datatype: 'audio', +} + +class SampleRNNImport extends Component { + render(){ + return ( + this.beforeRow(row)} + /> + ) + } + beforeRow(row){ + console.log(row) + } +} + +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)(SampleRNNImport) diff --git a/app/client/modules/samplernn/samplernn.new.js b/app/client/modules/samplernn/samplernn.new.js new file mode 100644 index 0000000..8d8b68c --- /dev/null +++ b/app/client/modules/samplernn/samplernn.new.js @@ -0,0 +1,34 @@ +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 DatasetForm from '../../dataset/dataset.form' +import NewDatasetForm from '../../dataset/dataset.new' +import { FileList, FileRow } from '../../common/fileList.component' + +const samplernnModule = { + name: 'samplernn', + datatype: 'audio', +} + +class SampleRNNNew extends Component { + constructor(props){ + super(props) + } + render(){ + const { history } = this.props + return + } +} +const mapStateToProps = state => ({ + samplernn: state.module.samplernn, +}) + +const mapDispatchToProps = (dispatch, ownProps) => ({ + actions: bindActionCreators(samplernnActions, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNNew) diff --git a/app/client/modules/samplernn/samplernn.reducer.js b/app/client/modules/samplernn/samplernn.reducer.js index 4084d48..d91d64d 100644 --- a/app/client/modules/samplernn/samplernn.reducer.js +++ b/app/client/modules/samplernn/samplernn.reducer.js @@ -33,6 +33,9 @@ const samplernnReducer = (state = samplernnInitialState, action) => { ...state, } + // so now the last thing is to figure out how to access things inside these datasets + // and rebuild them if need be, considering this is SUPER awkward inside of redux. + case types.folder.create: if (action.data.module === 'samplernn') { return { diff --git a/app/client/modules/samplernn/samplernn.results.js b/app/client/modules/samplernn/samplernn.results.js index b689106..13b7879 100644 --- a/app/client/modules/samplernn/samplernn.results.js +++ b/app/client/modules/samplernn/samplernn.results.js @@ -1,5 +1,6 @@ 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' @@ -58,9 +59,12 @@ class SampleRNNResults extends Component { return output.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 (
-

{folder.name}

+

{folder.name}

SampleRNN
+ new dataset +

{renders}
diff --git a/app/client/modules/samplernn/samplernn.show.js b/app/client/modules/samplernn/samplernn.show.js new file mode 100644 index 0000000..a6018c5 --- /dev/null +++ b/app/client/modules/samplernn/samplernn.show.js @@ -0,0 +1,41 @@ +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 DatasetForm from '../../dataset/dataset.form' +import NewDatasetForm from '../../dataset/dataset.new' +import { FileList, FileRow } from '../../common/fileList.component' + +import SampleRNNDatasets from './samplernn.datasets' + +const samplernnModule = { + name: 'samplernn', + datatype: 'audio', +} + +class SampleRNNShow extends Component { + constructor(){ + super() + console.log('piss') + } + render(){ + console.log('dick') + return ( + + ) + } +} + +const mapStateToProps = state => ({ +}) + +const mapDispatchToProps = (dispatch, ownProps) => ({ + actions: bindActionCreators(samplernnActions, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNShow) -- cgit v1.2.3-70-g09d2