From 09b4d1541e6e06563a40f8829048e4225ed8fcf9 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Wed, 20 Jun 2018 16:12:38 +0200 Subject: mandatory results folder --- app/client/common/folderList.component.js | 8 +- app/client/dashboard/dashboard.actions.js | 2 +- app/client/dataset/dataset.component.js | 1 + app/client/dataset/dataset.loader.js | 19 ++ app/client/modules/pix2pixhd/pix2pixhd.actions.js | 11 +- app/client/modules/pix2pixhd/pix2pixhd.tasks.js | 6 +- .../modules/pix2pixhd/views/pix2pixhd.live.js | 53 +++-- .../modules/pix2pixhd/views/pix2pixhd.results.js | 22 +- .../modules/pix2pixhd/views/pix2pixhd.show.js | 1 - app/relay/modules/pix2pixhd.js | 27 +++ public/bundle.js | 245 +++++++++++++++------ public/bundle.js.map | 2 +- 12 files changed, 285 insertions(+), 112 deletions(-) diff --git a/app/client/common/folderList.component.js b/app/client/common/folderList.component.js index ccf9848..b609685 100644 --- a/app/client/common/folderList.component.js +++ b/app/client/common/folderList.component.js @@ -16,15 +16,17 @@ export default function FolderList ({ db, path, emptyText }) { ) - } else if (! db.data.folders.length && emptyText) { + } + let folderList = db.data.folders.filter(folder => !! folder.generated) + if (! folderList.length && emptyText) { return (
{emptyText}
) } - console.log(db.data.folders) - const folders = db.data.folders.map(raw_folder => { + console.log(folders) + const folders = folderList.map(raw_folder => { const folder = db.data.folderLookup[raw_folder.id] const fileCount = folder.files ? folder.files.length : 0 const [ className, size ] = util.hush_null(fileCount) diff --git a/app/client/dashboard/dashboard.actions.js b/app/client/dashboard/dashboard.actions.js index 7a6aa1d..567f2cb 100644 --- a/app/client/dashboard/dashboard.actions.js +++ b/app/client/dashboard/dashboard.actions.js @@ -5,7 +5,7 @@ import util from '../util' export const load = () => (dispatch) => { util.allProgress([ actions.task.index({ limit: 40, orderBy: 'created_at desc', }), - actions.folder.index(), + actions.folder.index({ activity: 'dataset', }), actions.file.index({ module: 'samplernn', generated: 1, limit: 10, orderBy: 'created_at desc', }) ], (percent, i, n) => { console.log('dashboard load progress', i, n) diff --git a/app/client/dataset/dataset.component.js b/app/client/dataset/dataset.component.js index 09a1b86..7df1b9c 100644 --- a/app/client/dataset/dataset.component.js +++ b/app/client/dataset/dataset.component.js @@ -46,6 +46,7 @@ class DatasetComponent extends Component { let { module, data, folder, fields, runner, onPickDataset, onPickFile, datasetActions } = this.props fields = fieldSet(fields) const { datasetLookup, fileLookup } = data + if (!datasetLookup) { return
} const { mapFn, sortFn } = util.sort.orderByFn('date desc') const moduleOnCPU = runner && runner.cpu.task && runner.cpu.task.module === module.name const moduleOnGPU = runner && runner.gpu.task && runner.gpu.task.module === module.name diff --git a/app/client/dataset/dataset.loader.js b/app/client/dataset/dataset.loader.js index ad42e46..f6b8d21 100644 --- a/app/client/dataset/dataset.loader.js +++ b/app/client/dataset/dataset.loader.js @@ -52,6 +52,8 @@ export const load = module => { let folderLookup = {} let fileLookup = {} + let resultsFolder = {} + // take all of the folders and put them in a lookup folderLookup = folders.reduce((folderLookup, folder) => { folderLookup[folder.id] = { @@ -61,11 +63,27 @@ export const load = module => { files: [], datasets: [], } + resultsFolder = resultsFolder || (folder.name === 'results' && folder) return folderLookup }, { unsorted: unsortedFolder(module, true) }) + if (! resultsFolder) { + console.log('creating results folder...') + actions.folder.create({ + module, + name: 'results', + activity: 'results', + }).then(folder => { + console.log('created folder', folder) + folderLookup.results = folder + }) + } + else { + console.log('got results folder', resultsFolder) + } + // prepare the files by splitting into two groups const generatedFiles = files.filter(file => file.generated) const ungeneratedFiles = files.filter(file => !file.generated) @@ -108,6 +126,7 @@ export const load = module => { folders, files, unsortedFolder: folderLookup.unsorted, + resultsFolder, } }).catch(e => { console.error(e) diff --git a/app/client/modules/pix2pixhd/pix2pixhd.actions.js b/app/client/modules/pix2pixhd/pix2pixhd.actions.js index caf6b45..917b375 100644 --- a/app/client/modules/pix2pixhd/pix2pixhd.actions.js +++ b/app/client/modules/pix2pixhd/pix2pixhd.actions.js @@ -31,15 +31,16 @@ export const load_directories = (id) => (dispatch) => { folders, files, unsortedFolder, + resultsFolder, } = datasetApiReport // console.log(datasetUsage) const sequenceDirectories = sequences.filter(s => s.dir) - console.log(sequenceDirectories) + // console.log(sequenceDirectories) sequenceDirectories.forEach(dir => { const dataset = datasetLoader.getDataset(module, datasetLookup, dir.name) dataset.isBuilt = true - console.log(dir.name, dataset) + // console.log(dir.name, dataset) }) datasets.filter(s => s.dir).forEach(dir => { @@ -119,6 +120,7 @@ export const load_directories = (id) => (dispatch) => { sequences: sequenceDirectories, datasets, checkpoints: checkpointDirectories, + resultsFolder, }, }) if (id) { @@ -137,9 +139,9 @@ export const load_directories = (id) => (dispatch) => { } export const load_results = (id) => (dispatch) => { - console.log('hi') const module = pix2pixhdModule.name util.allProgress([ + actions.folder.index({ name: 'results' }), actions.file.index({ module, generated: 1 }), actions.socket.list_sequences({ module, dir: 'results' }), actions.socket.list_directory({ module, dir: 'renders' }), @@ -147,11 +149,12 @@ export const load_results = (id) => (dispatch) => { console.log('pix2pixhd load progress', i, n) dispatch({ type: types.app.load_progress, progress: { i, n }}) }).then(res => { - const [files, results, renders] = res //, datasets, results, output, datasetUsage, lossReport] = res + const [folders, files, results, renders] = res //, datasets, results, output, datasetUsage, lossReport] = res console.log(files, results, renders) dispatch({ type: types.pix2pixhd.load_results, results: { + folder: folders[0], files, results, renders, diff --git a/app/client/modules/pix2pixhd/pix2pixhd.tasks.js b/app/client/modules/pix2pixhd/pix2pixhd.tasks.js index 2e7cbbd..f3c5342 100644 --- a/app/client/modules/pix2pixhd/pix2pixhd.tasks.js +++ b/app/client/modules/pix2pixhd/pix2pixhd.tasks.js @@ -31,21 +31,21 @@ export const train_task = (dataset, folder_id, epochs=1) => dispatch => { epochs: epochs, opt: { folder_id: folder_id, - load_size: 264, // switch to 256 for pix2wav } } console.log(task) return actions.queue.add_task(task) } -export const live_task = (sequence, checkpoint) => dispatch => { +export const live_task = (sequence, checkpoint, opt) => dispatch => { const task = { module: module.name, activity: 'live', dataset: sequence, checkpoint, opt: { - poll_delay: 0.09, + ...opt, + poll_delay: 0.01, } } console.log(task) diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.live.js b/app/client/modules/pix2pixhd/views/pix2pixhd.live.js index 3f027a1..5dd4153 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.live.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.live.js @@ -4,7 +4,7 @@ import { connect } from 'react-redux' import { ParamGroup, Param, Player, - Slider, Select, Button, Loading + Slider, Select, TextInput, Button, Loading } from '../../../common/' import { startRecording, stopRecording, saveFrame, toggleFPS } from '../../../live/player' @@ -52,10 +52,12 @@ class Pix2PixHDLive extends Component { } start(){ // console.log(this.props) - const sequence = this.props.pix2pixhd.data.sequences[0].name - const checkpoint = this.props.pix2pixhd.data.checkpoints[0].name + const sequence = this.props.live.opt.sequence_name + const checkpoint = this.props.live.opt.checkpoint_name console.log('starting up!', sequence, checkpoint) - this.props.actions.tasks.live_task(sequence, checkpoint) + this.props.actions.tasks.live_task(sequence, checkpoint, { + folder_id: resultsFolder.id, + }) } interrupt(){ this.props.actions.queue.stop_task('gpu') @@ -121,21 +123,10 @@ class Pix2PixHDLive extends Component { /> {this.renderRestartButton()} - + {this.renderRecordButton()} + // ) + } } function timeInSeconds(n){ return n.toFixed(1) + ' s.' diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.results.js b/app/client/modules/pix2pixhd/views/pix2pixhd.results.js index ac0bb74..af8d90a 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.results.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.results.js @@ -18,20 +18,21 @@ class Pix2pixHDResults extends Component { render(){ if (! this.props.pix2pixhd.results) return - const { results, renders, files } = this.props.pix2pixhd.results -console.log(results) + const { resultsFolder, results, renders, files } = this.props.pix2pixhd.results + console.log(results) + return (

Pix2PixHD Results

- -

results

+ { e.preventDefault() e.stopPropagation() @@ -39,7 +40,7 @@ console.log(results) this.handlePick(file) }} /> - +

renders

-

files

+

results

{ e.preventDefault() e.stopPropagation() diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.show.js b/app/client/modules/pix2pixhd/views/pix2pixhd.show.js index 5777ac0..d58ee80 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.show.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.show.js @@ -86,7 +86,6 @@ class Pix2PixHDShow extends Component { const input = pix2pixhd.data.fileLookup[dataset.input[0]] if (! input) return null if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null - console.log(dataset) return (
diff --git a/app/relay/modules/pix2pixhd.js b/app/relay/modules/pix2pixhd.js index 4c169e8..8f1db54 100644 --- a/app/relay/modules/pix2pixhd.js +++ b/app/relay/modules/pix2pixhd.js @@ -122,6 +122,32 @@ const live = { '--norm', 'batch', ] }, + listen: (task, res, i) => { + // relay the new dataset name from youtube-dl or w/e + const lines = res.split('\n') + for (let line of lines) { + console.log(line) + if ( line.match(/^rename result: /) ) { + let tag = line.split(': ')[1].trim() + task.dataset = tag + console.log(">>>>>> created dataset", tag) + return { type: 'progress', action: 'resolve_dataset', task } + } + } + return null + }, + after: 'render', +} +const render = { + type: 'perl', + script: 'dir-to-movie.pl', + params: (task) => { + return [ + '--tag', task.dataset, + '--module', task.module, + '--endpoint', process.env.API_REMOTE + '/api/folder/' + task.opt.folder_id + '/upload/', + ] + } } export default { @@ -132,5 +158,6 @@ export default { train, generate, live, + render, } } diff --git a/public/bundle.js b/public/bundle.js index 73c8d0b..d3760b8 100644 --- a/public/bundle.js +++ b/public/bundle.js @@ -2450,6 +2450,7 @@ var FileRow = exports.FileRow = function FileRow(props) { var size = _util2.default.hush_size(file.size); var date = file.date || file.created_at; var epoch = file.epoch || file.epochs || 0; + var count = file.count || 0; var name = void 0; var key = void 0; @@ -2522,6 +2523,11 @@ var FileRow = exports.FileRow = function FileRow(props) { { className: "size " + size[0] }, size[1] ), + fields.has('count') && (0, _preact.h)( + 'div', + { className: "count " + _util2.default.hush_null(count)[0] }, + count > 0 ? count + ' files' : '' + ), (fields.has('activity') || fields.has('module')) && (0, _preact.h)( 'div', { className: 'activity' }, @@ -2688,15 +2694,19 @@ function FolderList(_ref) { { 'class': 'col folderList' }, (0, _preact.h)(_loading2.default, { progress: db.progress }) ); - } else if (!db.data.folders.length && emptyText) { + } + var folderList = db.data.folders.filter(function (folder) { + return !!folder.generated; + }); + if (!folderList.length && emptyText) { return (0, _preact.h)( 'div', { 'class': 'col folderList' }, emptyText ); } - console.log(db.data.folders); - var folders = db.data.folders.map(function (raw_folder) { + console.log(folders); + var folders = folderList.map(function (raw_folder) { var folder = db.data.folderLookup[raw_folder.id]; var fileCount = folder.files ? folder.files.length : 0; @@ -3934,7 +3944,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var load = exports.load = function load() { return function (dispatch) { - _util2.default.allProgress([_actions2.default.task.index({ limit: 40, orderBy: 'created_at desc' }), _actions2.default.folder.index(), _actions2.default.file.index({ module: 'samplernn', generated: 1, limit: 10, orderBy: 'created_at desc' })], function (percent, i, n) { + _util2.default.allProgress([_actions2.default.task.index({ limit: 40, orderBy: 'created_at desc' }), _actions2.default.folder.index({ activity: 'dataset' }), _actions2.default.file.index({ module: 'samplernn', generated: 1, limit: 10, orderBy: 'created_at desc' })], function (percent, i, n) { console.log('dashboard load progress', i, n); dispatch({ type: _types2.default.app.load_progress, progress: { i: i, n: n } }); }).then(function (res) { @@ -4794,6 +4804,10 @@ var DatasetComponent = function (_Component) { var datasetLookup = data.datasetLookup, fileLookup = data.fileLookup; + if (!datasetLookup) { + return (0, _preact.h)('div', null); + } + var _util$sort$orderByFn = _util2.default.sort.orderByFn('date desc'), mapFn = _util$sort$orderByFn.mapFn, sortFn = _util$sort$orderByFn.sortFn; @@ -5147,6 +5161,8 @@ var load = exports.load = function load(module) { var folderLookup = {}; var fileLookup = {}; + var resultsFolder = {}; + // take all of the folders and put them in a lookup folderLookup = folders.reduce(function (folderLookup, folder) { folderLookup[folder.id] = { @@ -5156,11 +5172,26 @@ var load = exports.load = function load(module) { files: [], datasets: [] }; + resultsFolder = resultsFolder || folder.name === 'results' && folder; return folderLookup; }, { unsorted: unsortedFolder(module, true) }); + if (!resultsFolder) { + console.log('creating results folder...'); + _actions2.default.folder.create({ + module: module, + name: 'results', + activity: 'results' + }).then(function (folder) { + console.log('created folder', folder); + folderLookup.results = folder; + }); + } else { + console.log('got results folder', resultsFolder); + } + // prepare the files by splitting into two groups var generatedFiles = files.filter(function (file) { return file.generated; @@ -5205,7 +5236,8 @@ var load = exports.load = function load(module) { datasetLookup: datasetLookup, folders: folders, files: files, - unsortedFolder: folderLookup.unsorted + unsortedFolder: folderLookup.unsorted, + resultsFolder: resultsFolder }; }).catch(function (e) { console.error(e); @@ -8159,17 +8191,18 @@ var load_directories = exports.load_directories = function load_directories(id) datasetLookup = datasetApiReport.datasetLookup, folders = datasetApiReport.folders, files = datasetApiReport.files, - unsortedFolder = datasetApiReport.unsortedFolder; + unsortedFolder = datasetApiReport.unsortedFolder, + resultsFolder = datasetApiReport.resultsFolder; // console.log(datasetUsage) var sequenceDirectories = sequences.filter(function (s) { return s.dir; }); - console.log(sequenceDirectories); + // console.log(sequenceDirectories) sequenceDirectories.forEach(function (dir) { var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name); dataset.isBuilt = true; - console.log(dir.name, dataset); + // console.log(dir.name, dataset) }); datasets.filter(function (s) { @@ -8252,7 +8285,8 @@ var load_directories = exports.load_directories = function load_directories(id) folders: folders, files: files, sequences: sequenceDirectories, datasets: datasets, - checkpoints: checkpointDirectories + checkpoints: checkpointDirectories, + resultsFolder: resultsFolder } }); if (id) { @@ -8273,22 +8307,24 @@ var load_directories = exports.load_directories = function load_directories(id) var load_results = exports.load_results = function load_results(id) { return function (dispatch) { - console.log('hi'); var module = _pix2pixhd2.default.name; - _util2.default.allProgress([_actions2.default.file.index({ module: module, generated: true }), _actions2.default.socket.list_sequences({ module: module, dir: 'results' }), _actions2.default.socket.list_directory({ module: module, dir: 'renders' })], function (percent, i, n) { + _util2.default.allProgress([_actions2.default.folder.index({ name: 'results' }), _actions2.default.file.index({ module: module, generated: 1 }), _actions2.default.socket.list_sequences({ module: module, dir: 'results' }), _actions2.default.socket.list_directory({ module: module, dir: 'renders' })], function (percent, i, n) { console.log('pix2pixhd load progress', i, n); dispatch({ type: _types2.default.app.load_progress, progress: { i: i, n: n } }); }).then(function (res) { - var _res2 = _slicedToArray(res, 3), - files = _res2[0], - results = _res2[1], - renders = _res2[2]; //, datasets, results, output, datasetUsage, lossReport] = res + var _res2 = _slicedToArray(res, 4), + folders = _res2[0], + files = _res2[1], + results = _res2[2], + renders = _res2[3]; //, datasets, results, output, datasetUsage, lossReport] = res console.log(files, results, renders); dispatch({ type: _types2.default.pix2pixhd.load_results, results: { + folder: folders[0], + files: files, results: results, renders: renders } @@ -8336,6 +8372,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + var _types = __webpack_require__(/*! ../../types */ "./app/client/types.js"); var _types2 = _interopRequireDefault(_types); @@ -8351,7 +8389,8 @@ var pix2pixhdInitialState = { progress: { i: 0, n: 0 }, error: null, folder_id: 0, - data: null + data: null, + results: null }; var pix2pixhdReducer = function pix2pixhdReducer() { @@ -8363,6 +8402,10 @@ var pix2pixhdReducer = function pix2pixhdReducer() { } switch (action.type) { + case _types2.default.pix2pixhd.load_results: + return _extends({}, state, { + results: action.results + }); default: return state; } @@ -8387,6 +8430,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.live_task = exports.train_task = exports.fetch_task = undefined; +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + var _v = __webpack_require__(/*! uuid/v1 */ "./node_modules/uuid/v1.js"); var _v2 = _interopRequireDefault(_v); @@ -8436,8 +8481,7 @@ var train_task = exports.train_task = function train_task(dataset, folder_id) { epoch: 0, epochs: epochs, opt: { - folder_id: folder_id, - load_size: 264 // switch to 256 for pix2wav + folder_id: folder_id } }; console.log(task); @@ -8445,16 +8489,16 @@ var train_task = exports.train_task = function train_task(dataset, folder_id) { }; }; -var live_task = exports.live_task = function live_task(sequence, checkpoint) { +var live_task = exports.live_task = function live_task(sequence, checkpoint, opt) { return function (dispatch) { var task = { module: _pix2pixhd2.default.name, activity: 'live', dataset: sequence, checkpoint: checkpoint, - opt: { - poll_delay: 0.09 - } + opt: _extends({}, opt, { + poll_delay: 0.01 + }) }; console.log(task); console.log('add live task'); @@ -8571,10 +8615,12 @@ var Pix2PixHDLive = function (_Component) { key: 'start', value: function start() { // console.log(this.props) - var sequence = this.props.pix2pixhd.data.sequences[0].name; - var checkpoint = this.props.pix2pixhd.data.checkpoints[0].name; + var sequence = this.props.live.opt.sequence_name; + var checkpoint = this.props.live.opt.checkpoint_name; console.log('starting up!', sequence, checkpoint); - this.props.actions.tasks.live_task(sequence, checkpoint); + this.props.actions.tasks.live_task(sequence, checkpoint, { + folder_id: resultsFolder.id + }); } }, { key: 'interrupt', @@ -8603,6 +8649,8 @@ var Pix2PixHDLive = function (_Component) { }, { key: 'render', value: function render() { + var _this2 = this; + // console.log(this.props) if (this.props.pix2pixhd.loading) { return (0, _preact.h)(_common.Loading, null); @@ -8659,32 +8707,36 @@ var Pix2PixHDLive = function (_Component) { }), (0, _preact.h)(_common.Slider, { live: true, name: 'frame_delay', - min: 0.05, max: 2.0, type: 'float' + min: 0.0, max: 2.0, type: 'float' }), this.renderRestartButton(), + this.renderRecordButton(), (0, _preact.h)( _common.Button, { - title: this.props.opt.savingVideo ? 'Saving video...' : this.props.opt.recording ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames / 25) + ')' : 'Record video', - onClick: this.toggleRecording + title: 'Save frame', + onClick: _player.saveFrame }, - this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record' + 'Save' ), (0, _preact.h)( - _common.Button, + _common.ParamGroup, { - title: 'Save frame', - onClick: _player.saveFrame + title: 'Record video', + name: 'store_b', + onToggle: function onToggle(value) { + // now storing frames on server... + } }, - 'Save' + (0, _preact.h)(_common.TextInput, { + title: 'Video name', + name: 'final_tag', + value: this.props.opt.final_tag, + onSave: function onSave(value) { + _this2.props.actions.live.set_param('final_tag', value); + } + }) ), - (0, _preact.h)(_common.ParamGroup, { - title: 'Render on server', - name: 'store_b', - onToggle: function onToggle(value) { - // now storing frames on server... - } - }), (0, _preact.h)( 'p', { 'class': 'last_message' }, @@ -8815,15 +8867,16 @@ var Pix2PixHDLive = function (_Component) { }, { key: 'renderRestartButton', value: function renderRestartButton() { - var _this2 = this; + var _this3 = this; + console.log(this.props.runner.gpu); if (this.props.runner.gpu.status === 'IDLE') { return (0, _preact.h)( _common.Button, { title: 'GPU Idle', onClick: function onClick() { - return _this2.start(); + return _this3.start(); } }, 'Start' @@ -8835,7 +8888,7 @@ var Pix2PixHDLive = function (_Component) { { title: 'GPU Busy', onClick: function onClick() { - return _this2.interrupt(); + return _this3.interrupt(); } }, 'Interrupt' @@ -8858,7 +8911,7 @@ var Pix2PixHDLive = function (_Component) { { title: 'GPU Busy', onClick: function onClick() { - return _this2.interrupt(); + return _this3.interrupt(); } }, 'Interrupt' @@ -8881,13 +8934,32 @@ var Pix2PixHDLive = function (_Component) { { title: 'GPU Busy', onClick: function onClick() { - return _this2.interrupt(); + return _this3.interrupt(); } }, 'Interrupt' ) ); } + }, { + key: 'renderRecordButton', + value: function renderRecordButton() { + return null; + // return ( + // + // ) + } }]); return Pix2PixHDLive; @@ -9057,30 +9129,17 @@ var Pix2pixHDResults = function (_Component) { _createClass(Pix2pixHDResults, [{ key: 'render', value: function render() { - if (this.props.pix2pixhd.loading) return (0, _preact.h)(_loading2.default, { progress: this.props.pix2pixhd.progress }); - // const { folderLookup, fileLookup, datasetLookup } = this.props.samplernn.data + var _this2 = this; - // console.log(bestRenders.map(r => r.epoch)) - // const path = folder.name === 'unsorted' - // ? "/samplernn/import/" - // : "/samplernn/datasets/" + folder.id + "/" - // return ( - //
- //

{folder.name}

- // { - // e.preventDefault() - // e.stopPropagation() - // console.log('picked a file', file) - // this.handlePick(file) - // }} - // /> - //
- // ) + if (!this.props.pix2pixhd.results) return (0, _preact.h)(_loading2.default, { progress: this.props.pix2pixhd.progress }); + + var _props$pix2pixhd$resu = this.props.pix2pixhd.results, + resultsFolder = _props$pix2pixhd$resu.resultsFolder, + results = _props$pix2pixhd$resu.results, + renders = _props$pix2pixhd$resu.renders, + files = _props$pix2pixhd$resu.files; + + console.log(results); return (0, _preact.h)( 'div', @@ -9094,7 +9153,54 @@ var Pix2pixHDResults = function (_Component) { 'Pix2PixHD Results' ) ), - (0, _preact.h)('div', { 'class': 'rows params renders' }) + (0, _preact.h)( + 'div', + { 'class': 'rows params renders' }, + (0, _preact.h)(_fileList.FileList, { + linkFiles: true, + files: files, + orderBy: 'date desc', + fields: 'name date size', + onClick: function onClick(file, e) { + e.preventDefault(); + e.stopPropagation(); + console.log('picked a result', file); + _this2.handlePick(file); + } + }), + (0, _preact.h)( + 'h3', + null, + 'renders' + ), + (0, _preact.h)(_fileList.FileList, { + files: renders, + orderBy: 'date desc', + fields: 'name date size', + onClick: function onClick(file, e) { + e.preventDefault(); + e.stopPropagation(); + console.log('picked a result', file); + _this2.handlePick(file); + } + }), + (0, _preact.h)( + 'h3', + null, + 'results' + ), + (0, _preact.h)(_fileList.FileList, { + files: results, + orderBy: 'date desc', + fields: 'name date count', + onClick: function onClick(file, e) { + e.preventDefault(); + e.stopPropagation(); + console.log('picked a result', file); + _this2.handlePick(file); + } + }) + ) ); } }, { @@ -9298,7 +9404,6 @@ var Pix2PixHDShow = function (_Component) { var input = pix2pixhd.data.fileLookup[dataset.input[0]]; if (!input) return null; if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null; - console.log(dataset); return (0, _preact.h)( 'div', null, diff --git a/public/bundle.js.map b/public/bundle.js.map index 81c5dd6..eff8fa2 100644 --- a/public/bundle.js.map +++ b/public/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["webpack:///webpack/bootstrap","webpack:///./app/client/actions.js","webpack:///./app/client/api/crud.actions.js","webpack:///./app/client/api/crud.fetch.js","webpack:///./app/client/api/crud.types.js","webpack:///./app/client/api/crud.upload.js","webpack:///./app/client/api/index.js","webpack:///./app/client/api/parser.js","webpack:///./app/client/audio/lib/draw.js","webpack:///./app/client/audio/lib/index.js","webpack:///./app/client/audio/lib/output.js","webpack:///./app/client/audio/lib/spectrum.js","webpack:///./app/client/audio/lib/startAudioContext.js","webpack:///./app/client/audio/pix2wav.js","webpack:///./app/client/audio/wav2pix.js","webpack:///./app/client/common/audioPlayer/audioPlayer.actions.js","webpack:///./app/client/common/audioPlayer/audioPlayer.component.js","webpack:///./app/client/common/audioPlayer/audioPlayer.reducer.js","webpack:///./app/client/common/button.component.js","webpack:///./app/client/common/currentTask.component.js","webpack:///./app/client/common/fileList.component.js","webpack:///./app/client/common/fileUpload.component.js","webpack:///./app/client/common/folderList.component.js","webpack:///./app/client/common/gallery.component.js","webpack:///./app/client/common/group.component.js","webpack:///./app/client/common/header.component.js","webpack:///./app/client/common/index.js","webpack:///./app/client/common/loading.component.js","webpack:///./app/client/common/param.component.js","webpack:///./app/client/common/paramGroup.component.js","webpack:///./app/client/common/player.component.js","webpack:///./app/client/common/progress.component.js","webpack:///./app/client/common/select.component.js","webpack:///./app/client/common/slider.component.js","webpack:///./app/client/common/textInput.component.js","webpack:///./app/client/common/views/index.js","webpack:///./app/client/common/views/new.view.js","webpack:///./app/client/dashboard/dashboard.actions.js","webpack:///./app/client/dashboard/dashboard.component.js","webpack:///./app/client/dashboard/dashboard.reducer.js","webpack:///./app/client/dashboard/dashboardheader.component.js","webpack:///./app/client/dashboard/tasklist.component.js","webpack:///./app/client/dataset/dataset.actions.js","webpack:///./app/client/dataset/dataset.component.js","webpack:///./app/client/dataset/dataset.form.js","webpack:///./app/client/dataset/dataset.loader.js","webpack:///./app/client/dataset/dataset.new.js","webpack:///./app/client/dataset/dataset.reducer.js","webpack:///./app/client/dataset/upload.reducer.js","webpack:///./app/client/dataset/upload.status.js","webpack:///./app/client/index.jsx","webpack:///./app/client/live/live.actions.js","webpack:///./app/client/live/live.reducer.js","webpack:///./app/client/live/player.js","webpack:///./app/client/live/whammy.js","webpack:///./app/client/modules/index.js","webpack:///./app/client/modules/module.reducer.js","webpack:///./app/client/modules/pix2pix/index.js","webpack:///./app/client/modules/pix2pix/pix2pix.actions.js","webpack:///./app/client/modules/pix2pix/pix2pix.module.js","webpack:///./app/client/modules/pix2pix/pix2pix.reducer.js","webpack:///./app/client/modules/pix2pix/pix2pix.tasks.js","webpack:///./app/client/modules/pix2pix/views/pix2pix.live.js","webpack:///./app/client/modules/pix2pix/views/pix2pix.new.js","webpack:///./app/client/modules/pix2pix/views/pix2pix.show.js","webpack:///./app/client/modules/pix2pixhd/index.js","webpack:///./app/client/modules/pix2pixhd/pix2pixhd.actions.js","webpack:///./app/client/modules/pix2pixhd/pix2pixhd.module.js","webpack:///./app/client/modules/pix2pixhd/pix2pixhd.reducer.js","webpack:///./app/client/modules/pix2pixhd/pix2pixhd.tasks.js","webpack:///./app/client/modules/pix2pixhd/views/pix2pixhd.live.js","webpack:///./app/client/modules/pix2pixhd/views/pix2pixhd.new.js","webpack:///./app/client/modules/pix2pixhd/views/pix2pixhd.results.js","webpack:///./app/client/modules/pix2pixhd/views/pix2pixhd.show.js","webpack:///./app/client/modules/pix2wav/index.js","webpack:///./app/client/modules/pix2wav/pix2wav.actions.js","webpack:///./app/client/modules/pix2wav/pix2wav.module.js","webpack:///./app/client/modules/pix2wav/pix2wav.reducer.js","webpack:///./app/client/modules/pix2wav/pix2wav.tasks.js","webpack:///./app/client/modules/pix2wav/views/pix2wav.live.js","webpack:///./app/client/modules/pix2wav/views/pix2wav.new.js","webpack:///./app/client/modules/pix2wav/views/pix2wav.show.js","webpack:///./app/client/modules/pix2wav/views/spectrogram.upload.js","webpack:///./app/client/modules/samplernn/index.js","webpack:///./app/client/modules/samplernn/samplernn.actions.js","webpack:///./app/client/modules/samplernn/samplernn.module.js","webpack:///./app/client/modules/samplernn/samplernn.reducer.js","webpack:///./app/client/modules/samplernn/samplernn.tasks.js","webpack:///./app/client/modules/samplernn/views/samplernn.graph.js","webpack:///./app/client/modules/samplernn/views/samplernn.import.js","webpack:///./app/client/modules/samplernn/views/samplernn.new.js","webpack:///./app/client/modules/samplernn/views/samplernn.results.js","webpack:///./app/client/modules/samplernn/views/samplernn.show.js","webpack:///./app/client/queue/queue.actions.js","webpack:///./app/client/queue/queue.reducer.js","webpack:///./app/client/socket/index.js","webpack:///./app/client/socket/socket.actions.js","webpack:///./app/client/socket/socket.api.js","webpack:///./app/client/socket/socket.connection.js","webpack:///./app/client/socket/socket.live.js","webpack:///./app/client/socket/socket.system.js","webpack:///./app/client/socket/socket.task.js","webpack:///./app/client/store.js","webpack:///./app/client/system/system.actions.js","webpack:///./app/client/system/system.component.js","webpack:///./app/client/system/system.reducer.js","webpack:///./app/client/types.js","webpack:///./app/client/util/format.js","webpack:///./app/client/util/hidpi-canvas.js","webpack:///./app/client/util/index.js","webpack:///./app/client/util/math.js","webpack:///./app/client/util/sort.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/buffer/node_modules/isarray/index.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/fetch-jsonp/build/fetch-jsonp.js","webpack:///./node_modules/fft.js/lib/fft.js","webpack:///./node_modules/file-saver/FileSaver.js","webpack:///./node_modules/history/DOMUtils.js","webpack:///./node_modules/history/LocationUtils.js","webpack:///./node_modules/history/PathUtils.js","webpack:///./node_modules/history/createBrowserHistory.js","webpack:///./node_modules/history/createHashHistory.js","webpack:///./node_modules/history/createMemoryHistory.js","webpack:///./node_modules/history/createTransitionManager.js","webpack:///./node_modules/history/es/DOMUtils.js","webpack:///./node_modules/history/es/LocationUtils.js","webpack:///./node_modules/history/es/PathUtils.js","webpack:///./node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/history/es/createHashHistory.js","webpack:///./node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/history/es/createTransitionManager.js","webpack:///./node_modules/history/es/index.js","webpack:///./node_modules/hoist-non-react-statics/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/immediate/lib/browser.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/jszip/lib/base64.js","webpack:///./node_modules/jszip/lib/compressedObject.js","webpack:///./node_modules/jszip/lib/compressions.js","webpack:///./node_modules/jszip/lib/crc32.js","webpack:///./node_modules/jszip/lib/defaults.js","webpack:///./node_modules/jszip/lib/external.js","webpack:///./node_modules/jszip/lib/flate.js","webpack:///./node_modules/jszip/lib/generate/ZipFileWorker.js","webpack:///./node_modules/jszip/lib/generate/index.js","webpack:///./node_modules/jszip/lib/index.js","webpack:///./node_modules/jszip/lib/load.js","webpack:///./node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js","webpack:///./node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js","webpack:///./node_modules/jszip/lib/nodejsUtils.js","webpack:///./node_modules/jszip/lib/object.js","webpack:///./node_modules/jszip/lib/readable-stream-browser.js","webpack:///./node_modules/jszip/lib/reader/ArrayReader.js","webpack:///./node_modules/jszip/lib/reader/DataReader.js","webpack:///./node_modules/jszip/lib/reader/NodeBufferReader.js","webpack:///./node_modules/jszip/lib/reader/StringReader.js","webpack:///./node_modules/jszip/lib/reader/Uint8ArrayReader.js","webpack:///./node_modules/jszip/lib/reader/readerFor.js","webpack:///./node_modules/jszip/lib/signature.js","webpack:///./node_modules/jszip/lib/stream/ConvertWorker.js","webpack:///./node_modules/jszip/lib/stream/Crc32Probe.js","webpack:///./node_modules/jszip/lib/stream/DataLengthProbe.js","webpack:///./node_modules/jszip/lib/stream/DataWorker.js","webpack:///./node_modules/jszip/lib/stream/GenericWorker.js","webpack:///./node_modules/jszip/lib/stream/StreamHelper.js","webpack:///./node_modules/jszip/lib/support.js","webpack:///./node_modules/jszip/lib/utf8.js","webpack:///./node_modules/jszip/lib/utils.js","webpack:///./node_modules/jszip/lib/zipEntries.js","webpack:///./node_modules/jszip/lib/zipEntry.js","webpack:///./node_modules/jszip/lib/zipObject.js","webpack:///./node_modules/jszip/node_modules/core-js/library/fn/set-immediate.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_invoke.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_task.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/jszip/node_modules/core-js/library/modules/web.immediate.js","webpack:///./node_modules/lie/lib/browser.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/moment/min/moment.min.js","webpack:///./node_modules/node-fetch/browser.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/pako/index.js","webpack:///./node_modules/pako/lib/deflate.js","webpack:///./node_modules/pako/lib/inflate.js","webpack:///./node_modules/pako/lib/utils/common.js","webpack:///./node_modules/pako/lib/utils/strings.js","webpack:///./node_modules/pako/lib/zlib/adler32.js","webpack:///./node_modules/pako/lib/zlib/constants.js","webpack:///./node_modules/pako/lib/zlib/crc32.js","webpack:///./node_modules/pako/lib/zlib/deflate.js","webpack:///./node_modules/pako/lib/zlib/gzheader.js","webpack:///./node_modules/pako/lib/zlib/inffast.js","webpack:///./node_modules/pako/lib/zlib/inflate.js","webpack:///./node_modules/pako/lib/zlib/inftrees.js","webpack:///./node_modules/pako/lib/zlib/messages.js","webpack:///./node_modules/pako/lib/zlib/trees.js","webpack:///./node_modules/pako/lib/zlib/zstream.js","webpack:///./node_modules/preact-compat/dist/preact-compat.es.js","webpack:///./node_modules/preact/dist/preact.esm.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/verifySubselectors.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router-dom/es/HashRouter.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./node_modules/react-router-dom/es/MemoryRouter.js","webpack:///./node_modules/react-router-dom/es/NavLink.js","webpack:///./node_modules/react-router-dom/es/Prompt.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/StaticRouter.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router-dom/es/index.js","webpack:///./node_modules/react-router-dom/es/matchPath.js","webpack:///./node_modules/react-router-dom/es/withRouter.js","webpack:///./node_modules/react-router-redux/lib/actions.js","webpack:///./node_modules/react-router-redux/lib/index.js","webpack:///./node_modules/react-router-redux/lib/middleware.js","webpack:///./node_modules/react-router-redux/lib/reducer.js","webpack:///./node_modules/react-router-redux/lib/sync.js","webpack:///./node_modules/react-router/es/MemoryRouter.js","webpack:///./node_modules/react-router/es/Prompt.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router/es/StaticRouter.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/withRouter.js","webpack:///./node_modules/react-router/node_modules/isarray/index.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/node_modules/isarray/index.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/redux-thunk/lib/index.js","webpack:///./node_modules/redux/es/redux.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/signal-windows/index.js","webpack:///./node_modules/signal-windows/src/framer.js","webpack:///./node_modules/signal-windows/src/windows.js","webpack:///./node_modules/sprintf-js/src/sprintf.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/tone/build/Tone.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/warning/browser.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///(webpack)/buildin/module.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/client/index.jsx\");\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _redux = require('redux');\n\nvar _api = require('./api');\n\nvar _live = require('./live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('./queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _system = require('./system/system.actions');\n\nvar systemActions = _interopRequireWildcard(_system);\n\nvar _socket = require('./socket/socket.actions');\n\nvar socketActions = _interopRequireWildcard(_socket);\n\nvar _dataset = require('./dataset/dataset.actions');\n\nvar datasetActions = _interopRequireWildcard(_dataset);\n\nvar _audioPlayer = require('./common/audioPlayer/audioPlayer.actions');\n\nvar audioPlayerActions = _interopRequireWildcard(_audioPlayer);\n\nvar _store = require('./store');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nexports.default = Object.keys(_api.actions).map(function (a) {\n return [a, _api.actions[a]];\n}).concat([['live', liveActions], ['queue', queueActions], ['system', systemActions], ['dataset', datasetActions], ['audioPlayer', audioPlayerActions]]).map(function (p) {\n return [p[0], (0, _redux.bindActionCreators)(p[1], _store.store.dispatch)];\n}).concat([['socket', socketActions]]).reduce(function (a, b) {\n return (a[b[0]] = b[1]) && a;\n}, {});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud_action = undefined;\nexports.crud_actions = crud_actions;\n\nvar _crud = require('./crud.fetch');\n\nvar _crud2 = require('./crud.types');\n\nvar _crud3 = require('./crud.upload');\n\nfunction crud_actions(type) {\n var fetch_type = (0, _crud.crud_fetch)(type);\n return ['index', 'show', 'create', 'update', 'destroy'].reduce(function (lookup, param) {\n lookup[param] = crud_action(type, param, function (q) {\n return fetch_type[param](q);\n });\n return lookup;\n }, {\n action: function action(method, fn) {\n return crud_action(type, method, fn);\n },\n upload: function upload(id, fd) {\n return (0, _crud3.upload_action)(type, id, fd);\n }\n });\n}\n\nvar crud_action = exports.crud_action = function crud_action(type, method, fn) {\n return function (q) {\n return function (dispatch) {\n return new Promise(function (resolve, reject) {\n dispatch({ type: (0, _crud2.as_type)(type, method + '_loading') });\n fn(q).then(function (data) {\n dispatch({ type: (0, _crud2.as_type)(type, method), data: data });\n resolve(data);\n }).catch(function (e) {\n dispatch({ type: (0, _crud2.as_type)(type, method + '_error') });\n reject(e);\n });\n });\n };\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud_fetch = crud_fetch;\nexports.postBody = postBody;\n\nvar _nodeFetch = require('node-fetch');\n\nvar _nodeFetch2 = _interopRequireDefault(_nodeFetch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction crud_fetch(type, tag) {\n var uri = '/api/' + type + '/' + (tag || '');\n return {\n index: function index(q) {\n return (0, _nodeFetch2.default)(_get_url(uri, q), _get_headers()).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n show: function show(id) {\n return (0, _nodeFetch2.default)(uri + id).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n create: function create(data) {\n return (0, _nodeFetch2.default)(uri, post(data)).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n update: function update(data) {\n return (0, _nodeFetch2.default)(uri + data.id, put(data)).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n destroy: function destroy(data) {\n return (0, _nodeFetch2.default)(uri + data.id, _destroy(data)).then(function (req) {\n return req.json();\n }).catch(error);\n }\n };\n}\n\nfunction _get_url(_url, data) {\n var url = new URL(window.location.origin + _url);\n if (data) {\n Object.keys(data).forEach(function (key) {\n return url.searchParams.append(key, data[key]);\n });\n }\n return url;\n}\nfunction _get_headers() {\n return {\n method: 'GET',\n headers: {\n 'Accept': 'application/json'\n }\n };\n}\nfunction post(data) {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction postBody(data) {\n return {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n }\n };\n}\nfunction put(data) {\n return {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction _destroy(data) {\n return {\n method: 'DELETE',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction error(err) {\n console.warn(err);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar as_type = exports.as_type = function as_type(a, b) {\n return [a, b].join('_').toUpperCase();\n};\n\nvar with_type = exports.with_type = function with_type(type, actions) {\n return actions.reduce(function (a, b) {\n return (a[b] = as_type(type, b)) && a;\n }, {});\n};\n\nvar crud_type = exports.crud_type = function crud_type(type) {\n var actions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return with_type(type, actions.concat(['index_loading', 'index', 'index_error', 'show_loading', 'show', 'show_error', 'create_loading', 'create', 'create_error', 'update_loading', 'update', 'update_error', 'destroy_loading', 'destroy', 'destroy_error', 'upload_loading', 'upload_progress', 'upload_waiting', 'upload_complete', 'upload_error', 'sort']));\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.upload_action = undefined;\nexports.crud_upload = crud_upload;\n\nvar _crud = require('./crud.types');\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction crud_upload(type, fd, data, dispatch) {\n return new Promise(function (resolve, reject) {\n var id = data.id;\n\n Object.keys(data).forEach(function (key) {\n if (key !== 'id') {\n fd.append(key, data[key]);\n }\n });\n\n console.log('/api/' + type + '/' + id + '/upload/');\n\n var xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n xhr.addEventListener(\"abort\", uploadCancelled, false);\n xhr.open(\"POST\", '/api/' + type + '/' + id + '/upload/');\n xhr.send(fd);\n\n dispatch && dispatch({ type: (0, _crud.as_type)(type, 'upload_loading') });\n\n var complete = false;\n\n function uploadProgress(e) {\n if (e.lengthComputable) {\n var percent = Math.round(e.loaded * 100 / e.total) || 0;\n if (percent > 99) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_waiting'),\n percent: percent\n }, type, id));\n } else {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_progress'),\n percent: percent\n }, type, id));\n }\n } else {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'unable to compute upload progress'\n }, type, id));\n }\n }\n\n function uploadComplete(e) {\n var parsed = void 0;\n try {\n parsed = JSON.parse(e.target.responseText);\n } catch (e) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload failed'\n }, type, id));\n reject(e);\n return;\n }\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_complete'),\n data: parsed\n }, type, id));\n if (parsed.files && parsed.files.length) {\n parsed.files.forEach(function (file) {\n console.log(file);\n dispatch && dispatch({\n type: (0, _crud.as_type)('file', 'create'),\n data: file\n });\n });\n }\n resolve(parsed);\n }\n\n function uploadFailed(evt) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload failed'\n }, type, id));\n reject(evt);\n }\n\n function uploadCancelled(evt) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload cancelled'\n }, type, id));\n reject(evt);\n }\n });\n}\n\nvar upload_action = exports.upload_action = function upload_action(type, id, fd) {\n return function (dispatch) {\n return crud_upload(type, id, fd, dispatch);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.actions = exports.parser = exports.util = undefined;\n\nvar _crud = require('./crud.actions');\n\nvar _util = require('../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _parser = require('./parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nfor our crud events, create corresponding actions\nthe actions fire a 'loading' event, call the underlying api method, and then resolve.\nso you can do ... \n import { folderActions } from '../../api'\n folderActions.index({ module: 'samplernn' })\n folderActions.show(12)\n folderActions.create({ module: 'samplernn', name: 'foo' })\n folderActions.update(12, { module: 'pix2pix' })\n folderActions.destroy(12, { confirm: true })\n folderActions.upload(12, form_data)\n*/\n\nexports.util = _util2.default;\nexports.parser = parser;\nvar actions = exports.actions = ['folder', 'file', 'dataset', 'task', 'user'].reduce(function (a, b) {\n return (a[b] = (0, _crud.crud_actions)(b)) && a;\n}, {});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tumblr = exports.thumbnail = exports.loadImage = exports.tag = exports.parse = exports.lookup = exports.integrations = undefined;\n\nvar _nodeFetch = require('node-fetch');\n\nvar _nodeFetch2 = _interopRequireDefault(_nodeFetch);\n\nvar _fetchJsonp = require('fetch-jsonp');\n\nvar _fetchJsonp2 = _interopRequireDefault(_fetchJsonp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar integrations = exports.integrations = [{\n type: 'image',\n regex: /\\.(jpeg|jpg|gif|png|svg)(\\?.*)?$/i,\n fetch: function fetch(url, done) {\n var img = new Image();\n img.onload = function () {\n if (!img) return;\n var width = img.naturalWidth,\n height = img.naturalHeight;\n img = null;\n done({\n url: url,\n type: \"image\",\n token: \"\",\n thumbnail: \"\",\n title: \"\",\n width: width,\n height: height\n });\n };\n img.src = url;\n if (img.complete) {\n img.onload();\n }\n },\n tag: function tag(media) {\n return '';\n }\n}, {\n type: 'video',\n regex: /\\.(mp4|webm)(\\?.*)?$/i,\n fetch: function fetch(url, done) {\n var video = document.createElement(\"video\");\n var url_parts = url.replace(/\\?.*$/, \"\").split(\"/\");\n var filename = url_parts[url_parts.length - 1];\n video.addEventListener(\"loadedmetadata\", function () {\n var width = video.videoWidth,\n height = video.videoHeight;\n video = null;\n done({\n url: url,\n type: \"video\",\n token: url,\n thumbnail: \"/public/assets/img/video-thumbnail.png\",\n title: filename,\n width: width,\n height: height\n });\n });\n video.src = url;\n video.load();\n },\n tag: function tag(media) {\n return '