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 Loading from '../../common/loading.component' const samplernnModule = { name: 'samplernn', datatype: 'audio', } class SampleRNNDatasets extends Component { constructor(props){ super(props) this.fileOptions = this.fileOptions.bind(this) this.pickFile = this.pickFile.bind(this) } componentWillMount(){ const id = this.props.id console.log('load dataset:', id, this.props.id) const { match, samplernn, actions } = this.props if (id === 'new') return if (id) { if (parseInt(id)) localStorage.setItem('samplernn.last_id', id) if (! samplernn.folder || samplernn.folder.id !== id) { actions.load_directories(id) } } } pickFile(file){ console.log('pick', file) } fileOptions(file){ if (file.activity === 'url' && !file.dataset) { if (this.props.runner.cpu.status !== 'IDLE') { return (
fetching...
) } else { return (
this.fetchURL(file.url)}> fetch
) } } return (
this.train(file)}>train
{file.epoch == 0 &&
{file.epochs} ep.
}
) } render(){ const { samplernn, match, history } = this.props if (samplernn.loading) { return } if (!samplernn.data.folders.length) { console.log('no folders, redirect to /new') return history.push('/samplernn/new/') } const folder = samplernn.folder if (!folder || !folder.name) return return (
input
checkpoint
output
{this.renderGroups()}
) } renderGroups(){ const { samplernn, onPickDataset, actions } = 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 (
onPickDataset && onPickDataset(dataset)}> {this.props.beforeRow && this.props.beforeRow(dataset)}
{!!dataset.input.length && }
{dataset.isBuilt ? 'cached' : ''}
actions.train_task_now(dataset, 1)}>train actions.train_task_now(dataset, 2)}>2x actions.train_task_now(dataset, 4)}>4x actions.train_task_now(dataset, 6)}>6x actions.train_task_now(dataset, 18)}>18x
{!!dataset.checkpoints.length && }
{!!dataset.output.length && }
{this.props.afterRow && this.props.afterRow(dataset)}
) }) return datasets } } 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)(SampleRNNDatasets)