diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-06-05 20:11:11 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-06-05 20:11:11 +0200 |
| commit | 18321f234e5261af43624b67c99a4dee3c060ed8 (patch) | |
| tree | 12268da123e441d07e7d15f6c24210bc3f594522 /app/client/modules/samplernn/views/samplernn.import.js | |
| parent | 24ec0726bf254f4e4398cf2bfa0c794978367744 (diff) | |
move views into own folder and begin prising away dataset code
Diffstat (limited to 'app/client/modules/samplernn/views/samplernn.import.js')
| -rw-r--r-- | app/client/modules/samplernn/views/samplernn.import.js | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/app/client/modules/samplernn/views/samplernn.import.js b/app/client/modules/samplernn/views/samplernn.import.js new file mode 100644 index 0000000..6f5f78a --- /dev/null +++ b/app/client/modules/samplernn/views/samplernn.import.js @@ -0,0 +1,145 @@ +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 Select from '../../../common/select.component' +import TextInput from '../../../common/textInput.component' +import Button from '../../../common/button.component' + +import SampleRNNDatasets from '../samplernn.datasets' + +const samplernnModule = { + name: 'samplernn', + datatype: 'audio', +} + +class SampleRNNImport extends Component { + constructor(){ + super() + this.state = { + folder: 1, + import_action: 'Hotlink', + url_base: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4279/', + selected: {}, + } + } + componentWillMount(){ + const id = this.props.match.params.id || localStorage.getItem('samplernn.last_id') + console.log('load dataset:', id) + const { match, samplernn, samplernnActions } = this.props + if (id === 'new') return + if (id) { + if (parseInt(id)) localStorage.setItem('samplernn.last_id', id) + if (! samplernn.folder || samplernn.folder.id !== id) { + samplernnActions.load_directories(id) + } + } + } + render(){ + let datasets = [], folder; + if (this.props.samplernn.data) { + datasets = (this.props.samplernn.data.folders || []).map(folder => { + return [folder.name, folder.id] + }) + folder = this.props.samplernn.data.folderLookup.unsorted + } + return ( + <div className='app top'> + <div class='heading'> + <h1>Import</h1> + </div> + <div class='params form row datasets'> + <div class='row dataset'> + <div class='col'> + </div> + <div class='col'> + </div> + <div class='col'> + </div> + <div class='col'> + <h2>Import to dataset</h2> + <Select + title='Destination dataset' + options={datasets} + name='folder' + opt={this.state} + onChange={(name, value) => this.setState({ folder: value })} + /> + <Select + title='Import action' + options={['Hotlink', 'Upload']} + name='import_action' + opt={this.state} + onChange={(name, value) => this.setState({ import_action: value })} + /> + <TextInput + title="Remote URL base" + value={this.state.url_base} + placeholder="http://" + onSave={(value) => this.setState({ url_base: value })} + /> + <Button + title="" + onClick={() => this.doImport()} + > + Import + </Button> + </div> + </div> + </div> + <SampleRNNDatasets + id="unsorted" + folder={folder} + history={this.props.history} + onPickDataset={(dataset => this.toggle(dataset.name, this.state.selected[name]))} + beforeRow={dataset => this.beforeRow(dataset)} + afterRow={dataset => this.afterRow(dataset)} + /> + </div> + ) + } + toggle(name){ + this.setState({ + ...this.state, + selected: { + ...this.state.selected, + [name]: !this.state.selected[name], + } + }) + } + beforeRow(dataset){ + // console.log(dataset) + } + afterRow(dataset){ + const name = dataset.name + return ( + <div> + <input + type="checkbox" + value={name} + checked={!!this.state.selected[name]} + /> + </div> + ) + } + doImport(){ + const { samplernn } = this.props + console.log(this.state) + this.props.actions.import_files(this.state, samplernn.data.datasetLookup, samplernn.data.fileLookup) + } +} + +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) |
