diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-06-03 16:34:09 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-06-03 16:34:09 +0200 |
| commit | 3fbc033e37476ff03fc4ad93145976faeea47934 (patch) | |
| tree | d6472eadb3abad48711730ce8b5cc816c61c6769 /app/client | |
| parent | 70551b5c0d32effb316a75d6bbe3c6807f8b4d05 (diff) | |
reload the whole page. easier
Diffstat (limited to 'app/client')
| -rw-r--r-- | app/client/common/textInput.component.js | 1 | ||||
| -rw-r--r-- | app/client/dataset/dataset.actions.js | 38 | ||||
| -rw-r--r-- | app/client/dataset/dataset.form.js | 7 | ||||
| -rw-r--r-- | app/client/dataset/dataset.new.js | 43 | ||||
| -rw-r--r-- | app/client/modules/samplernn/index.js | 1 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.actions.js | 2 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.datasets.js | 32 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.reducer.js | 33 |
8 files changed, 120 insertions, 37 deletions
diff --git a/app/client/common/textInput.component.js b/app/client/common/textInput.component.js index c514b78..1e2ca01 100644 --- a/app/client/common/textInput.component.js +++ b/app/client/common/textInput.component.js @@ -25,6 +25,7 @@ class TextInput extends Component { onInput={this.handleInput} onKeydown={this.handleKeydown} placeholder={this.props.placeholder} + autofocus={this.props.autofocus} /> </label> </div> diff --git a/app/client/dataset/dataset.actions.js b/app/client/dataset/dataset.actions.js index 3fad75f..315f1de 100644 --- a/app/client/dataset/dataset.actions.js +++ b/app/client/dataset/dataset.actions.js @@ -4,27 +4,27 @@ import types from '../types' import actions from '../actions' import { parser } from '../api' -export const createOrUpdateFolder = (module, folder, name) => dispatch => { +export const createFolder = (module, name) => dispatch => { + return actions.folder.create({ + // username... should get added inside the API + module: module.name, + datatype: module.datatype, + activity: 'dataset', + name + }) +} + +export const updateFolder = (module, folder, name) => dispatch => { if (! folder || ! folder.id) { - actions.folder.create({ - // username... should get added inside the API - module: module.name, - datatype: module.datatype, - activity: 'dataset', - name - }).then(folder => { - // set current folder - }) - } - else { - actions.folder.update({ - id: folder.id, - module: module.name, - datatype: module.datatype, - activity: 'dataset', - name - }) + return null } + return actions.folder.update({ + id: folder.id, + module: module.name, + datatype: module.datatype, + activity: 'dataset', + name + }) } export const uploadFile = (module, folder, file) => dispatch => { diff --git a/app/client/dataset/dataset.form.js b/app/client/dataset/dataset.form.js index dee0263..f9fc3d7 100644 --- a/app/client/dataset/dataset.form.js +++ b/app/client/dataset/dataset.form.js @@ -11,9 +11,6 @@ import FileUpload from '../common/fileUpload.component' import TextInput from '../common/textInput.component' class DatasetForm extends Component { - constructor(props){ - super() - } render(){ const { loading, status, error, @@ -49,9 +46,9 @@ class DatasetForm extends Component { } renderFolderNameInput(name){ return <TextInput - title={!this.props.folder.id ? 'Create a new dataset' : 'Dataset name'} + title={'Dataset name'} value={name} - onSave={this.curry(this.props.actions.dataset.createOrUpdateFolder)} + onSave={this.curry(this.props.actions.dataset.updateFolder)} /> } renderUploadInput(){ diff --git a/app/client/dataset/dataset.new.js b/app/client/dataset/dataset.new.js new file mode 100644 index 0000000..16ee8c1 --- /dev/null +++ b/app/client/dataset/dataset.new.js @@ -0,0 +1,43 @@ +import { h, Component } from 'preact' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import * as datasetActions from './dataset.actions' + +import TextInput from '../common/textInput.component' + +function NewDatasetForm (props) { + const { loading, status, error, history, actions, module } = props + if (loading) return <span>Loading...</span> + console.log(props) + return ( + <div class='opaque'> + <div class='heading'> + <h2>Create a new dataset</h2> + </div> + <div class='params'> + <TextInput + autofocus + title={'Name your dataset'} + onSave={(name) => { + actions.createFolder(module, name) + .then(folder => { + window.location.href = '/samplernn/datasets/' + folder.id + '/' + }) + }} + /> + </div> + </div> + ) +} + +const mapStateToProps = state => { + console.log(state); + return state.dataset +} + +const mapDispatchToProps = (dispatch, ownProps) => ({ + actions: bindActionCreators(datasetActions, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(NewDatasetForm) diff --git a/app/client/modules/samplernn/index.js b/app/client/modules/samplernn/index.js index e1c41d5..e75a411 100644 --- a/app/client/modules/samplernn/index.js +++ b/app/client/modules/samplernn/index.js @@ -12,7 +12,6 @@ function router () { <Route exact path='/samplernn/inspect/' component={SampleRNNInspect} /> <Route exact path='/samplernn/datasets/' component={SampleRNNDatasets} /> <Route exact path='/samplernn/datasets/:id/' component={SampleRNNDatasets} /> - <Route exact path='/samplernn/datasets/new/' component={SampleRNNDatasets} /> <Route exact path='/samplernn/results/' component={SampleRNNResults} /> </div> ) diff --git a/app/client/modules/samplernn/samplernn.actions.js b/app/client/modules/samplernn/samplernn.actions.js index 25c9699..70a8a30 100644 --- a/app/client/modules/samplernn/samplernn.actions.js +++ b/app/client/modules/samplernn/samplernn.actions.js @@ -44,7 +44,6 @@ export const load_directories = (id) => (dispatch) => { folder.datasets.push(dataset) return dataset } - // take all of the folders and put them in a lookup const folderLookup = folders.reduce((folderLookup, folder) => { folderLookup[folder.id] = { id: folder.id, name: folder.name, folder, datasets: [] } @@ -133,6 +132,7 @@ export const load_directories = (id) => (dispatch) => { }) if (id) { let folder = id === 'unsorted' ? folderLookup.unsorted : folderLookup[id] + console.log(id) dispatch({ type: types.samplernn.set_folder, folder: folder, diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js index dafed79..52d4ebd 100644 --- a/app/client/modules/samplernn/samplernn.datasets.js +++ b/app/client/modules/samplernn/samplernn.datasets.js @@ -6,6 +6,7 @@ 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' class SampleRNNDatasets extends Component { @@ -14,13 +15,14 @@ class SampleRNNDatasets extends Component { this.fileOptions = this.fileOptions.bind(this) this.pickFile = this.pickFile.bind(this) let id = props.match.params.id || localStorage.getItem('samplernn.last_id') - if (! id && props.location.pathname.match(/\/new\//)) { - id = 'new' - } else if (id) { + console.log('load dataset:', id) + if (id === 'new') return + if (id) { localStorage.setItem('samplernn.last_id', id) - } - if (id && (! props.samplernn.folder || props.samplernn.folder.id !== id)) { - props.actions.load_directories(id) + if (! props.samplernn.folder || props.samplernn.folder.id !== id) { + console.log('load directories') + props.actions.load_directories(id) + } } } pickFile(file){ @@ -50,16 +52,28 @@ class SampleRNNDatasets extends Component { ) } render(){ - const { samplernn } = this.props + const { samplernn, match, history } = this.props const folder = samplernn.folder - if (!folder || !folder.name) return + if (match.params.id === 'new') { + return <NewDatasetForm module={{name: 'samplernn', datatype: 'audio'}} history={history} /> + } + if (samplernn.loading) { + return <span>Loading</span> + } + if (!folder || !samplernn.data.folders.length) { + return history.push('/samplernn/datasets/new/') + } return ( <div className='app'> <div class='heading'> <h1>{folder.name}</h1> </div> {folder.name !== 'unsorted' && - <DatasetForm title='Add Files' folder={folder} canUpload canAddURL /> + <DatasetForm + title='Add Files' + folder={folder} + canUpload canAddURL + /> } {this.renderDataset()} </div> diff --git a/app/client/modules/samplernn/samplernn.reducer.js b/app/client/modules/samplernn/samplernn.reducer.js index 372b3bc..524d650 100644 --- a/app/client/modules/samplernn/samplernn.reducer.js +++ b/app/client/modules/samplernn/samplernn.reducer.js @@ -17,34 +17,63 @@ const samplernnReducer = (state = samplernnInitialState, action) => { loading: false, data: action.data, } + case types.socket.connect: return { ...state, } + case types.task.task_begin: return { ...state, } + case types.task.task_finish: return { ...state, } + + case types.folder.create: + if (action.data.module === 'samplernn') { + return { + ...state, + loading: false, + // folder: { + // ...action.data, + // input: [], + // checkpoints: [], + // output: [], + // } + } + } + return state + case types.file.create: if (state.folder.id === action.data.folder_id) { return { ...state, - files: [action.data].concat(state.files), + loading: false, + folder: { + ...state.folder, + input: [action.data].concat(state.folder.input), + }, } } return state + case types.folder.upload_complete: if (state.folder.id === action.folder) { return { ...state, - files: [action.files].concat(state.files), + loading: false, + folder: { + ...state.folder, + input: [action.data].concat(state.folder.input), + }, } } return state + case types.socket.status: return samplernnSocket(state, action.data) |
