summaryrefslogtreecommitdiff
path: root/public/bundle.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/bundle.js')
-rw-r--r--public/bundle.js1733
1 files changed, 1343 insertions, 390 deletions
diff --git a/public/bundle.js b/public/bundle.js
index b9d796c..1e68e45 100644
--- a/public/bundle.js
+++ b/public/bundle.js
@@ -163,6 +163,38 @@ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(
/***/ }),
+/***/ "./app/client/common/group.component.js":
+/*!**********************************************!*\
+ !*** ./app/client/common/group.component.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = Group;
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+function Group(props) {
+ return (0, _preact.h)(
+ 'div',
+ { className: 'group' },
+ (0, _preact.h)(
+ 'h3',
+ null,
+ this.props.title
+ ),
+ this.props.children
+ );
+}
+
+/***/ }),
+
/***/ "./app/client/common/header.component.js":
/*!***********************************************!*\
!*** ./app/client/common/header.component.js ***!
@@ -179,9 +211,18 @@ Object.defineProperty(exports, "__esModule", {
var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+var _reactRouterDom = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/es/index.js");
+
var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
function Header(props) {
+ var tools = "pix2pix samplernn style_transfer_video style_transfer_audio".split(" ").map(function (s, i) {
+ return (0, _preact.h)(
+ 'option',
+ { value: s },
+ s
+ );
+ });
return (0, _preact.h)(
'header',
null,
@@ -193,6 +234,44 @@ function Header(props) {
(0, _preact.h)(
'span',
null,
+ (0, _preact.h)(
+ 'select',
+ null,
+ tools
+ )
+ ),
+ (0, _preact.h)(
+ 'span',
+ null,
+ (0, _preact.h)(
+ _reactRouterDom.Link,
+ { to: '/dashboard' },
+ 'dashboard'
+ )
+ ),
+ (0, _preact.h)(
+ 'span',
+ null,
+ 'checkpoints'
+ ),
+ (0, _preact.h)(
+ 'span',
+ null,
+ 'datasets'
+ ),
+ (0, _preact.h)(
+ 'span',
+ null,
+ 'results'
+ ),
+ (0, _preact.h)(
+ 'span',
+ null,
+ 'live'
+ ),
+ (0, _preact.h)(
+ 'span',
+ null,
props.fps,
' fps'
)
@@ -642,138 +721,28 @@ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(
/***/ }),
-/***/ "./app/client/index.jsx":
-/*!******************************!*\
- !*** ./app/client/index.jsx ***!
- \******************************/
+/***/ "./app/client/dashboard/actions.js":
+/*!*****************************************!*\
+ !*** ./app/client/dashboard/actions.js ***!
+ \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
-
-var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
-
-var _reactRouterDom = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/es/index.js");
-
-var _store = __webpack_require__(/*! ./store */ "./app/client/store.js");
+var _types = __webpack_require__(/*! ../types */ "./app/client/types.js");
-var _socket = __webpack_require__(/*! ./socket */ "./app/client/socket.js");
-
-var _socket2 = _interopRequireDefault(_socket);
-
-var _header = __webpack_require__(/*! ./common/header.component */ "./app/client/common/header.component.js");
-
-var _header2 = _interopRequireDefault(_header);
-
-var _live = __webpack_require__(/*! ./live */ "./app/client/live/index.js");
-
-var _live2 = _interopRequireDefault(_live);
+var _types2 = _interopRequireDefault(_types);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-// import client from './client'
-
-var app = (0, _preact.h)(
- _reactRedux.Provider,
- { store: _store.store },
- (0, _preact.h)(
- _reactRouterDom.BrowserRouter,
- null,
- (0, _preact.h)(
- 'div',
- null,
- (0, _preact.h)(_header2.default, null),
- (0, _preact.h)(_reactRouterDom.Route, { path: '/', component: _live2.default }),
- (0, _preact.h)(_reactRouterDom.Route, { path: '/live/', component: _live2.default })
- )
- )
-);
-
-(0, _preact.render)(app, document.getElementById('container'));
-
/***/ }),
-/***/ "./app/client/live/actions.js":
-/*!************************************!*\
- !*** ./app/client/live/actions.js ***!
- \************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.play = exports.pause = exports.seek = exports.load_epoch = exports.load_sequence = exports.list_sequences = exports.list_epochs = exports.list_checkpoints = exports.set_param = exports.get_params = undefined;
-
-var _socket = __webpack_require__(/*! ../socket */ "./app/client/socket.js");
-
-var socket = _interopRequireWildcard(_socket);
-
-function _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; } }
-
-var get_params = exports.get_params = function get_params() {
- socket.get_params();
- return { type: 'GET_PARAMS' };
-};
-
-var set_param = exports.set_param = function set_param(key, value) {
- console.log('set param', key, value);
- socket.set_param(key, value);
- return { type: 'SET_PARAM', key: key, value: value };
-};
-
-var list_checkpoints = exports.list_checkpoints = function list_checkpoints() {
- socket.list_checkpoints();
- return { type: 'LOADING_CHECKPOINTS' };
-};
-
-var list_epochs = exports.list_epochs = function list_epochs(path) {
- socket.list_epochs(path);
- return { type: 'LOADING_EPOCHS' };
-};
-
-var list_sequences = exports.list_sequences = function list_sequences() {
- socket.list_sequences();
- return { type: 'LOADING_SEQUENCES' };
-};
-
-var load_sequence = exports.load_sequence = function load_sequence(sequence) {
- socket.load_sequence(sequence);
- return { type: 'LOADING_SEQUENCE' };
-};
-
-var load_epoch = exports.load_epoch = function load_epoch(checkpoint, epoch) {
- socket.load_epoch(checkpoint, epoch);
- return { type: 'LOADING_CHECKPOINT' };
-};
-
-var seek = exports.seek = function seek(frame) {
- socket.seek(frame);
- return { type: 'SEEKING' };
-};
-
-var pause = exports.pause = function pause(frame) {
- socket.pause(pause);
- return { type: 'PAUSING' };
-};
-
-var play = exports.play = function play(frame) {
- socket.play();
- return { type: 'PLAYING' };
-};
-
-/***/ }),
-
-/***/ "./app/client/live/index.js":
-/*!**********************************!*\
- !*** ./app/client/live/index.js ***!
- \**********************************/
+/***/ "./app/client/dashboard/dashboard.component.js":
+/*!*****************************************************!*\
+ !*** ./app/client/dashboard/dashboard.component.js ***!
+ \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
@@ -796,9 +765,9 @@ var _player = __webpack_require__(/*! ../common/player.component */ "./app/clien
var _player2 = _interopRequireDefault(_player);
-var _paramGroup = __webpack_require__(/*! ../common/paramGroup.component */ "./app/client/common/paramGroup.component.js");
+var _group = __webpack_require__(/*! ../common/group.component */ "./app/client/common/group.component.js");
-var _paramGroup2 = _interopRequireDefault(_paramGroup);
+var _group2 = _interopRequireDefault(_group);
var _slider = __webpack_require__(/*! ../common/slider.component */ "./app/client/common/slider.component.js");
@@ -812,9 +781,23 @@ var _button = __webpack_require__(/*! ../common/button.component */ "./app/clien
var _button2 = _interopRequireDefault(_button);
-var _player3 = __webpack_require__(/*! ./player */ "./app/client/live/player.js");
+var _dashboardheader = __webpack_require__(/*! ./dashboardheader.component */ "./app/client/dashboard/dashboardheader.component.js");
+
+var _dashboardheader2 = _interopRequireDefault(_dashboardheader);
+
+var _tasklist = __webpack_require__(/*! ./tasklist.component */ "./app/client/dashboard/tasklist.component.js");
-var _actions = __webpack_require__(/*! ./actions */ "./app/client/live/actions.js");
+var _tasklist2 = _interopRequireDefault(_tasklist);
+
+var _filelist = __webpack_require__(/*! ./filelist.component */ "./app/client/dashboard/filelist.component.js");
+
+var _filelist2 = _interopRequireDefault(_filelist);
+
+var _gallery = __webpack_require__(/*! ./gallery.component */ "./app/client/dashboard/gallery.component.js");
+
+var _gallery2 = _interopRequireDefault(_gallery);
+
+var _actions = __webpack_require__(/*! ./actions */ "./app/client/dashboard/actions.js");
var liveActions = _interopRequireWildcard(_actions);
@@ -828,81 +811,35 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-var App = function (_Component) {
- _inherits(App, _Component);
+var Dashboard = function (_Component) {
+ _inherits(Dashboard, _Component);
- function App(props) {
- _classCallCheck(this, App);
+ function Dashboard(props) {
+ _classCallCheck(this, Dashboard);
- var _this = _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).call(this));
-
- props.actions.get_params();
- props.actions.list_checkpoints();
- props.actions.list_sequences();
- _this.changeCheckpoint = _this.changeCheckpoint.bind(_this);
- _this.changeEpoch = _this.changeEpoch.bind(_this);
- _this.changeSequence = _this.changeSequence.bind(_this);
- _this.seek = _this.seek.bind(_this);
- _this.togglePlaying = _this.togglePlaying.bind(_this);
- _this.toggleRecording = _this.toggleRecording.bind(_this);
- return _this;
+ return _possibleConstructorReturn(this, (Dashboard.__proto__ || Object.getPrototypeOf(Dashboard)).call(this));
}
- _createClass(App, [{
+ _createClass(Dashboard, [{
key: 'componentWillUpdate',
value: function componentWillUpdate(nextProps) {
- if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) {
- this.props.actions.list_epochs(nextProps.opt.checkpoint_name);
- }
- }
- }, {
- key: 'changeCheckpoint',
- value: function changeCheckpoint(checkpoint_name) {
- this.props.actions.load_epoch(checkpoint_name, 'latest');
- }
- }, {
- key: 'changeEpoch',
- value: function changeEpoch(epoch_name) {
- this.props.actions.load_epoch(this.props.opt.checkpoint_name, epoch_name);
- }
- }, {
- key: 'changeSequence',
- value: function changeSequence(sequence) {
- console.log('got sequence', sequence);
- this.props.actions.load_sequence(sequence);
- }
- }, {
- key: 'seek',
- value: function seek(percentage) {
- var frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1);
- this.props.actions.seek(frame);
- }
- }, {
- key: 'togglePlaying',
- value: function togglePlaying() {
- if (this.props.opt.processing) {
- this.props.actions.pause();
- } else {
- this.props.actions.play();
- }
- }
- }, {
- key: 'toggleRecording',
- value: function toggleRecording() {
- if (this.props.opt.recording) {
- (0, _player3.stopRecording)();
- this.props.actions.pause();
- } else {
- (0, _player3.startRecording)();
- }
+ // if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) {
+ // this.props.actions.list_epochs(nextProps.opt.checkpoint_name)
+ // }
}
}, {
key: 'render',
value: function render() {
+ var _props = this.props,
+ tasks = _props.tasks,
+ files = _props.files,
+ images = _props.images,
+ site = _props.site;
+
return (0, _preact.h)(
'div',
- { className: 'app' },
- (0, _preact.h)(_player2.default, { width: 424, height: 256 }),
+ { className: 'dashboard' },
+ (0, _preact.h)(_dashboardheader2.default, null),
(0, _preact.h)(
'div',
{ className: 'params' },
@@ -910,201 +847,54 @@ var App = function (_Component) {
'div',
{ className: 'column' },
(0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Playback',
- noToggle: true
- },
- (0, _preact.h)(_select2.default, {
- name: 'send_image',
- title: 'view mode',
- options: ['a', 'b', 'sequence', 'recursive']
- }),
- (0, _preact.h)(_select2.default, {
- name: 'sequence_name',
- title: 'sequence',
- options: this.props.sequences,
- onChange: this.changeSequence
- }),
- (0, _preact.h)(_select2.default, {
- name: 'checkpoint_name',
- title: 'checkpoint',
- options: this.props.checkpoints,
- onChange: this.changeCheckpoint
- }),
- (0, _preact.h)(_select2.default, {
- name: 'epoch',
- title: 'epoch',
- options: this.props.epochs,
- onChange: this.changeEpoch
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'position',
- min: 0.0, max: 1.0, type: 'float',
- value: (this.props.frame.sequence_i || 0) / (this.props.frame.sequence_len || 1),
- onChange: this.seek
- }),
- (0, _preact.h)(
- _button2.default,
- {
- title: 'Processing: ' + (this.props.opt.processing ? 'yes' : 'no'),
- onClick: this.togglePlaying
- },
- this.props.opt.processing ? 'Pause' : 'Restart'
- ),
- (0, _preact.h)(
- _button2.default,
- {
- title: this.props.opt.savingVideo ? 'Saving video...' : this.props.opt.recording ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames) + ')' : 'Record video',
- onClick: this.toggleRecording
- },
- this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record'
- ),
- (0, _preact.h)(
- _button2.default,
- {
- title: 'Save frame',
- onClick: _player3.saveFrame
- },
- 'Save'
- )
- )
- ),
- (0, _preact.h)(
- 'div',
- { className: 'column' },
- (0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Transition',
- name: 'transition'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'transition_period',
- min: 10, max: 5000, type: 'int'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'transition_min',
- min: 0.001, max: 0.2, type: 'float'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'transition_max',
- min: 0.1, max: 1.0, type: 'float'
- })
- ),
- (0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Recursion',
- name: 'recursive'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'recursive_frac',
- min: 0.0, max: 0.5, type: 'float'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'recurse_roll',
- min: -64, max: 64, type: 'int'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'recurse_roll_axis',
- min: 0, max: 1, type: 'int'
- })
+ _group2.default,
+ { title: 'Completed Tasks' },
+ (0, _preact.h)(_tasklist2.default, { tasks: tasks })
),
(0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Sequence',
- name: 'sequence'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'sequence_frac',
- min: 0.0, max: 0.5, type: 'float'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'process_frac',
- min: 0, max: 1, type: 'float'
- })
+ _group2.default,
+ { title: 'Upcoming Tasks' },
+ (0, _preact.h)(_tasklist2.default, { tasks: tasks })
)
),
(0, _preact.h)(
'div',
{ className: 'column' },
(0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Clahe',
- name: 'clahe'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'clip_limit',
- min: 1.0, max: 4.0, type: 'float'
- })
- ),
- (0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Posterize',
- name: 'posterize'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'spatial_window',
- min: 2, max: 128, type: 'int'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'color_window',
- min: 2, max: 128, type: 'int'
- })
+ _group2.default,
+ { title: 'Your Datasets' },
+ (0, _preact.h)(_filelist2.default, { files: files })
),
(0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Blur',
- name: 'blur'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'blur_radius',
- min: 3, max: 7, type: 'odd'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'blur_sigma',
- min: 0, max: 2, type: 'float'
- })
+ _group2.default,
+ { title: 'Results' },
+ (0, _preact.h)(_filelist2.default, { files: files })
),
(0, _preact.h)(
- _paramGroup2.default,
- {
- title: 'Canny Edge Detection',
- name: 'canny'
- },
- (0, _preact.h)(_slider2.default, {
- name: 'canny_lo',
- min: 10, max: 200, type: 'int'
- }),
- (0, _preact.h)(_slider2.default, {
- name: 'canny_hi',
- min: 10, max: 200, type: 'int'
- })
+ _group2.default,
+ { title: 'Audio Player' },
+ (0, _preact.h)(_filelist2.default, { files: files })
)
)
+ ),
+ (0, _preact.h)(
+ 'div',
+ null,
+ (0, _preact.h)(_gallery2.default, { images: images })
)
);
}
}]);
- return App;
+ return Dashboard;
}(_preact.Component);
-function timeInSeconds(n) {
- return (n / 10).toFixed(1) + ' s.';
-}
var mapStateToProps = function mapStateToProps(state) {
return {
- opt: state.live.opt,
- frame: state.live.frame,
- checkpoints: state.live.checkpoints,
- epochs: state.live.epochs,
- sequences: state.live.sequences
+ site: state.system.site,
+ images: state.system.images,
+ tasks: state.system.tasks,
+ files: state.system.files
};
};
@@ -1114,7 +904,615 @@ var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
};
};
-exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(App);
+exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Dashboard);
+
+/***/ }),
+
+/***/ "./app/client/dashboard/dashboard.reducer.js":
+/*!***************************************************!*\
+ !*** ./app/client/dashboard/dashboard.reducer.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
+
+var _moment2 = _interopRequireDefault(_moment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var FileSaver = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/FileSaver.js");
+
+var dashboardInitialState = {
+ loading: false,
+ error: null
+};
+
+var dashboardReducer = function dashboardReducer() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : dashboardInitialState;
+ var action = arguments[1];
+
+ switch (action.type) {
+ default:
+ return state;
+ }
+};
+
+exports.default = dashboardReducer;
+
+/***/ }),
+
+/***/ "./app/client/dashboard/dashboardheader.component.js":
+/*!***********************************************************!*\
+ !*** ./app/client/dashboard/dashboardheader.component.js ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
+
+var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
+
+var _actions = __webpack_require__(/*! ../live/actions */ "./app/client/live/actions.js");
+
+var liveActions = _interopRequireWildcard(_actions);
+
+var _util = __webpack_require__(/*! ../util */ "./app/client/util.js");
+
+var util = _interopRequireWildcard(_util);
+
+function _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; } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var DashboardHeader = function (_Component) {
+ _inherits(DashboardHeader, _Component);
+
+ function DashboardHeader(props) {
+ _classCallCheck(this, DashboardHeader);
+
+ var _this = _possibleConstructorReturn(this, (DashboardHeader.__proto__ || Object.getPrototypeOf(DashboardHeader)).call(this, props));
+
+ _this.handleClick = _this.handleClick.bind(_this);
+ return _this;
+ }
+
+ _createClass(DashboardHeader, [{
+ key: 'handleClick',
+ value: function handleClick(e) {
+ this.props.onClick && this.props.onClick();
+ }
+ }, {
+ key: 'render',
+ value: function render() {
+ var _props = this.props,
+ currentTask = _props.currentTask,
+ site = _props.site;
+
+ var eta = (currentTask.epochs - currentTask.epoch) * 180 / 60 + " minutes";
+ return (0, _preact.h)(
+ 'div',
+ { 'class': 'dashboardHeader heading' },
+ (0, _preact.h)(
+ 'h3',
+ null,
+ site.name
+ ),
+ 'Currently ',
+ util.gerund(currentTask.activity),
+ ' ',
+ currentTask.library,
+ ' on ',
+ currentTask.dataset,
+ (0, _preact.h)('br', null),
+ 'Epoch: ',
+ currentTask.epoch,
+ ' / ',
+ currentTask.epochs,
+ ', ETA ',
+ eta,
+ (0, _preact.h)('br', null),
+ (0, _preact.h)('br', null),
+ 'Want to play live? ',
+ (0, _preact.h)(
+ 'button',
+ null,
+ 'Pause at the end of this epoch'
+ )
+ );
+ }
+ }]);
+
+ return DashboardHeader;
+}(_preact.Component);
+
+var mapStateToProps = function mapStateToProps(state) {
+ return {
+ currentTask: state.system.currentTask,
+ site: state.system.site
+ };
+};
+
+var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
+ return {};
+};
+
+exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(DashboardHeader);
+
+/***/ }),
+
+/***/ "./app/client/dashboard/filelist.component.js":
+/*!****************************************************!*\
+ !*** ./app/client/dashboard/filelist.component.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
+
+var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
+
+var _util = __webpack_require__(/*! ../util */ "./app/client/util.js");
+
+var util = _interopRequireWildcard(_util);
+
+function _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; } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var FileList = function (_Component) {
+ _inherits(FileList, _Component);
+
+ function FileList(props) {
+ _classCallCheck(this, FileList);
+
+ return _possibleConstructorReturn(this, (FileList.__proto__ || Object.getPrototypeOf(FileList)).call(this));
+ }
+
+ _createClass(FileList, [{
+ key: 'render',
+ value: function render() {
+ var files = this.props.files;
+
+ var time = 0;
+ var fileList = files.map(function (file) {
+ var eta = time + file.epochs * 180 / 60 + " min.";
+ time += file.epochs * 180 / 60;
+ var dataset_type = void 0,
+ dataset_name = void 0;
+ if (file.dataset.indexOf('/') !== -1) {
+ var _file$dataset$split = file.dataset.split('/');
+
+ var _file$dataset$split2 = _slicedToArray(_file$dataset$split, 2);
+
+ dataset_type = _file$dataset$split2[0];
+ dataset_name = _file$dataset$split2[1];
+ } else {
+ dataset_name = file.dataset;
+ }
+ return (0, _preact.h)(
+ 'div',
+ { 'class': 'row' },
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'activity' },
+ file.activity,
+ ' ',
+ file.library,
+ ' ',
+ dataset_type
+ ),
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'dataset' },
+ dataset_name
+ ),
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'epochs' },
+ file.epochs,
+ ' ep.'
+ ),
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'eta' },
+ eta
+ )
+ );
+ });
+ return (0, _preact.h)(
+ 'div',
+ { 'class': 'filelist rows' },
+ fileList
+ );
+ }
+ }]);
+
+ return FileList;
+}(_preact.Component);
+
+var mapStateToProps = function mapStateToProps(state) {
+ return {};
+};
+
+var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
+ return {
+ // actions: bindActionCreators(liveActions, dispatch)
+ };
+};
+
+exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(FileList);
+
+/***/ }),
+
+/***/ "./app/client/dashboard/gallery.component.js":
+/*!***************************************************!*\
+ !*** ./app/client/dashboard/gallery.component.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
+
+var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var Gallery = function (_Component) {
+ _inherits(Gallery, _Component);
+
+ function Gallery(props) {
+ _classCallCheck(this, Gallery);
+
+ return _possibleConstructorReturn(this, (Gallery.__proto__ || Object.getPrototypeOf(Gallery)).call(this));
+ }
+
+ _createClass(Gallery, [{
+ key: 'render',
+ value: function render() {
+ var _props = this.props,
+ title = _props.title,
+ images = _props.images;
+
+ images.push(images[0]);
+ var imageList = images.map(function (image) {
+ return (0, _preact.h)(
+ 'div',
+ null,
+ (0, _preact.h)('img', { src: image.url })
+ );
+ });
+ return (0, _preact.h)(
+ 'div',
+ { 'class': 'gallery' },
+ imageList
+ );
+ }
+ }]);
+
+ return Gallery;
+}(_preact.Component);
+
+var mapStateToProps = function mapStateToProps(state) {
+ return {};
+};
+
+var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
+ return {
+ // actions: bindActionCreators(liveActions, dispatch)
+ };
+};
+
+exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Gallery);
+
+/***/ }),
+
+/***/ "./app/client/dashboard/tasklist.component.js":
+/*!****************************************************!*\
+ !*** ./app/client/dashboard/tasklist.component.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
+
+var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var TaskList = function (_Component) {
+ _inherits(TaskList, _Component);
+
+ function TaskList(props) {
+ _classCallCheck(this, TaskList);
+
+ return _possibleConstructorReturn(this, (TaskList.__proto__ || Object.getPrototypeOf(TaskList)).call(this));
+ }
+
+ _createClass(TaskList, [{
+ key: 'render',
+ value: function render() {
+ var _props = this.props,
+ title = _props.title,
+ tasks = _props.tasks;
+
+ var time = 0;
+ var taskList = tasks.map(function (task) {
+ var eta = time + task.epochs * 180 / 60 + " min.";
+ time += task.epochs * 180 / 60;
+ var dataset_type = void 0,
+ dataset_name = void 0;
+ if (task.dataset.indexOf('/') !== -1) {
+ var _task$dataset$split = task.dataset.split('/');
+
+ var _task$dataset$split2 = _slicedToArray(_task$dataset$split, 2);
+
+ dataset_type = _task$dataset$split2[0];
+ dataset_name = _task$dataset$split2[1];
+ } else {
+ dataset_name = task.dataset;
+ }
+ return (0, _preact.h)(
+ 'div',
+ { 'class': 'row' },
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'activity' },
+ task.activity,
+ ' ',
+ task.library,
+ ' ',
+ dataset_type
+ ),
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'dataset' },
+ dataset_name
+ ),
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'epochs' },
+ task.epochs,
+ ' ep.'
+ ),
+ (0, _preact.h)(
+ 'div',
+ { 'class': 'eta' },
+ eta
+ )
+ );
+ });
+ return (0, _preact.h)(
+ 'div',
+ { 'class': 'taskList rows' },
+ taskList
+ );
+ }
+ }]);
+
+ return TaskList;
+}(_preact.Component);
+
+var mapStateToProps = function mapStateToProps(state) {
+ return {};
+};
+
+var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
+ return {
+ // actions: bindActionCreators(liveActions, dispatch)
+ };
+};
+
+exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(TaskList);
+
+/***/ }),
+
+/***/ "./app/client/index.jsx":
+/*!******************************!*\
+ !*** ./app/client/index.jsx ***!
+ \******************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
+
+var _reactRouterDom = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/es/index.js");
+
+var _store = __webpack_require__(/*! ./store */ "./app/client/store.js");
+
+var _socket = __webpack_require__(/*! ./socket */ "./app/client/socket.js");
+
+var _socket2 = _interopRequireDefault(_socket);
+
+var _header = __webpack_require__(/*! ./common/header.component */ "./app/client/common/header.component.js");
+
+var _header2 = _interopRequireDefault(_header);
+
+var _dashboard = __webpack_require__(/*! ./dashboard/dashboard.component */ "./app/client/dashboard/dashboard.component.js");
+
+var _dashboard2 = _interopRequireDefault(_dashboard);
+
+var _pix2pix = __webpack_require__(/*! ./pix2pix */ "./app/client/pix2pix/index.js");
+
+var _pix2pix2 = _interopRequireDefault(_pix2pix);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var app = (0, _preact.h)(
+ _reactRedux.Provider,
+ { store: _store.store },
+ (0, _preact.h)(
+ _reactRouterDom.BrowserRouter,
+ null,
+ (0, _preact.h)(
+ 'div',
+ null,
+ (0, _preact.h)(_reactRouterDom.Route, { path: '/', component: _dashboard2.default }),
+ (0, _preact.h)(_reactRouterDom.Route, { path: '/live/', component: _pix2pix2.default }),
+ (0, _preact.h)(_reactRouterDom.Route, { path: '/dashboard/', component: _dashboard2.default }),
+ (0, _preact.h)(_header2.default, null)
+ )
+ )
+);
+// import client from './client'
+
+(0, _preact.render)(app, document.getElementById('container'));
+
+/***/ }),
+
+/***/ "./app/client/live/actions.js":
+/*!************************************!*\
+ !*** ./app/client/live/actions.js ***!
+ \************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.play = exports.pause = exports.seek = exports.load_epoch = exports.load_sequence = exports.list_sequences = exports.list_epochs = exports.list_checkpoints = exports.set_param = exports.get_params = undefined;
+
+var _socket = __webpack_require__(/*! ../socket */ "./app/client/socket.js");
+
+var socket = _interopRequireWildcard(_socket);
+
+var _types = __webpack_require__(/*! ../types */ "./app/client/types.js");
+
+var _types2 = _interopRequireDefault(_types);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _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; } }
+
+var get_params = exports.get_params = function get_params() {
+ socket.get_params();
+ return { type: _types2.default.player.get_params };
+};
+
+var set_param = exports.set_param = function set_param(key, value) {
+ console.log('set param', key, value);
+ socket.set_param(key, value);
+ return { type: _types2.default.player.set_param, key: key, value: value };
+};
+
+var list_checkpoints = exports.list_checkpoints = function list_checkpoints() {
+ socket.list_checkpoints();
+ return { type: _types2.default.player.loading_checkpoints };
+};
+
+var list_epochs = exports.list_epochs = function list_epochs(path) {
+ socket.list_epochs(path);
+ return { type: _types2.default.player.loading_epochs };
+};
+
+var list_sequences = exports.list_sequences = function list_sequences() {
+ socket.list_sequences();
+ return { type: _types2.default.player.loading_sequences };
+};
+
+var load_sequence = exports.load_sequence = function load_sequence(sequence) {
+ socket.load_sequence(sequence);
+ return { type: _types2.default.player.loading_sequence };
+};
+
+var load_epoch = exports.load_epoch = function load_epoch(checkpoint, epoch) {
+ socket.load_epoch(checkpoint, epoch);
+ return { type: _types2.default.player.loading_checkpoint };
+};
+
+var seek = exports.seek = function seek(frame) {
+ socket.seek(frame);
+ return { type: _types2.default.player.seeking };
+};
+
+var pause = exports.pause = function pause(frame) {
+ socket.pause(pause);
+ return { type: _types2.default.player.pausing };
+};
+
+var play = exports.play = function play(frame) {
+ socket.play();
+ return { type: _types2.default.player.playing };
+};
/***/ }),
@@ -1142,6 +1540,10 @@ var _whammy = __webpack_require__(/*! ./whammy */ "./app/client/live/whammy.js")
var _whammy2 = _interopRequireDefault(_whammy);
+var _types = __webpack_require__(/*! ../types */ "./app/client/types.js");
+
+var _types2 = _interopRequireDefault(_types);
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fps = 0,
@@ -1154,7 +1556,7 @@ function startRecording() {
videoWriter = new _whammy2.default.Video(10);
recording = true;
_store.store.dispatch({
- type: 'START_RECORDING'
+ type: _types2.default.player.start_recording
});
}
@@ -1162,12 +1564,12 @@ function stopRecording() {
if (!recording) return;
recording = false;
_store.store.dispatch({
- type: 'SAVING_VIDEO'
+ type: _types2.default.player.saving_video
});
videoWriter.compile(false, function (blob) {
- console.log(blob);
+ // console.log(blob)
_store.store.dispatch({
- type: 'SAVE_VIDEO',
+ type: _types2.default.player.save_video,
blob: blob
});
});
@@ -1182,23 +1584,25 @@ function onFrame(data) {
var url = URL.createObjectURL(blob);
var img = new Image();
img.onload = function () {
+ img.onload = null;
last_frame = data.meta;
URL.revokeObjectURL(url);
var canvas = document.querySelector('.player canvas');
+ if (!canvas) return console.error('no canvas for frame');
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
if (recording) {
console.log('record frame');
videoWriter.add(canvas);
_store.store.dispatch({
- type: 'ADD_RECORD_FRAME'
+ type: _types2.default.player.add_record_frame
});
}
if (saving) {
saving = false;
canvas.toBlob(function (blob) {
_store.store.dispatch({
- type: 'SAVE_FRAME',
+ type: _types2.default.player.save_frame,
blob: blob
});
});
@@ -1210,11 +1614,11 @@ function onFrame(data) {
setInterval(function () {
_store.store.dispatch({
- type: 'SET_FPS',
+ type: _types2.default.player.set_fps,
fps: fps
});
_store.store.dispatch({
- type: 'CURRENT_FRAME',
+ type: _types2.default.player.current_frame,
meta: last_frame
});
fps = 0;
@@ -1238,18 +1642,22 @@ Object.defineProperty(exports, "__esModule", {
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 _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
-
var _moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
var _moment2 = _interopRequireDefault(_moment);
+var _fileSaver = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/FileSaver.js");
+
+var _fileSaver2 = _interopRequireDefault(_fileSaver);
+
+var _types = __webpack_require__(/*! ../types */ "./app/client/types.js");
+
+var _types2 = _interopRequireDefault(_types);
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _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; }
-var FileSaver = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/FileSaver.js");
-
var liveInitialState = {
loading: false,
error: null,
@@ -1268,7 +1676,7 @@ var liveReducer = function liveReducer() {
var results = void 0;
switch (action.type) {
- case 'LOAD_PARAMS':
+ case _types2.default.player.load_params:
if (!action.opt || !Object.keys(action.opt).length) {
return state;
}
@@ -1278,18 +1686,18 @@ var liveReducer = function liveReducer() {
opt: action.opt
});
- case 'SET_PARAM':
+ case _types2.default.player.set_param:
return _extends({}, state, {
opt: _extends({}, state.opt, _defineProperty({}, action.key, action.value))
});
- case 'LIST_CHECKPOINTS':
+ case _types2.default.player.list_checkpoints:
return _extends({}, state, {
checkpoints: action.checkpoints,
epochs: []
});
- case 'LIST_EPOCHS':
+ case _types2.default.player.list_epochs:
return _extends({}, state, {
epochs: (action.epochs || []).map(function (a) {
return [a == 'latest' ? Infinity : a, a];
@@ -1300,46 +1708,46 @@ var liveReducer = function liveReducer() {
})
});
- case 'LIST_SEQUENCES':
+ case _types2.default.player.list_sequences:
return _extends({}, state, {
sequences: action.sequences
});
- case 'SET_FPS':
+ case _types2.default.player.set_fps:
return _extends({}, state, {
fps: action.fps
});
- case 'CURRENT_FRAME':
+ case _types2.default.player.current_frame:
return action.meta ? _extends({}, state, {
frame: action.meta
}) : state;
- case 'START_RECORDING':
+ case _types2.default.player.start_recording:
return _extends({}, state, {
opt: _extends({}, state.opt, {
recording: true
})
});
- case 'ADD_RECORD_FRAME':
+ case _types2.default.player.add_record_frame:
return _extends({}, state, {
opt: _extends({}, state.opt, {
recordFrames: (state.opt.recordFrames || 0) + 1
})
});
- case 'SAVE_FRAME':
- FileSaver.saveAs(action.blob, state.opt.checkpoint_name + "_" + state.opt.sequence + "_" + (0, _moment2.default)().format("YYYYMMDD_HHmm") + ".png");
+ case _types2.default.player.save_frame:
+ _fileSaver2.default.saveAs(action.blob, state.opt.checkpoint_name + "_" + state.opt.sequence + "_" + (0, _moment2.default)().format("YYYYMMDD_HHmm") + ".png");
return state;
- case 'SAVING_VIDEO':
+ case _types2.default.player.saving_video:
return _extends({}, state, {
opt: _extends({}, state.opt, {
savingVideo: true
})
});
- case 'SAVE_VIDEO':
- FileSaver.saveAs(action.blob, state.opt.checkpoint_name + "_" + state.opt.sequence + "_" + (0, _moment2.default)().format("YYYYMMDD_HHmm") + ".webm");
+ case _types2.default.player.save_video:
+ _fileSaver2.default.saveAs(action.blob, state.opt.checkpoint_name + "_" + state.opt.sequence + "_" + (0, _moment2.default)().format("YYYYMMDD_HHmm") + ".webm");
return _extends({}, state, {
opt: _extends({}, state.opt, {
recording: false,
@@ -1891,6 +2299,354 @@ module.exports = function () {
/***/ }),
+/***/ "./app/client/pix2pix/index.js":
+/*!*************************************!*\
+ !*** ./app/client/pix2pix/index.js ***!
+ \*************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
+
+var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js");
+
+var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
+
+var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
+
+var _player = __webpack_require__(/*! ../common/player.component */ "./app/client/common/player.component.js");
+
+var _player2 = _interopRequireDefault(_player);
+
+var _paramGroup = __webpack_require__(/*! ../common/paramGroup.component */ "./app/client/common/paramGroup.component.js");
+
+var _paramGroup2 = _interopRequireDefault(_paramGroup);
+
+var _slider = __webpack_require__(/*! ../common/slider.component */ "./app/client/common/slider.component.js");
+
+var _slider2 = _interopRequireDefault(_slider);
+
+var _select = __webpack_require__(/*! ../common/select.component */ "./app/client/common/select.component.js");
+
+var _select2 = _interopRequireDefault(_select);
+
+var _button = __webpack_require__(/*! ../common/button.component */ "./app/client/common/button.component.js");
+
+var _button2 = _interopRequireDefault(_button);
+
+var _player3 = __webpack_require__(/*! ../live/player */ "./app/client/live/player.js");
+
+var _actions = __webpack_require__(/*! ../live/actions */ "./app/client/live/actions.js");
+
+var liveActions = _interopRequireWildcard(_actions);
+
+function _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; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var LivePix2Pix = function (_Component) {
+ _inherits(LivePix2Pix, _Component);
+
+ function LivePix2Pix(props) {
+ _classCallCheck(this, LivePix2Pix);
+
+ var _this = _possibleConstructorReturn(this, (LivePix2Pix.__proto__ || Object.getPrototypeOf(LivePix2Pix)).call(this));
+
+ props.actions.get_params();
+ props.actions.list_checkpoints();
+ props.actions.list_sequences();
+ _this.changeCheckpoint = _this.changeCheckpoint.bind(_this);
+ _this.changeEpoch = _this.changeEpoch.bind(_this);
+ _this.changeSequence = _this.changeSequence.bind(_this);
+ _this.seek = _this.seek.bind(_this);
+ _this.togglePlaying = _this.togglePlaying.bind(_this);
+ _this.toggleRecording = _this.toggleRecording.bind(_this);
+ return _this;
+ }
+
+ _createClass(LivePix2Pix, [{
+ key: 'componentWillUpdate',
+ value: function componentWillUpdate(nextProps) {
+ if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) {
+ this.props.actions.list_epochs(nextProps.opt.checkpoint_name);
+ }
+ }
+ }, {
+ key: 'changeCheckpoint',
+ value: function changeCheckpoint(checkpoint_name) {
+ this.props.actions.load_epoch(checkpoint_name, 'latest');
+ }
+ }, {
+ key: 'changeEpoch',
+ value: function changeEpoch(epoch_name) {
+ this.props.actions.load_epoch(this.props.opt.checkpoint_name, epoch_name);
+ }
+ }, {
+ key: 'changeSequence',
+ value: function changeSequence(sequence) {
+ console.log('got sequence', sequence);
+ this.props.actions.load_sequence(sequence);
+ }
+ }, {
+ key: 'seek',
+ value: function seek(percentage) {
+ var frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1);
+ this.props.actions.seek(frame);
+ }
+ }, {
+ key: 'togglePlaying',
+ value: function togglePlaying() {
+ if (this.props.opt.processing) {
+ this.props.actions.pause();
+ } else {
+ this.props.actions.play();
+ }
+ }
+ }, {
+ key: 'toggleRecording',
+ value: function toggleRecording() {
+ if (this.props.opt.recording) {
+ (0, _player3.stopRecording)();
+ this.props.actions.pause();
+ } else {
+ (0, _player3.startRecording)();
+ }
+ }
+ }, {
+ key: 'render',
+ value: function render() {
+ return (0, _preact.h)(
+ 'div',
+ { className: 'app' },
+ (0, _preact.h)(_player2.default, { width: 424, height: 256 }),
+ (0, _preact.h)(
+ 'div',
+ { className: 'params' },
+ (0, _preact.h)(
+ 'div',
+ { className: 'column' },
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Playback',
+ noToggle: true
+ },
+ (0, _preact.h)(_select2.default, {
+ name: 'send_image',
+ title: 'view mode',
+ options: ['a', 'b', 'sequence', 'recursive']
+ }),
+ (0, _preact.h)(_select2.default, {
+ name: 'sequence_name',
+ title: 'sequence',
+ options: this.props.sequences,
+ onChange: this.changeSequence
+ }),
+ (0, _preact.h)(_select2.default, {
+ name: 'checkpoint_name',
+ title: 'checkpoint',
+ options: this.props.checkpoints,
+ onChange: this.changeCheckpoint
+ }),
+ (0, _preact.h)(_select2.default, {
+ name: 'epoch',
+ title: 'epoch',
+ options: this.props.epochs,
+ onChange: this.changeEpoch
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'position',
+ min: 0.0, max: 1.0, type: 'float',
+ value: (this.props.frame.sequence_i || 0) / (this.props.frame.sequence_len || 1),
+ onChange: this.seek
+ }),
+ (0, _preact.h)(
+ _button2.default,
+ {
+ title: 'Processing: ' + (this.props.opt.processing ? 'yes' : 'no'),
+ onClick: this.togglePlaying
+ },
+ this.props.opt.processing ? 'Pause' : 'Restart'
+ ),
+ (0, _preact.h)(
+ _button2.default,
+ {
+ title: this.props.opt.savingVideo ? 'Saving video...' : this.props.opt.recording ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames) + ')' : 'Record video',
+ onClick: this.toggleRecording
+ },
+ this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record'
+ ),
+ (0, _preact.h)(
+ _button2.default,
+ {
+ title: 'Save frame',
+ onClick: _player3.saveFrame
+ },
+ 'Save'
+ )
+ )
+ ),
+ (0, _preact.h)(
+ 'div',
+ { className: 'column' },
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Transition',
+ name: 'transition'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'transition_period',
+ min: 10, max: 5000, type: 'int'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'transition_min',
+ min: 0.001, max: 0.2, type: 'float'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'transition_max',
+ min: 0.1, max: 1.0, type: 'float'
+ })
+ ),
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Recursion',
+ name: 'recursive'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'recursive_frac',
+ min: 0.0, max: 0.5, type: 'float'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'recurse_roll',
+ min: -64, max: 64, type: 'int'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'recurse_roll_axis',
+ min: 0, max: 1, type: 'int'
+ })
+ ),
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Sequence',
+ name: 'sequence'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'sequence_frac',
+ min: 0.0, max: 0.5, type: 'float'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'process_frac',
+ min: 0, max: 1, type: 'float'
+ })
+ )
+ ),
+ (0, _preact.h)(
+ 'div',
+ { className: 'column' },
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Clahe',
+ name: 'clahe'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'clip_limit',
+ min: 1.0, max: 4.0, type: 'float'
+ })
+ ),
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Posterize',
+ name: 'posterize'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'spatial_window',
+ min: 2, max: 128, type: 'int'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'color_window',
+ min: 2, max: 128, type: 'int'
+ })
+ ),
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Blur',
+ name: 'blur'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'blur_radius',
+ min: 3, max: 7, type: 'odd'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'blur_sigma',
+ min: 0, max: 2, type: 'float'
+ })
+ ),
+ (0, _preact.h)(
+ _paramGroup2.default,
+ {
+ title: 'Canny Edge Detection',
+ name: 'canny'
+ },
+ (0, _preact.h)(_slider2.default, {
+ name: 'canny_lo',
+ min: 10, max: 200, type: 'int'
+ }),
+ (0, _preact.h)(_slider2.default, {
+ name: 'canny_hi',
+ min: 10, max: 200, type: 'int'
+ })
+ )
+ )
+ )
+ );
+ }
+ }]);
+
+ return LivePix2Pix;
+}(_preact.Component);
+
+function timeInSeconds(n) {
+ return (n / 10).toFixed(1) + ' s.';
+}
+var mapStateToProps = function mapStateToProps(state) {
+ return {
+ opt: state.live.opt,
+ frame: state.live.frame,
+ checkpoints: state.live.checkpoints,
+ epochs: state.live.epochs,
+ sequences: state.live.sequences
+ };
+};
+
+var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {
+ return {
+ actions: (0, _redux.bindActionCreators)(liveActions, dispatch)
+ };
+};
+
+exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(LivePix2Pix);
+
+/***/ }),
+
/***/ "./app/client/socket.js":
/*!******************************!*\
!*** ./app/client/socket.js ***!
@@ -1943,25 +2699,25 @@ socket.on('res', function (data) {
break;
case 'get_params':
_store.store.dispatch({
- type: 'LOAD_PARAMS',
+ type: types.socket.load_params,
opt: data.res
});
break;
case 'list_checkpoints':
_store.store.dispatch({
- type: 'LIST_CHECKPOINTS',
+ type: types.socket.list_checkpoints,
checkpoints: data.res
});
break;
case 'list_sequences':
_store.store.dispatch({
- type: 'LIST_SEQUENCES',
+ type: types.socket.list_sequences,
sequences: data.res
});
break;
case 'list_epochs':
_store.store.dispatch({
- type: 'LIST_EPOCHS',
+ type: types.socket.list_epochs,
epochs: data.res
});
break;
@@ -1975,6 +2731,7 @@ socket.on('frame', player.onFrame);
socket.on('status', function (data) {
console.log('got status', data.key, data.value);
+ _store.store.dispatch({ type: types.socket.status });
switch (data.key) {
case 'processing':
_store.store.dispatch(_extends({
@@ -2076,6 +2833,14 @@ var _createBrowserHistory = __webpack_require__(/*! history/createBrowserHistory
var _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);
+var _system = __webpack_require__(/*! ./system/system.reducer */ "./app/client/system/system.reducer.js");
+
+var _system2 = _interopRequireDefault(_system);
+
+var _dashboard = __webpack_require__(/*! ./dashboard/dashboard.reducer */ "./app/client/dashboard/dashboard.reducer.js");
+
+var _dashboard2 = _interopRequireDefault(_dashboard);
+
var _reducer = __webpack_require__(/*! ./live/reducer */ "./app/client/live/reducer.js");
var _reducer2 = _interopRequireDefault(_reducer);
@@ -2083,6 +2848,8 @@ var _reducer2 = _interopRequireDefault(_reducer);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var appReducer = (0, _redux.combineReducers)({
+ system: _system2.default,
+ dashboard: _dashboard2.default,
live: _reducer2.default,
router: _reactRouterRedux.routerReducer
});
@@ -2095,6 +2862,192 @@ _reduxThunk2.default, (0, _reactRouterRedux.routerMiddleware)(history))));
/***/ }),
+/***/ "./app/client/system/system.reducer.js":
+/*!*********************************************!*\
+ !*** ./app/client/system/system.reducer.js ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
+
+var _moment2 = _interopRequireDefault(_moment);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var FileSaver = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/FileSaver.js");
+
+var systemInitialState = {
+ loading: false,
+ error: null,
+
+ site: {
+ name: 'Lens Cortex'
+ },
+ currentTask: {
+ id: 1072,
+ activity: 'train',
+ library: 'pix2pix',
+ dataset: 'video/woods_final',
+ epoch: 87,
+ epochs: 100
+ },
+ images: [{
+ url: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4282/woodscaled_4_true_20180521_2125.png'
+ }, {
+ url: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4282/woodscaled_4_true_20180521_2146%20(1).png'
+ }, {
+ url: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4282/woodscaled_4_true_20180521_2149.png'
+ }, {
+ url: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4282/woodscaled_4_true_20180521_2150.png'
+ }],
+ tasks: [{
+ id: 1073,
+ activity: 'train',
+ library: 'pix2pix',
+ dataset: 'video/woods_green',
+ epochs: 100
+ }, {
+ id: 1073,
+ activity: 'train',
+ library: 'samplernn',
+ dataset: 'bobby_brown_-_every_little_step',
+ epochs: 6
+ }, {
+ id: 1073,
+ activity: 'train',
+ library: 'pix2pix',
+ checkpoint: 'lyra_voice_layers',
+ dataset: 'audio/lyra_improv',
+ epochs: 30
+ }, {
+ id: 1073,
+ activity: 'train',
+ library: 'pix2pix',
+ checkpoint: 'lyra_melody_lines',
+ dataset: 'audio/lyra_improv',
+ epochs: 30
+ }, {
+ id: 1073,
+ activity: 'train',
+ library: 'pix2pix',
+ checkpoint: 'ensemble_chords',
+ dataset: 'audio/lyra_improv',
+ epochs: 30
+ }, {
+ id: 1073,
+ activity: 'generate',
+ library: 'samplernn',
+ dataset: 'coccoglass3',
+ opt: { time: 5, count: 6 }
+ }, {
+ id: 1073,
+ activity: 'train',
+ library: 'pix2pix',
+ dataset: 'video/woods_green',
+ epochs: 100
+ }, {
+ id: 1073,
+ activity: 'train',
+ library: 'samplernn',
+ dataset: 'bobby_brown_-_every_little_step',
+ epochs: 6
+ }],
+ files: [{ id: 2, library: 'samplernn', checkpoint: 'jwcglassbeat', dataset: 'jwcglassbeat', epoch: 18, duration: 30, batch_size: 5, filename: 'jwcglassbeat-ep18.mp3', size: 3 * 1024 * 1024, date: Date.now(), opt: "{}" }]
+};
+
+var systemReducer = function systemReducer() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : systemInitialState;
+ var action = arguments[1];
+
+ switch (action.type) {
+ default:
+ return state;
+ }
+};
+
+exports.default = systemReducer;
+
+/***/ }),
+
+/***/ "./app/client/types.js":
+/*!*****************************!*\
+ !*** ./app/client/types.js ***!
+ \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = {
+ socket: {
+ load_params: 'LOAD_PARAMS',
+ list_sequences: 'LIST_SEQUENCES',
+ list_epochs: 'LIST_EPOCHS'
+ },
+ player: {
+ get_params: 'GET_PARAMS',
+ set_param: 'SET_PARAM',
+
+ loading_checkpoints: 'LOADING_CHECKPOINTS',
+ list_checkpoints: 'LIST_CHECKPOINTS',
+
+ loading_sequences: 'LOADING_SEQUENCES',
+ load_sequence: 'LOAD_SEQUENCE',
+
+ loading_epochs: 'LOADING_EPOCHS',
+ load_epoch: 'LOAD_EPOCH',
+
+ set_fps: 'SET_FPS',
+ seeking: 'SEEKING',
+ pausing: 'PAUSING',
+ playing: 'PLAYING',
+ current_frame: 'CURRENT_FRAME',
+ start_recording: 'START_RECORDING',
+ add_record_frame: 'ADD_RECORD_FRAME',
+ save_frame: 'SAVE_FRAME',
+ saving_video: 'SAVING_VIDEO',
+ save_video: 'SAVE_VIDEO'
+ }
+};
+
+/***/ }),
+
+/***/ "./app/client/util.js":
+/*!****************************!*\
+ !*** ./app/client/util.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.timeInSeconds = timeInSeconds;
+exports.gerund = gerund;
+function timeInSeconds(n) {
+ return (n / 10).toFixed(1) + ' s.';
+}
+function gerund(s) {
+ return s.replace(/e?$/, 'ing');
+}
+
+/***/ }),
+
/***/ "./node_modules/fbjs/lib/emptyFunction.js":
/*!************************************************!*\
!*** ./node_modules/fbjs/lib/emptyFunction.js ***!