From 960a7495f502d3f6a604a14828dd68bc61bed92e Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sat, 22 Sep 2018 16:32:46 +0200 Subject: preload sequence, dont overload fileviewer --- .../modules/pix2pixhd/views/pix2pixhd.train.js | 5 +- .../modules/pix2pixhd/views/sequence.editor.js | 162 ++++++++++++++------- 2 files changed, 111 insertions(+), 56 deletions(-) (limited to 'app/client/modules') diff --git a/app/client/modules/pix2pixhd/views/pix2pixhd.train.js b/app/client/modules/pix2pixhd/views/pix2pixhd.train.js index ae46fdb..6aade36 100644 --- a/app/client/modules/pix2pixhd/views/pix2pixhd.train.js +++ b/app/client/modules/pix2pixhd/views/pix2pixhd.train.js @@ -37,7 +37,8 @@ class Pix2PixHDTrain extends Component { } componentDidMount(){ const id = this.props.match.params.id || localStorage.getItem('pix2pixhd.last_id') - console.log('load dataset:', id) + const dataset = localStorage.getItem('pix2pixhd.last_dataset') + console.log('load dataset:', id, dataset) const { match, pix2pixhd, actions } = this.props if (id === 'new') return if (id) { @@ -48,7 +49,6 @@ class Pix2PixHDTrain extends Component { } else { this.props.history.push('/pix2pixhd/new/') } - const dataset = localStorage.getItem('pix2pixhd.last_dataset') if (dataset) { this.setState({ checkpoint_name: dataset }) } @@ -126,7 +126,6 @@ class Pix2PixHDTrain extends Component { diff --git a/app/client/modules/pix2pixhd/views/sequence.editor.js b/app/client/modules/pix2pixhd/views/sequence.editor.js index a749df9..6a5da39 100644 --- a/app/client/modules/pix2pixhd/views/sequence.editor.js +++ b/app/client/modules/pix2pixhd/views/sequence.editor.js @@ -7,77 +7,133 @@ import { Loading, FileList, FileViewer } from '../../../common' import actions from '../../../actions' +const initialState = { + dir: '/', + frameA: null, + frameB: null, + selection: null, + loading: true +} + +/* + when the sequence editor loads, + reset the selection + reset the two frames + set the two frames to the beginning and end of the video + when mousing over the video + ideally you would see a tiny thumbnail preview of the frame :) + - click to start a selection, drag over, mouseup to end the selection + this should update the start/end frame + ... + so there are two things you could do with this + 1) create an entirely new dataset + 2) add frames to an existing dataset + ... + method 1) + - requires minimal setup, just a server script which.. + - creates the new sequence folder + - symlinks the frames + - runs build_dataset + - create appropriate file object, using parent dataset's folder_id + - enqueue initial training + ---> we can then train on basic subsets, with more control, like we do already... + - tell parent dataset thing the new sequence name + ... + method 2) + - requires sequence editor to be aware of its own dataset + - requires sequence editor to know whether a sequence is original or not +*/ + class SequenceEditor extends Component { - state = { - dir: '/', - files: [], - loading: true + state = { ...initialState } + + constructor() { + super() + this.handleMouseDown = this.handleMouseDown.bind(this) + this.handleMouseMove = this.handleMouseMove.bind(this) + this.handleMouseEnter = this.handleMouseEnter.bind(this) + this.handleMouseLeave = this.handleMouseLeave.bind(this) + this.handleMouseUp = this.handleMouseUp.bind(this) } + componentDidMount() { - this.fetch(this.props.dataset) + const { checkpoint } = this.props + window.addEventListener('mousemove', this.handleMouseMove) + window.addEventListener('mouseup', this.handleMouseUp) + if (checkpoint && checkpoint.sequence) { + console.log(checkpoint) + const frameA = checkpoint.sequence[0] + const frameB = checkpoint.sequence[checkpoint.sequence.length-1] + this.setState({ + ...initialState, + frameA, + frameB, + }) + } } + componentDidUpdate(prevProps) { - if (this.props.dataset !== prevProps.dataset) { - this.fetch(this.props.dataset) + const { checkpoint } = this.props + if (checkpoint !== prevProps.checkpoint) { + console.log(checkpoint) + const frameA = checkpoint.sequence[0] + const frameB = checkpoint.sequence[checkpoint.sequence.length-1] + this.setState({ + ...initialState, + frameA, + frameB, + }) } } + + componentWillUnmount(){ + window.removeEventListener('mouseup', this.handleMouseUp) + window.removeEventListener('mousemove', this.handleMouseMove) + } + + handleMouseDown(e) { + this.setState({ dragging: true }) + } + handleMouseMove(e) { + } + handleMouseEnter(e) { + } + handleMouseLeave(e) { + } + handleMouseUp(e) { + this.setState({ dragging: false }) + } + handlePick(file) { console.log(file) - if (file.dir) { - this.fetch([this.state.dir, file.name].join('/').replace('//','/')) - } else { - this.fetchFile([this.state.dir, file.name].join('/').replace('//','/')) - } - } - fetch(dir) { - console.log('fetch', dir) - const { name: module } = this.props.module.name - this.setState({ dir, file: null, loading: true }) - actions.socket.list_directory({ module, dir }).then(files => { - console.log(files) - this.setState({ dir, files, loading: false }) - }) + // this.setState({ dir, file: null, loading: true }) } + render() { - const { app } = this.props + const { app, checkpoint } = this.props const { - loading, dir, files, - loadingFile, file, + loading, + selection, + frameA, frameB, } = this.state - console.log(this.props, this.state) + // console.log(this.props, this.state) + const width = 200 + const path = "sequences/" + checkpoint.name return (
-
-
+
+ {selection &&
}
+ +
) - // return ( - //
- //

{dir}{dir[dir.length-1] !== '/' && '/'}

- // {app.tool}
- // {loading && } - // { - // e.preventDefault() - // e.stopPropagation() - // console.log('picked a result', file) - // this.handlePick(file) - // }} - // onClickParent={e => { - // console.log('navigate up') - // this.fetch(this.state.dir.split('/').slice(0, -1).join('/') || '/') - // }} - // /> - // {loadingFile && } - // {file && } - //
- // ) } } -- cgit v1.2.3-70-g09d2