From bec89018d0ee73a8abaa5e01f2262bd95bc687f7 Mon Sep 17 00:00:00 2001 From: bob Date: Thu, 17 Jan 2019 16:56:03 -0500 Subject: added collectionfreeformview --- .../freeformcanvas/CollectionFreeFormView.scss | 15 ++++ .../freeformcanvas/CollectionFreeFormView.tsx | 83 ++++++++++++++++++++++ src/views/freeformcanvas/FreeFormCanvas.tsx | 23 ++++-- src/views/freeformcanvas/NodeContainer.tsx | 28 -------- 4 files changed, 115 insertions(+), 34 deletions(-) create mode 100644 src/views/freeformcanvas/CollectionFreeFormView.scss create mode 100644 src/views/freeformcanvas/CollectionFreeFormView.tsx delete mode 100644 src/views/freeformcanvas/NodeContainer.tsx (limited to 'src/views/freeformcanvas') diff --git a/src/views/freeformcanvas/CollectionFreeFormView.scss b/src/views/freeformcanvas/CollectionFreeFormView.scss new file mode 100644 index 000000000..cb4805eb3 --- /dev/null +++ b/src/views/freeformcanvas/CollectionFreeFormView.scss @@ -0,0 +1,15 @@ +.collectionfreeformview-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + + .collectionfreeformview { + position: absolute; + top: 0; + left: 0; + } +} + diff --git a/src/views/freeformcanvas/CollectionFreeFormView.tsx b/src/views/freeformcanvas/CollectionFreeFormView.tsx new file mode 100644 index 000000000..7c523e70d --- /dev/null +++ b/src/views/freeformcanvas/CollectionFreeFormView.tsx @@ -0,0 +1,83 @@ +import { observer } from "mobx-react"; +import { Key, KeyStore } from "../../fields/Key"; +import "./FreeFormCanvas.scss"; +import React = require("react"); +import { action } from "mobx"; +import { Document } from "../../fields/Document"; +import {DocumentViewModel} from "../../viewmodels/DocumentViewModel"; +import {DocumentView} from "../nodes/DocumentView"; +import {ListField} from "../../fields/ListField"; +import {NumberField} from "../../fields/NumberField"; + +interface IProps { + fieldKey:Key; + doc:Document; +} + +@observer +export class CollectionFreeFormView extends React.Component { + + private _isPointerDown: boolean = false; + + constructor(props:IProps) { + super(props); + } + + @action + onPointerDown = (e: React.PointerEvent): void => { + e.stopPropagation(); + this._isPointerDown = true; + document.removeEventListener("pointermove", this.onPointerMove); + document.addEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + document.addEventListener("pointerup", this.onPointerUp); + } + + @action + onPointerUp = (e: PointerEvent): void => { + e.stopPropagation(); + this._isPointerDown = false; + document.removeEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + } + + @action + onPointerMove = (e: PointerEvent): void => { + e.preventDefault(); + e.stopPropagation(); + if (!this._isPointerDown) { + return; + } + const {doc} = this.props; + let x = doc.GetFieldValue(KeyStore.PanX, NumberField, Number(0)); + let y = doc.GetFieldValue(KeyStore.PanY, NumberField, Number(0)); + doc.SetFieldValue(KeyStore.PanX, x+e.movementX, NumberField); + doc.SetFieldValue(KeyStore.PanY, y+e.movementY, NumberField); + } + + @action + onPointerWheel = (e: React.WheelEvent): void => { + e.stopPropagation(); + + let scaleAmount = 1 - (e.deltaY / 1000); + //this.props.store.Scale *= scaleAmount; + } + + render() { + const {fieldKey, doc} = this.props; + const value: Document[] = doc.GetFieldValue(fieldKey, ListField, []); + const panx: number = doc.GetFieldValue(KeyStore.PanX, NumberField, Number(0)); + const pany: number = doc.GetFieldValue(KeyStore.PanY, NumberField, Number(0)); + return ( +
+
+
+ {value.map(doc => { + return (); + })} +
+
+
+ ); + } +} \ No newline at end of file diff --git a/src/views/freeformcanvas/FreeFormCanvas.tsx b/src/views/freeformcanvas/FreeFormCanvas.tsx index 344eb2bd8..cee093fcb 100644 --- a/src/views/freeformcanvas/FreeFormCanvas.tsx +++ b/src/views/freeformcanvas/FreeFormCanvas.tsx @@ -1,15 +1,18 @@ import { observer } from "mobx-react"; +import { Key } from "../../fields/Key"; import { NodeCollectionStore } from "../../stores/NodeCollectionStore"; import "./FreeFormCanvas.scss"; -import { NodeContainer } from "./NodeContainer"; import React = require("react"); -import { KeyStore } from "../../fields/Key"; -import { NumberField } from "../../fields/NumberField"; -import { TextField } from "../../fields/TextField"; import { action } from "mobx"; +import { Document } from "../../fields/Document"; +import {DocumentViewModel} from "../../viewmodels/DocumentViewModel"; +import {DocumentView} from "../nodes/DocumentView"; +import {TextField} from "../../fields/TextField"; +import {ListField} from "../../fields/ListField"; +import {Field} from "../../fields/Field"; interface IProps { - store: NodeCollectionStore + store: NodeCollectionStore; } @observer @@ -17,6 +20,10 @@ export class FreeFormCanvas extends React.Component { private _isPointerDown: boolean = false; + constructor(props:IProps) { + super(props); + } + @action onPointerDown = (e: React.PointerEvent): void => { e.stopPropagation(); @@ -63,7 +70,11 @@ export class FreeFormCanvas extends React.Component { return (
- +
+ {this.props.store.Docs.map(doc => { + return (); + })} +
); diff --git a/src/views/freeformcanvas/NodeContainer.tsx b/src/views/freeformcanvas/NodeContainer.tsx deleted file mode 100644 index 6c3cb2af2..000000000 --- a/src/views/freeformcanvas/NodeContainer.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { observer } from "mobx-react"; -import { NodeCollectionStore } from "../../stores/NodeCollectionStore"; -import { StaticTextNodeStore } from "../../stores/StaticTextNodeStore"; -import { VideoNodeStore } from "../../stores/VideoNodeStore"; -import { TextNodeView } from "../nodes/TextNodeView"; -import { VideoNodeView } from "../nodes/VideoNodeView"; -import "./FreeFormCanvas.scss"; -import React = require("react"); -import { DocumentView } from "../nodes/DocumentView"; -import { DocumentViewModel } from "../../viewmodels/DocumentViewModel"; - -interface IProps { - store: NodeCollectionStore -} - -@observer -export class NodeContainer extends React.Component { - - render() { - return ( -
- {this.props.store.Docs.map(doc => { - return (); - })} -
- ); - } -} \ No newline at end of file -- cgit v1.2.3-70-g09d2