summaryrefslogtreecommitdiff
path: root/app/client
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-06-04 01:11:58 +0200
committerJules Laplace <julescarbon@gmail.com>2018-06-04 01:11:58 +0200
commit5dece5cd3e1271b3af6efb5e0179a571ebdef4ef (patch)
treeaecde9fc264b04c70d42a1eb477e9929a6acda3f /app/client
parentc34ecb4aacb1d27913088ff2b4546f1504d8dd86 (diff)
actually importing stuff
Diffstat (limited to 'app/client')
-rw-r--r--app/client/common/select.component.js1
-rw-r--r--app/client/modules/samplernn/samplernn.actions.js56
-rw-r--r--app/client/modules/samplernn/samplernn.datasets.js8
-rw-r--r--app/client/modules/samplernn/samplernn.import.js87
-rw-r--r--app/client/modules/samplernn/samplernn.reducer.js2
5 files changed, 126 insertions, 28 deletions
diff --git a/app/client/common/select.component.js b/app/client/common/select.component.js
index 3147dc4..b768336 100644
--- a/app/client/common/select.component.js
+++ b/app/client/common/select.component.js
@@ -18,7 +18,6 @@ class Select extends Component {
let name, value
if (typeof key === 'object' && key.length) {
[name, value] = key
- console.log(name, value)
}
else if (typeof key === 'string') {
name = key.length < 4 ? key.toUpperCase() : key
diff --git a/app/client/modules/samplernn/samplernn.actions.js b/app/client/modules/samplernn/samplernn.actions.js
index 70a8a30..f0e835e 100644
--- a/app/client/modules/samplernn/samplernn.actions.js
+++ b/app/client/modules/samplernn/samplernn.actions.js
@@ -76,6 +76,7 @@ export const load_directories = (id) => (dispatch) => {
file.epoch = file.epoch || pair[1]
})
+ // also show the various flat audio files we have, in the input area..
const flatDatasets = datasets.filter(s => s.name.match(/(wav|aiff?|flac|mp3)$/) && !s.dir)
const builtDatasets = datasets.filter(s => s.dir)
builtDatasets.forEach(dir => {
@@ -117,13 +118,25 @@ export const load_directories = (id) => (dispatch) => {
file.persisted = false
file.epoch = parseInt(file.epoch || pair[1].replace(/^\D+/, '')) || 0
dataset.epoch = Math.max(file.epoch, dataset.epoch || 0)
- dataset.output.push(file)
+ // here check if the file exists in dataset, if so just check that it's persisted
+ const found = dataset.output.some(f => {
+ // if (f.name ===
+ if (f.name === file.name) {
+ f.persisted = true
+ return true
+ }
+ return false
+ })
+ if (! found) {
+ dataset.output.push(file)
+ }
})
dispatch({
type: types.samplernn.init,
data: {
folderLookup,
+ datasetLookup,
folders, files,
checkpoints,
builtDatasets,
@@ -167,6 +180,47 @@ export const load_loss = () => dispatch => {
})
}
+export const import_files = (state, datasetLookup) => (dispatch) => {
+ const { selected, folder, url_base, import_action } = state
+ const names = Object.keys(selected).filter(k => selected[k])
+ let promises
+ switch (import_action) {
+ case 'Hotlink':
+ // in this case, create a new file for each file we see.
+ promises = names.reduce((a,name) => {
+ return datasetLookup[name].output.map(file => {
+ const partz = file.name.split('.')
+ const ext = partz.pop()
+ return actions.file.create({
+ folder_id: folder,
+ name: file.name,
+ url: url_base + file.name,
+ mime: 'audio/' + ext,
+ epoch: file.epoch,
+ size: file.size,
+ module: 'samplernn',
+ dataset: name,
+ activity: 'train',
+ datatype: 'audio',
+ generated: true,
+ created_at: new Date(file.date),
+ updated_at: new Date(file.date),
+ })
+ }).concat(a)
+ }, [])
+ break
+ case 'Upload':
+ break
+ default:
+ break
+ }
+ Promise.all(promises).then(data => {
+ console.log(data)
+ }).catch(e => {
+ console.error(e)
+ })
+}
+
export const set_folder = (folder) => { types.samplernn.set_folder, folder }
export const fetch_url = (url) => (dispatch) => {
diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js
index c4cebc7..0b7ccb8 100644
--- a/app/client/modules/samplernn/samplernn.datasets.js
+++ b/app/client/modules/samplernn/samplernn.datasets.js
@@ -61,9 +61,8 @@ class SampleRNNDatasets extends Component {
render(){
const { samplernn, match, history } = this.props
const id = this.props.id || localStorage.getItem('samplernn.last_id')
- console.log(this.props.id)
if (samplernn.loading) {
- console.log('loading')
+ // console.log('loading')
return <span>Loading</span>
}
if (!samplernn.data.folders.length) {
@@ -85,13 +84,13 @@ class SampleRNNDatasets extends Component {
)
}
renderGroups(){
- const { samplernn } = this.props
+ const { samplernn, onPickDataset } = this.props
const folder = samplernn.folder
const { mapFn, sortFn } = util.sort.orderByFn('date desc')
const datasets = folder.datasets.map(mapFn).sort(sortFn).map(pair => {
const dataset = pair[1]
return (
- <div className='row dataset'>
+ <div className='row dataset' onClick={() => onPickDataset(dataset)}>
{this.props.beforeRow && this.props.beforeRow(dataset)}
<div className='col'>
{!!dataset.input.length &&
@@ -125,6 +124,7 @@ class SampleRNNDatasets extends Component {
/>
}
</div>
+ {this.props.afterRow && this.props.afterRow(dataset)}
</div>
)
})
diff --git a/app/client/modules/samplernn/samplernn.import.js b/app/client/modules/samplernn/samplernn.import.js
index 62a210d..d335782 100644
--- a/app/client/modules/samplernn/samplernn.import.js
+++ b/app/client/modules/samplernn/samplernn.import.js
@@ -7,6 +7,7 @@ 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'
@@ -20,56 +21,100 @@ class SampleRNNImport extends Component {
super()
this.state = {
folder: 1,
- url_base: ''
+ import_action: 'Hotlink',
+ url_base: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4279/',
+ selected: {},
}
}
render(){
let datasets = [];
if (this.props.samplernn.data) {
datasets = (this.props.samplernn.data.folders || []).map(folder => {
- console.log(folder.id, folder.name)
return [folder.name, folder.id]
})
- console.log(datasets)
}
return (
<div className='app'>
<div class='heading'>
<h1>Import</h1>
</div>
- <div class='params form row'>
- <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 })}
- />
- <TextInput
- title="URL base"
- value={this.state.url_base}
- placeholder="http://"
- onSave={(value) => this.setState({ url_base: value })}
- />
+ <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"
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)
- return null
}
afterRow(dataset){
- return null
+ 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)
}
}
diff --git a/app/client/modules/samplernn/samplernn.reducer.js b/app/client/modules/samplernn/samplernn.reducer.js
index 65d9e3d..b294c2f 100644
--- a/app/client/modules/samplernn/samplernn.reducer.js
+++ b/app/client/modules/samplernn/samplernn.reducer.js
@@ -10,7 +10,7 @@ const samplernnInitialState = {
}
const samplernnReducer = (state = samplernnInitialState, action) => {
- console.log(action.type)
+ // console.log(action.type)
switch(action.type) {
case types.samplernn.init:
return {