diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-05-26 21:33:26 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-05-26 21:33:26 +0200 |
| commit | be3b2bd56550b71a2ffb7eb1604c1b8c1d2dd4a2 (patch) | |
| tree | f8b77bcfd10187328b3fadc0de3e1eb6dfa08f8d /app/client/live/live.reducer.js | |
| parent | 3d836c372d7eff1e2b507888f1ff652a30187c54 (diff) | |
refactor some task stuff
Diffstat (limited to 'app/client/live/live.reducer.js')
| -rw-r--r-- | app/client/live/live.reducer.js | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/app/client/live/live.reducer.js b/app/client/live/live.reducer.js new file mode 100644 index 0000000..60bcb41 --- /dev/null +++ b/app/client/live/live.reducer.js @@ -0,0 +1,129 @@ +import moment from 'moment' +import FileSaver from 'file-saver' +import types from '../types' + +const liveInitialState = { + loading: false, + error: null, + opt: {}, + checkpoints: [], + epochs: ['latest'], + sequences: [], + fps: 0, + frame: { i: 0, sequence_i: 0, sequence_len: '1' } +} + +const liveReducer = (state = liveInitialState, action) => { + let results; + + switch(action.type) { + case types.player.load_params: + if (! action.opt || ! Object.keys(action.opt).length) { + return state + } + return { + ...state, + loading: false, + error: null, + opt: action.opt, + } + + case types.player.set_param: + return { + ...state, + opt: { + ...state.opt, + [action.key]: action.value, + } + } + + case types.player.list_checkpoints: + return { + ...state, + checkpoints: action.checkpoints, + epochs: [], + } + + case types.player.list_epochs: + return { + ...state, + epochs: (action.epochs || []).map(a => [ a == 'latest' ? Infinity : a, a ]) + .sort((a,b) => a[0] - b[0]) + .map(a => a[1]) + } + + case types.player.list_sequences: + return { + ...state, + sequences: action.sequences, + } + + case types.player.set_fps: + return { + ...state, + fps: action.fps, + } + + case types.player.current_frame: + return action.meta ? { + ...state, + frame: action.meta + } : state + + case types.player.start_recording: + return { + ...state, + opt: { + ...state.opt, + recording: true, + } + } + case types.player.add_record_frame: + return { + ...state, + opt: { + ...state.opt, + recordFrames: (state.opt.recordFrames || 0) + 1, + } + } + + case types.player.save_frame: + FileSaver.saveAs( + action.blob, + state.opt.checkpoint_name + "_" + + state.opt.sequence + "_" + + moment().format("YYYYMMDD_HHmm") + ".png" + ) + return state + + case types.player.saving_video: + return { + ...state, + opt: { + ...state.opt, + savingVideo: true, + } + } + case types.player.save_video: + FileSaver.saveAs( + action.blob, + state.opt.checkpoint_name + "_" + + state.opt.sequence + "_" + + moment().format("YYYYMMDD_HHmm") + ".webm" + ) + return { + ...state, + opt: { + ...state.opt, + recording: false, + savingVideo: false, + recordFrames: 0, + } + } + + default: + return state + } +} + +export default liveReducer |
