aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/Timeline.tsx
blob: 1b6629a5597f1eac8bc3e9176255736b7c10efea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import * as React from "react";
import * as ReactDOM from "react-dom";
import { observer } from "mobx-react";
import { observable, reaction, action, IReactionDisposer } from "mobx";
import "./Timeline.scss";
import { KeyStore } from "../../../fields/KeyStore";
import { Document } from "../../../fields/Document";
import { KeyFrame } from "./KeyFrame";
<<<<<<< HEAD
import { CollectionViewProps } from "../collections/CollectionBaseView";
import { CollectionSubView } from "../collections/CollectionSubView"; 
import { DocumentViewProps } from "./DocumentView";

=======
import { Opt } from '../../../fields/Field';
>>>>>>> 6304e03f953b2cc66dcc1a0900855376ff739015

@observer
export class Timeline extends React.Component<DocumentViewProps> {
    @observable private _inner = React.createRef<HTMLDivElement>();
    @observable private _isRecording: Boolean = false;
    @observable private _currentBar: any = null;
    @observable private _newBar: any = null;
    private _reactionDisposer: Opt<IReactionDisposer>;

    @action
    onRecord = (e: React.MouseEvent) => {
        this._isRecording = true;
    }

    @action
    onStop = (e: React.MouseEvent) => {
        this._isRecording = false;
<<<<<<< HEAD
        if (this._inner.current) {
            
=======
        if (this._inner.current) { //if you comment this section out it works as before...
            this._newBar = document.createElement("div");
            this._newBar.style.height = "100%";
            this._newBar.style.width = "5px";
            this._newBar.style.backgroundColor = "yellow";
            this._newBar.style.transform = this._currentBar.style.transform;
            this._inner.current.appendChild(this._newBar);
>>>>>>> 6304e03f953b2cc66dcc1a0900855376ff739015
        }
    }

    @action
    onInnerPointerDown = (e: React.PointerEvent) => {
        if (this._isRecording) {
            if (this._inner.current) {
                let mouse = e.nativeEvent;
                this._currentBar.style.transform = `translate(${mouse.offsetX}px)`;
            }
        }
    }

    createMark = (width: number) => {

    }

    private _keyFrames: KeyFrame[] = [];

    createBar = (width: number) => {
        if (this._inner.current) {
            this._currentBar = document.createElement("div");
            this._currentBar.style.height = "100%";
            this._currentBar.style.width = `${width}px`;
            this._currentBar.style.left = "mouse.offsetX";
            this._currentBar.style.backgroundColor = "green";
            this._currentBar.style.transform = `translate(${0}px)`;
            this._inner.current.appendChild(this._currentBar);
        }

    }

    componentDidMount() {
        this.createBar(5);
<<<<<<< HEAD
        let doc: Document = this.props.Document;
        console.log(doc.Get(KeyStore.BackgroundColor)); 
        let keyFrame = new KeyFrame(); 
        this._keyFrames.push(keyFrame); 
        let keys = [KeyStore.X, KeyStore.Y];
        reaction(() => {       
=======
        let doc: Document;
        let keyFrame = new KeyFrame();
        this._keyFrames.push(keyFrame);
        let keys = [KeyStore.X, KeyStore.Y];
        this._reactionDisposer = reaction(() => {
>>>>>>> 6304e03f953b2cc66dcc1a0900855376ff739015
            return keys.map(key => doc.GetNumber(key, 0));
        }, data => {
            keys.forEach((key, index) => {
                keyFrame.document().SetNumber(key, data[index]);
            });
        });
<<<<<<< HEAD

        console.log(keyFrame.document +  "Document"); 
=======
    }

    componentWillUnmount() {
        if (this._reactionDisposer) {
            this._reactionDisposer();
            this._reactionDisposer = undefined;
        }
>>>>>>> 6304e03f953b2cc66dcc1a0900855376ff739015
    }

    render() {
        return (
            <div>
                <div className="timeline-container">
                    <div className="timeline">
                        <div className="inner" ref={this._inner} onPointerDown={this.onInnerPointerDown}>
                        </div>
                    </div>
                    <button onClick={this.onRecord}>Record</button>
                    <button onClick={this.onStop}>Stop</button>
                    <input placeholder="Time"></input>
                </div>
            </div>
        );
    }
}