diff options
| author | Eleanor Eng <eleanor_eng@brown.edu> | 2019-05-04 16:44:22 -0400 | 
|---|---|---|
| committer | Eleanor Eng <eleanor_eng@brown.edu> | 2019-05-04 16:44:40 -0400 | 
| commit | cecd09917f23fc83c87cffc4fddf5fe1f8331bac (patch) | |
| tree | ab7144d36046aaada287c2ce14d2fe7722585dce /src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx | |
| parent | 0bf0b028b1af8b9481e369c754277af5fb8b3fcd (diff) | |
| parent | 1ccabe155cb4f23c0aa7e37f91cd4a303008b8c7 (diff) | |
merge with master
Diffstat (limited to 'src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx')
| -rw-r--r-- | src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx | 51 | 
1 files changed, 36 insertions, 15 deletions
| diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx index 20c5a84bf..3b700b053 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinkView.tsx @@ -1,37 +1,58 @@  import { observer } from "mobx-react"; -import { Document } from "../../../../fields/Document"; -import { KeyStore } from "../../../../fields/KeyStore";  import { Utils } from "../../../../Utils";  import "./CollectionFreeFormLinkView.scss";  import React = require("react");  import v5 = require("uuid/v5"); +import { StrCast, NumCast, BoolCast } from "../../../../new_fields/Types"; +import { Doc, WidthSym, HeightSym } from "../../../../new_fields/Doc"; +import { InkingControl } from "../../InkingControl";  export interface CollectionFreeFormLinkViewProps { -    A: Document; -    B: Document; -    LinkDocs: Document[]; +    A: Doc; +    B: Doc; +    LinkDocs: Doc[]; +    addDocument: (document: Doc, allowDuplicates?: boolean) => boolean; +    removeDocument: (document: Doc) => boolean;  }  @observer  export class CollectionFreeFormLinkView extends React.Component<CollectionFreeFormLinkViewProps> {      onPointerDown = (e: React.PointerEvent) => { -        this.props.LinkDocs.map(l => -            console.log("Link:" + l.Title)); +        if (e.button === 0 && !InkingControl.Instance.selectedTool) { +            let a = this.props.A; +            let b = this.props.B; +            let x1 = NumCast(a.x) + (BoolCast(a.isMinimized, false) ? 5 : a[WidthSym]() / 2); +            let y1 = NumCast(a.y) + (BoolCast(a.isMinimized, false) ? 5 : a[HeightSym]() / 2); +            let x2 = NumCast(b.x) + (BoolCast(b.isMinimized, false) ? 5 : b[WidthSym]() / 2); +            let y2 = NumCast(b.y) + (BoolCast(b.isMinimized, false) ? 5 : b[HeightSym]() / 2); +            this.props.LinkDocs.map(l => { +                let width = l[WidthSym](); +                l.x = (x1 + x2) / 2 - width / 2; +                l.y = (y1 + y2) / 2 + 10; +                if (!this.props.removeDocument(l)) this.props.addDocument(l, false); +            }); +            e.stopPropagation(); +            e.preventDefault(); +        }      }      render() {          let l = this.props.LinkDocs;          let a = this.props.A;          let b = this.props.B; -        let x1 = a.GetNumber(KeyStore.X, 0) + (a.GetBoolean(KeyStore.IsMinimized, false) ? 5 : a.Width() / 2); -        let y1 = a.GetNumber(KeyStore.Y, 0) + (a.GetBoolean(KeyStore.IsMinimized, false) ? 5 : a.Height() / 2); -        let x2 = b.GetNumber(KeyStore.X, 0) + (b.GetBoolean(KeyStore.IsMinimized, false) ? 5 : b.Width() / 2); -        let y2 = b.GetNumber(KeyStore.Y, 0) + (b.GetBoolean(KeyStore.IsMinimized, false) ? 5 : b.Height() / 2); +        let x1 = NumCast(a.x) + (BoolCast(a.isMinimized, false) ? 5 : NumCast(a.width) / 2); +        let y1 = NumCast(a.y) + (BoolCast(a.isMinimized, false) ? 5 : NumCast(a.height) / 2); +        let x2 = NumCast(b.x) + (BoolCast(b.isMinimized, false) ? 5 : NumCast(b.width) / 2); +        let y2 = NumCast(b.y) + (BoolCast(b.isMinimized, false) ? 5 : NumCast(b.height) / 2);          return ( -            <line key={Utils.GenerateGuid()} className="collectionfreeformlinkview-linkLine" onPointerDown={this.onPointerDown} -                style={{ strokeWidth: `${l.length * 5}` }} -                x1={`${x1}`} y1={`${y1}`} -                x2={`${x2}`} y2={`${y2}`} /> +            <> +                <line key={Utils.GenerateGuid()} className="collectionfreeformlinkview-linkLine" +                    style={{ strokeWidth: `${l.length * 5}` }} +                    x1={`${x1}`} y1={`${y1}`} +                    x2={`${x2}`} y2={`${y2}`} /> +                <circle key={Utils.GenerateGuid()} className="collectionfreeformlinkview-linkLine" +                    cx={(x1 + x2) / 2} cy={(y1 + y2) / 2} r={10} onPointerDown={this.onPointerDown} /> +            </>          );      }  }
\ No newline at end of file | 
