From 1dd49a9659df6d4f449193eb7dbffeb56e5063b8 Mon Sep 17 00:00:00 2001
From: bob <bcz@cs.brown.edu>
Date: Fri, 5 Apr 2019 15:19:23 -0400
Subject: cleaned up histogram render transform.  fixed brushing

---
 .../CollectionFreeFormLinksView.tsx                | 55 ++++++++++++----------
 1 file changed, 30 insertions(+), 25 deletions(-)

(limited to 'src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx')

diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx
index 35fa6f99f..d4809ac1c 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLinksView.tsx
@@ -12,6 +12,7 @@ import "./CollectionFreeFormLinksView.scss";
 import { CollectionFreeFormLinkView } from "./CollectionFreeFormLinkView";
 import React = require("react");
 import v5 = require("uuid/v5");
+import { find } from "async";
 
 @observer
 export class CollectionFreeFormLinksView extends React.Component<CollectionViewProps> {
@@ -22,40 +23,44 @@ export class CollectionFreeFormLinksView extends React.Component<CollectionViewP
         }, () => {
             let views = DocumentManager.Instance.getAllDocumentViews(this.props.Document);
             for (let i = 0; i < views.length; i++) {
-                for (let j = i + 1; j < views.length; j++) {
+                for (let j = 0; j < views.length; j++) {
                     let srcDoc = views[j].props.Document;
                     let dstDoc = views[i].props.Document;
                     let x1 = srcDoc.GetNumber(KeyStore.X, 0);
                     let x1w = srcDoc.GetNumber(KeyStore.Width, -1);
                     let x2 = dstDoc.GetNumber(KeyStore.X, 0);
                     let x2w = dstDoc.GetNumber(KeyStore.Width, -1);
-                    if (x1w < 0 || x2w < 0)
+                    if (x1w < 0 || x2w < 0 || i == j)
                         continue;
-                    dstDoc.GetTAsync(KeyStore.Prototype, Document).then((protoDest) =>
-                        srcDoc.GetTAsync(KeyStore.Prototype, Document).then((protoSrc) => runInAction(() => {
-                            let dstTarg = (protoDest ? protoDest : dstDoc);
-                            let srcTarg = (protoSrc ? protoSrc : srcDoc);
-                            let findBrush = (field: ListField<Document>) => field.Data.findIndex(brush => {
-                                let bdocs = brush ? brush.GetList(KeyStore.BrushingDocs, [] as Document[]) : [];
-                                return (bdocs.length == 0 || (bdocs[0] == dstTarg && bdocs[1] == srcTarg) || (bdocs[0] == srcTarg && bdocs[1] == dstTarg))
-                            });
-                            let brushAction = (field: ListField<Document>) => {
-                                let found = findBrush(field);
-                                if (found != -1)
-                                    field.Data.splice(found, 1);
-                            };
-                            if (Math.abs(x1 + x1w - x2) < 20 || Math.abs(x2 + x2w - x1) < 20) {
-                                let linkDoc: Document = new Document();
-                                linkDoc.SetText(KeyStore.Title, "Histogram Brush");
-                                linkDoc.SetText(KeyStore.LinkDescription, "Brush between " + srcTarg.Title + " and " + dstTarg.Title);
-                                linkDoc.SetData(KeyStore.BrushingDocs, [dstTarg, srcTarg], ListField);
+                    let dstTarg = dstDoc;
+                    let srcTarg = srcDoc;
+                    let findBrush = (field: ListField<Document>) => field.Data.findIndex(brush => {
+                        let bdocs = brush ? brush.GetList(KeyStore.BrushingDocs, [] as Document[]) : [];
+                        return (bdocs.length && ((bdocs[0] == dstTarg && bdocs[1] == srcTarg)) ? true : false)
+                    });
+                    let brushAction = (field: ListField<Document>) => {
+                        let found = findBrush(field);
+                        if (found != -1) {
+                            console.log("REMOVE BRUSH " + srcTarg.Title + " " + dstTarg.Title);
+                            field.Data.splice(found, 1);
+                        }
+                    };
+                    if (Math.abs(x1 + x1w - x2) < 20) {
+                        let linkDoc: Document = new Document();
+                        linkDoc.SetText(KeyStore.Title, "Histogram Brush");
+                        linkDoc.SetText(KeyStore.LinkDescription, "Brush between " + srcTarg.Title + " and " + dstTarg.Title);
+                        linkDoc.SetData(KeyStore.BrushingDocs, [dstTarg, srcTarg], ListField);
 
-                                brushAction = brushAction = (field: ListField<Document>) => (findBrush(field) == -1) && field.Data.push(linkDoc);
+                        brushAction = brushAction = (field: ListField<Document>) => {
+                            if (findBrush(field) == -1) {
+                                console.log("ADD BRUSH " + srcTarg.Title + " " + dstTarg.Title);
+                                (findBrush(field) == -1) && field.Data.push(linkDoc);
                             }
-                            dstTarg.GetOrCreateAsync(KeyStore.BrushingDocs, ListField, brushAction);
-                            srcTarg.GetOrCreateAsync(KeyStore.BrushingDocs, ListField, brushAction);
-                        }
-                        )))
+                        };
+                    }
+                    dstTarg.GetOrCreateAsync(KeyStore.BrushingDocs, ListField, brushAction);
+                    srcTarg.GetOrCreateAsync(KeyStore.BrushingDocs, ListField, brushAction);
+
                 }
             }
         })
-- 
cgit v1.2.3-70-g09d2

