diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-06-04 19:06:48 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-06-04 19:06:48 +0200 |
| commit | dfbca424f0655779bcbcf56a88a1338e3af23739 (patch) | |
| tree | 2f50befa6de5052d6c0bada8c8c064e03431766c /app/client | |
| parent | 91c47c22f2c71c524fd665f19186bb014c94ab31 (diff) | |
action divs
Diffstat (limited to 'app/client')
| -rw-r--r-- | app/client/common/audioPlayer/audioPlayer.component.js | 2 | ||||
| -rw-r--r-- | app/client/common/loading.component.js | 5 | ||||
| -rw-r--r-- | app/client/dataset/dataset.actions.js | 8 | ||||
| -rw-r--r-- | app/client/dataset/dataset.new.js | 3 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.actions.js | 19 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.datasets.js | 21 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.inspect.js | 4 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.reducer.js | 4 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.results.js | 18 | ||||
| -rw-r--r-- | app/client/modules/samplernn/samplernn.show.js | 27 |
10 files changed, 82 insertions, 29 deletions
diff --git a/app/client/common/audioPlayer/audioPlayer.component.js b/app/client/common/audioPlayer/audioPlayer.component.js index 481a685..05c743b 100644 --- a/app/client/common/audioPlayer/audioPlayer.component.js +++ b/app/client/common/audioPlayer/audioPlayer.component.js @@ -24,7 +24,7 @@ class AudioPlayer extends Component { <button onClick={this.handleClick} > - {audioPlayer.playing ? '>' : 'pause'} + {audioPlayer.playing ? '▶' : '~'} </button> </div> ) diff --git a/app/client/common/loading.component.js b/app/client/common/loading.component.js index f8033db..290c7a6 100644 --- a/app/client/common/loading.component.js +++ b/app/client/common/loading.component.js @@ -5,8 +5,9 @@ import Progress from './progress.component' export default function Loading({progress}) { return ( <div className='loading'> - Loading<br/> - <Progress progress={progress} /> + Loading + <br/> + {progress && <Progress progress={progress}/>} </div> ) } diff --git a/app/client/dataset/dataset.actions.js b/app/client/dataset/dataset.actions.js index a3ba6bb..dd4ea60 100644 --- a/app/client/dataset/dataset.actions.js +++ b/app/client/dataset/dataset.actions.js @@ -47,6 +47,14 @@ export const fetchURL = (module, folder, url) => dispatch => { // size activity // opt created_at updated_at console.log(module, folder, url) + const seenURL = folder.files.some(file => { + return file.url === url + }) + console.log(seenURL) + if (seenURL) { + console.log('already seen this url') + return + } parser.parse(url, media => { if (!media) return console.log('media', media) diff --git a/app/client/dataset/dataset.new.js b/app/client/dataset/dataset.new.js index 16ee8c1..1705598 100644 --- a/app/client/dataset/dataset.new.js +++ b/app/client/dataset/dataset.new.js @@ -4,11 +4,12 @@ import { connect } from 'react-redux' import * as datasetActions from './dataset.actions' +import Loading from '../common/loading.component' import TextInput from '../common/textInput.component' function NewDatasetForm (props) { const { loading, status, error, history, actions, module } = props - if (loading) return <span>Loading...</span> + if (loading) return <Loading /> console.log(props) return ( <div class='opaque'> diff --git a/app/client/modules/samplernn/samplernn.actions.js b/app/client/modules/samplernn/samplernn.actions.js index e3e735f..fe73bf2 100644 --- a/app/client/modules/samplernn/samplernn.actions.js +++ b/app/client/modules/samplernn/samplernn.actions.js @@ -24,6 +24,7 @@ export const load_directories = (id) => (dispatch) => { const unsortedFolder = { id: 0, name: 'unsorted', + files: [], datasets: [], } @@ -51,8 +52,13 @@ export const load_directories = (id) => (dispatch) => { // 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: [] } - folder.datasets = [] + folderLookup[folder.id] = { + id: folder.id, + name: folder.name, + folder, + files: [], + datasets: [], + } return folderLookup }, { unsorted: unsortedFolder @@ -68,17 +74,21 @@ export const load_directories = (id) => (dispatch) => { file.name = (file.opt || {}).token || file.url } const name = (file.name || 'unsorted').split('.')[0] - const dataset = get_dataset(name, folderLookup[file.folder_id] || unsortedFolder, file.date || file.created_at) + const folder = folderLookup[file.folder_id] || unsortedFolder + const dataset = get_dataset(name, folder, file.date || file.created_at) if (file.url.match(file.name)) file.persisted = true dataset.input.push(file) + folder.files.push(file) return datasetLookup }, datasetLookup) // go over the generated files and add addl datasets (if the files were deleted) generatedFiles.map(file => { const pair = file.name.split('.')[0].split('-') - const dataset = get_dataset(pair[0], folderLookup[file.folder_id] || unsortedFolder, file.date || file.created_at) + const folder = folderLookup[file.folder_id] || unsortedFolder + const dataset = get_dataset(pair[0], folder, file.date || file.created_at) dataset.output.push(file) + folder.files.push(file) file.epoch = file.epoch || pair[1] }) @@ -145,7 +155,6 @@ export const load_directories = (id) => (dispatch) => { datasetLookup, folders, files, checkpoints, - builtDatasets, output, }, }) diff --git a/app/client/modules/samplernn/samplernn.datasets.js b/app/client/modules/samplernn/samplernn.datasets.js index d29cf6a..b4f0c12 100644 --- a/app/client/modules/samplernn/samplernn.datasets.js +++ b/app/client/modules/samplernn/samplernn.datasets.js @@ -72,9 +72,9 @@ class SampleRNNDatasets extends Component { if (!folder || !folder.name) return return ( <div class='rows params datasets'> - <div class='row dataset'> + <div class='row row-heading dataset'> <div class='col'>input</div> - <div class='col'></div> + <div class='col'>status</div> <div class='col'>checkpoint</div> <div class='col'>output</div> </div> @@ -83,11 +83,14 @@ class SampleRNNDatasets extends Component { ) } renderGroups(){ - const { samplernn, onPickDataset, onPickFile, actions } = this.props + const { samplernn, runner, onPickDataset, onPickFile, datasetActions } = this.props const folder = samplernn.folder const { mapFn, sortFn } = util.sort.orderByFn('date desc') + const moduleOnGPU = runner.gpu.task.module === samplernnModule.name const datasets = folder.datasets.map(mapFn).sort(sortFn).map(pair => { const dataset = pair[1] + const isProcessing = moduleOnGPU && runner.gpu.task.dataset === dataset + const status = isProcessing ? util.gerund(runner.gpu.task.activity) : '' return ( <div className='row dataset' onClick={() => onPickDataset && onPickDataset(dataset)}> {this.props.beforeRow && this.props.beforeRow(dataset)} @@ -103,15 +106,9 @@ class SampleRNNDatasets extends Component { /> } </div> - <div className='col quiet hiddenActions'> - <div class='subtext'>{dataset.isBuilt ? 'cached' : ''}</div> - <div class='actions'> - <span class='link' onClick={() => actions.train_task_now(dataset, 1)}>train</span> - <span class='link' onClick={() => actions.train_task_now(dataset, 2)}>2x</span> - <span class='link' onClick={() => actions.train_task_now(dataset, 4)}>4x</span> - <span class='link' onClick={() => actions.train_task_now(dataset, 6)}>6x</span> - <span class='link' onClick={() => actions.train_task_now(dataset, 18)}>18x</span> - </div> + <div className={'col quiet ' + (dataset.isBuilt ? 'built' : 'not_built')}> + {status} + {this.props.datasetActions && this.props.datasetActions(dataset)} </div> <div className='col checkpoint'> {!!dataset.checkpoints.length && diff --git a/app/client/modules/samplernn/samplernn.inspect.js b/app/client/modules/samplernn/samplernn.inspect.js index f21d618..b5315d7 100644 --- a/app/client/modules/samplernn/samplernn.inspect.js +++ b/app/client/modules/samplernn/samplernn.inspect.js @@ -73,10 +73,6 @@ class SampleRNNInspect extends Component { files={samplernn.data.files} /> <FileList - title='Datasets' - files={samplernn.data.builtDatasets} - /> - <FileList title='Checkpoints' files={samplernn.data.checkpoints} /> diff --git a/app/client/modules/samplernn/samplernn.reducer.js b/app/client/modules/samplernn/samplernn.reducer.js index 11a9d9e..929205e 100644 --- a/app/client/modules/samplernn/samplernn.reducer.js +++ b/app/client/modules/samplernn/samplernn.reducer.js @@ -61,6 +61,10 @@ const samplernnReducer = (state = samplernnInitialState, action) => { loading: false, folder: { ...state.folder, + files: [ + ...state.folder.files, + action.data, + ], datasets: [ ...state.folder.datasets, { diff --git a/app/client/modules/samplernn/samplernn.results.js b/app/client/modules/samplernn/samplernn.results.js index 7e71197..85720cd 100644 --- a/app/client/modules/samplernn/samplernn.results.js +++ b/app/client/modules/samplernn/samplernn.results.js @@ -5,6 +5,8 @@ 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' @@ -43,7 +45,7 @@ class SampleRNNResults extends Component { ) } render(){ - if (this.props.samplernn.loading) return <span>Loading</span> + if (this.props.samplernn.loading) return <Loading progress={this.props.samplernn.progress} /> const { folderLookup } = this.props.samplernn.data // const { folderLookup } = samplernn @@ -69,15 +71,21 @@ class SampleRNNResults extends Component { 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'> + <div className='app top left'> <div className='heading'> - <h2>SampleRNN</h2> + <h1>SampleRNN Results</h1> </div> <div class='rows params renders'> <Link to='/samplernn/new/'>new dataset</Link> @@ -87,6 +95,9 @@ class SampleRNNResults extends Component { </div> ) } + handlePick(file){ + this.props.audioPlayer.play(file) + } } const mapStateToProps = state => ({ @@ -97,6 +108,7 @@ const mapStateToProps = state => ({ const mapDispatchToProps = (dispatch, ownProps) => ({ actions: bindActionCreators(samplernnActions, dispatch), + audioPlayer: bindActionCreators(audioPlayerActions, dispatch), }) export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNResults) diff --git a/app/client/modules/samplernn/samplernn.show.js b/app/client/modules/samplernn/samplernn.show.js index 2d27b8d..ee3e8c9 100644 --- a/app/client/modules/samplernn/samplernn.show.js +++ b/app/client/modules/samplernn/samplernn.show.js @@ -6,6 +6,7 @@ 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 DatasetForm from '../../dataset/dataset.form' import NewDatasetForm from '../../dataset/dataset.new' import { FileList, FileRow } from '../../common/fileList.component' @@ -24,7 +25,7 @@ class SampleRNNShow extends Component { return ( <div className='app'> <div class='heading'> - <h1>{folder ? folder.name : 'Loading...'}</h1> + <h1>{folder ? folder.name : <Loading />}</h1> </div> {folder && folder.name && folder.name !== 'unsorted' && <DatasetForm @@ -42,10 +43,34 @@ class SampleRNNShow extends Component { console.log('picked a file', file) this.handlePick(file) }} + datasetActions={(dataset) => this.datasetActions(dataset)} /> </div> ) } + datasetActions(dataset){ + const actions = props.actions.samplernn + return ( + <div> + <div class={'actions'}> + <span class='link' onClick={() => actions.train_task(dataset, 1)}>train</span> + <span class='link' onClick={() => actions.train_task(dataset, 2)}>2x</span> + <span class='link' onClick={() => actions.train_task(dataset, 4)}>4x</span> + <span class='link' onClick={() => actions.train_task(dataset, 6)}>6x</span> + <span class='link' onClick={() => actions.train_task(dataset, 18)}>18x</span> + </div> + {dataset.isBuilt + ? <div class='subtext'> + {'fetched '} + <span class='link' onClick={() => actions.clear_cache_task(dataset)}>rm</span> + </div> + : <div class='subtext'> + <span class='link' onClick={() => actions.fetch_task(dataset)}>fetch</span> + </div> + } + </div> + ) + } handlePick(file){ this.props.audioPlayer.play(file) } |
