aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFawn <fangrui_tong@brown.edu>2019-06-15 17:17:45 -0400
committerFawn <fangrui_tong@brown.edu>2019-06-15 17:17:45 -0400
commitb4bd43f6e79c9dec30842262f270ca6122f1184a (patch)
tree55d2299973e4c479f7f70ca79dfcb1eb872dae82 /src
parentd3e734140c52e69f3d07f1ebe145e554a062addb (diff)
cleaned up some leftover linkedfromdocs/linkedtodocs
Diffstat (limited to 'src')
-rw-r--r--src/client/documents/Documents.ts31
-rw-r--r--src/client/util/LinkManager.ts3
-rw-r--r--src/client/views/DocumentDecorations.tsx3
-rw-r--r--src/client/views/collections/CollectionDockingView.tsx5
-rw-r--r--src/client/views/nodes/DocumentView.tsx40
5 files changed, 24 insertions, 58 deletions
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts
index 9cb41aecc..268dbc927 100644
--- a/src/client/documents/Documents.ts
+++ b/src/client/documents/Documents.ts
@@ -87,21 +87,11 @@ const delegateKeys = ["x", "y", "width", "height", "panX", "panY"];
export namespace DocUtils {
export function MakeLink(source: Doc, target: Doc) {
if (LinkManager.Instance.doesLinkExist(source, target)) return;
- // let protoSrc = source.proto ? source.proto : source;
- // let protoTarg = target.proto ? target.proto : target;
- UndoManager.RunInBatch(() => {
- // let groupDoc1 = Docs.TextDocument();
- // groupDoc1.proto!.type = "*";
- // groupDoc1.proto!.metadata = Docs.TextDocument();
- // let groupDoc2 = Docs.TextDocument();
- // groupDoc2.proto!.type = "*";
- // groupDoc2.proto!.metadata = Docs.TextDocument();
+ UndoManager.RunInBatch(() => {
let linkDoc = Docs.TextDocument({ width: 100, height: 30, borderRounding: -1 });
- //let linkDoc = new Doc;
- // linkDoc.proto!.title = source.proto!.title + " and " + target.proto!.title;
- // linkDoc.proto!.linkDescription = "";
+
linkDoc.proto!.anchor1 = source;
linkDoc.proto!.anchor1Page = source.curPage;
linkDoc.proto!.anchor1Groups = new List<Doc>([]);
@@ -110,23 +100,6 @@ export namespace DocUtils {
linkDoc.proto!.anchor2Page = target.curPage;
linkDoc.proto!.anchor2Groups = new List<Doc>([]);
- // linkDoc.proto!.linkedTo = target;
- // linkDoc.proto!.linkedToPage = target.curPage;
- // linkDoc.proto!.linkedFrom = source;
- // linkDoc.proto!.linkedFromPage = source.curPage;
-
- // let linkedFrom = Cast(protoTarg.linkedFromDocs, listSpec(Doc));
- // if (!linkedFrom) {
- // protoTarg.linkedFromDocs = linkedFrom = new List<Doc>();
- // }
- // linkedFrom.push(linkDoc);
-
- // let linkedTo = Cast(protoSrc.linkedToDocs, listSpec(Doc));
- // if (!linkedTo) {
- // protoSrc.linkedToDocs = linkedTo = new List<Doc>();
- // }
- // linkedTo.push(linkDoc);
-
LinkManager.Instance.allLinks.push(linkDoc);
return linkDoc;
diff --git a/src/client/util/LinkManager.ts b/src/client/util/LinkManager.ts
index aaed7388d..23ba9d2e4 100644
--- a/src/client/util/LinkManager.ts
+++ b/src/client/util/LinkManager.ts
@@ -30,7 +30,8 @@ export class LinkManager {
}
@observable public allLinks: Array<Doc> = []; // list of link docs
- @observable public groupMetadataKeys: Map<string, Array<string>> = new Map(); // map of group type to list of its metadata keys
+ @observable public groupMetadataKeys: Map<string, Array<string>> = new Map();
+ // map of group type to list of its metadata keys; serves as a dictionary of groups to what kind of metadata it hodls
// finds all links that contain the given anchor
public findAllRelatedLinks(anchor: Doc): Array<Doc> {
diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx
index eb45c770e..6ed263ac8 100644
--- a/src/client/views/DocumentDecorations.tsx
+++ b/src/client/views/DocumentDecorations.tsx
@@ -511,9 +511,6 @@ export class DocumentDecorations extends React.Component<{}, { value: string }>
let linkButton = null;
if (SelectionManager.SelectedDocuments().length > 0) {
let selFirst = SelectionManager.SelectedDocuments()[0];
- // let linkToSize = Cast(selFirst.props.Document.linkedToDocs, listSpec(Doc), []).length;
- // let linkFromSize = Cast(selFirst.props.Document.linkedFromDocs, listSpec(Doc), []).length;
- // let linkCount = linkToSize + linkFromSize;
let linkCount = LinkManager.Instance.findAllRelatedLinks(selFirst.props.Document).length;
linkButton = (<Flyout
anchorPoint={anchorPoints.RIGHT_TOP}
diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx
index dcc1bd95d..9861b2c20 100644
--- a/src/client/views/collections/CollectionDockingView.tsx
+++ b/src/client/views/collections/CollectionDockingView.tsx
@@ -23,6 +23,7 @@ import { DocumentManager } from '../../util/DocumentManager';
import { CollectionViewType } from './CollectionBaseView';
import { Id } from '../../../new_fields/FieldSymbols';
import { CurrentUserUtils } from '../../../server/authentication/models/current_user_utils';
+import { LinkManager } from '../../util/LinkManager';
@observer
export class CollectionDockingView extends React.Component<SubCollectionViewProps> {
@@ -338,9 +339,9 @@ export class CollectionDockingView extends React.Component<SubCollectionViewProp
tab.reactComponents = [upDiv];
tab.element.append(upDiv);
counter.DashDocId = tab.contentItem.config.props.documentId;
- tab.reactionDisposer = reaction(() => [doc.linkedFromDocs, doc.LinkedToDocs, doc.title],
+ tab.reactionDisposer = reaction(() => [LinkManager.Instance.findAllRelatedLinks(doc), doc.title],
() => {
- counter.innerHTML = DocListCast(doc.linkedFromDocs).length + DocListCast(doc.linkedToDocs).length;
+ counter.innerHTML = LinkManager.Instance.findAllRelatedLinks(doc).length;
tab.titleElement[0].textContent = doc.title;
}, { fireImmediately: true });
tab.titleElement[0].DashDocId = tab.contentItem.config.props.documentId;
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index fc6974e6c..c1a32ad82 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -31,6 +31,7 @@ import React = require("react");
import { Id, Copy } from '../../../new_fields/FieldSymbols';
import { ContextMenuProps } from '../ContextMenuItem';
import { list, object, createSimpleSchema } from 'serializr';
+import { LinkManager } from '../../util/LinkManager';
const JsxParser = require('react-jsx-parser').default; //TODO Why does this need to be imported like this?
library.add(faTrash);
@@ -49,16 +50,16 @@ library.add(faCrosshairs);
library.add(faDesktop);
-const linkSchema = createSchema({
- title: "string",
- linkDescription: "string",
- linkTags: "string",
- linkedTo: Doc,
- linkedFrom: Doc
-});
+// const linkSchema = createSchema({
+// title: "string",
+// linkDescription: "string",
+// linkTags: "string",
+// linkedTo: Doc,
+// linkedFrom: Doc
+// });
-type LinkDoc = makeInterface<[typeof linkSchema]>;
-const LinkDoc = makeInterface(linkSchema);
+// type LinkDoc = makeInterface<[typeof linkSchema]>;
+// const LinkDoc = makeInterface(linkSchema);
export interface DocumentViewProps {
ContainingCollectionView: Opt<CollectionView | CollectionPDFView | CollectionVideoView>;
@@ -216,8 +217,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
let subBulletDocs = await DocListCastAsync(this.props.Document.subBulletDocs);
let maximizedDocs = await DocListCastAsync(this.props.Document.maximizedDocs);
let summarizedDocs = await DocListCastAsync(this.props.Document.summarizedDocs);
- let linkedToDocs = await DocListCastAsync(this.props.Document.linkedToDocs, []);
- let linkedFromDocs = await DocListCastAsync(this.props.Document.linkedFromDocs, []);
+ let linkedDocs = LinkManager.Instance.findAllRelatedLinks(this.props.Document);
let expandedDocs: Doc[] = [];
expandedDocs = subBulletDocs ? [...subBulletDocs, ...expandedDocs] : expandedDocs;
expandedDocs = maximizedDocs ? [...maximizedDocs, ...expandedDocs] : expandedDocs;
@@ -252,18 +252,12 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
this.props.collapseToPoint && this.props.collapseToPoint(scrpt, expandedProtoDocs);
}
}
- else if (linkedToDocs.length || linkedFromDocs.length) {
- let linkedFwdDocs = [
- linkedToDocs.length ? linkedToDocs[0].linkedTo as Doc : linkedFromDocs.length ? linkedFromDocs[0].linkedFrom as Doc : expandedDocs[0],
- linkedFromDocs.length ? linkedFromDocs[0].linkedFrom as Doc : linkedToDocs.length ? linkedToDocs[0].linkedTo as Doc : expandedDocs[0]];
-
- let linkedFwdPage = [
- linkedToDocs.length ? NumCast(linkedToDocs[0].linkedToPage, undefined) : linkedFromDocs.length ? NumCast(linkedFromDocs[0].linkedFromPage, undefined) : undefined,
- linkedFromDocs.length ? NumCast(linkedFromDocs[0].linkedFromPage, undefined) : linkedToDocs.length ? NumCast(linkedToDocs[0].linkedToPage, undefined) : undefined];
- if (!linkedFwdDocs.some(l => l instanceof Promise)) {
- let maxLocation = StrCast(linkedFwdDocs[altKey ? 1 : 0].maximizeLocation, "inTab");
- DocumentManager.Instance.jumpToDocument(linkedFwdDocs[altKey ? 1 : 0], ctrlKey, document => this.props.addDocTab(document, maxLocation), linkedFwdPage[altKey ? 1 : 0]);
- }
+ else if (linkedDocs.length) {
+ let linkedDoc = linkedDocs.length ? linkedDocs[0] : expandedDocs[0];
+ let linkedPages = [linkedDocs.length ? NumCast(linkedDocs[0].anchor1Page, undefined) : NumCast(linkedDocs[0].anchor2Page, undefined),
+ linkedDocs.length ? NumCast(linkedDocs[0].anchor2Page, undefined) : NumCast(linkedDocs[0].anchor1Page, undefined)];
+ let maxLocation = StrCast(linkedDoc.maximizeLocation, "inTab");
+ DocumentManager.Instance.jumpToDocument(linkedDoc, ctrlKey, document => this.props.addDocTab(document, maxLocation), linkedPages[altKey ? 1 : 0]);
}
}
}