diff options
Diffstat (limited to 'src/client/views/nodes/LinkMenu.tsx')
-rw-r--r-- | src/client/views/nodes/LinkMenu.tsx | 58 |
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 { |