aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/LinkMenu.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/nodes/LinkMenu.tsx')
-rw-r--r--src/client/views/nodes/LinkMenu.tsx58
1 files changed, 22 insertions, 36 deletions
diff --git a/src/client/views/nodes/LinkMenu.tsx b/src/client/views/nodes/LinkMenu.tsx
index 9a95a4f09..5c6b06d00 100644
--- a/src/client/views/nodes/LinkMenu.tsx
+++ b/src/client/views/nodes/LinkMenu.tsx
@@ -1,17 +1,15 @@
-import { observable, computed, action } from "mobx";
-import React = require("react");
-import { SelectionManager } from "../../util/SelectionManager";
+import { action, observable } from "mobx";
import { observer } from "mobx-react";
-import './LinkMenu.scss'
-import { KeyStore } from '../../../fields/KeyStore'
-import { props } from "bluebird";
-import { DocumentView } from "./DocumentView";
-import { LinkBox } from "./LinkBox"
import { Document } from "../../../fields/Document";
-import { ListField } from "../../../fields/ListField";
-import { TextField } from "../../../fields/TextField";
import { FieldWaiting } from "../../../fields/Field";
+import { Key } from "../../../fields/Key";
+import { KeyStore } from '../../../fields/KeyStore';
+import { ListField } from "../../../fields/ListField";
+import { DocumentView } from "./DocumentView";
+import { LinkBox } from "./LinkBox";
import { LinkEditor } from "./LinkEditor";
+import './LinkMenu.scss';
+import React = require("react");
interface Props {
docView: DocumentView;
@@ -23,39 +21,27 @@ export class LinkMenu extends React.Component<Props> {
@observable private _editingLink?: Document;
+ renderLinkItems(links: Document[], key: Key, type: string) {
+ return links.map(link => {
+ let doc = link.GetT(key, Document);
+ if (doc && doc != FieldWaiting) {
+ return <LinkBox key={doc.Id} linkDoc={link} linkName={link.Title} pairedDoc={doc} showEditor={action(() => this._editingLink = link)} type={type} />
+ }
+ })
+ }
+
render() {
//get list of links from document
let linkFrom: Document[] = this.props.docView.props.Document.GetData(KeyStore.LinkedFromDocs, ListField, []);
let linkTo: Document[] = this.props.docView.props.Document.GetData(KeyStore.LinkedToDocs, ListField, []);
if (this._editingLink === undefined) {
return (
-
- <div id="menu-container">
- <input id="search-bar" type="text" placeholder="Search..."></input>
- <div id="link-list">
-
- {linkTo.map(link => {
- let name = link.GetData(KeyStore.Title, TextField, new String);
- let doc = link.GetT(KeyStore.LinkedToDocs, Document);
- if (doc && doc != FieldWaiting) {
- return <LinkBox linkDoc={link} linkName={name} pairedDoc={doc} showEditor={action(() => this._editingLink = link)} type={"Destination: "} />
- } else {
- return <div></div>
- }
-
- })}
-
- {linkFrom.map(link => {
- let name = link.GetData(KeyStore.Title, TextField, new String);
- let doc = link.GetT(KeyStore.LinkedFromDocs, Document);
- if (doc && doc != FieldWaiting) {
- return <LinkBox linkDoc={link} linkName={name} pairedDoc={doc} showEditor={action(() => this._editingLink = link)} type={"Source: "} />
- } else {
- return <div></div>
- }
- })}
+ <div id="linkMenu-container">
+ <input id="linkMenu-searchBar" type="text" placeholder="Search..."></input>
+ <div id="linkMenu-list">
+ {this.renderLinkItems(linkTo, KeyStore.LinkedToDocs, "Source: ")}
+ {this.renderLinkItems(linkFrom, KeyStore.LinkedFromDocs, "Destination: ")}
</div>
-
</div>
)
} else {