import { action, observable } from "mobx"; import { observer } from "mobx-react"; import { DocumentView } from "./DocumentView"; import { LinkBox } from "./LinkBox"; import { LinkEditor } from "./LinkEditor"; import './LinkMenu.scss'; import React = require("react"); import { Doc, DocListCast } from "../../../new_fields/Doc"; import { Cast, FieldValue, StrCast } from "../../../new_fields/Types"; import { Id } from "../../../new_fields/FieldSymbols"; import { LinkManager } from "./LinkManager"; interface Props { docView: DocumentView; changeFlyout: () => void; } @observer export class LinkMenu extends React.Component { @observable private _editingLink?: Doc; // renderLinkItems(links: Doc[], key: string, type: string) { // return links.map(link => { // let doc = FieldValue(Cast(link[key], Doc)); // if (doc) { // return this._editingLink = link)} type={type} />; // } // }); // } renderLinkGroup(links: Doc[]) { console.log("render link group"); let source = this.props.docView.Document; console.log("num links", links.length, typeof links); return links.map(link => { let destination = (link["linkedTo"] === source) ? link["linkedFrom"] : link["linkedTo"]; let doc = FieldValue(Cast(destination, Doc)); if (doc) { console.log(doc[Id] + source[Id], "source is", source[Id]); return this._editingLink = link)} type={""} />; } }); } renderLinkItems(links: Map>) { console.log("render link items"); let linkItems: Array = []; links.forEach((links, group) => { console.log("category is ", group); linkItems.push(

{group}:

{this.renderLinkGroup(links)}
) }); return linkItems; } render() { //get list of links from document // let linkFrom = DocListCast(this.props.docView.props.Document.linkedFromDocs); // let linkTo = DocListCast(this.props.docView.props.Document.linkedToDocs); let related = LinkManager.Instance.findRelatedGroupedLinks(this.props.docView.props.Document); if (this._editingLink === undefined) { return (
{/* */}
{/* {this.renderLinkItems(linkTo, "linkedTo", "Destination: ")} {this.renderLinkItems(linkFrom, "linkedFrom", "Source: ")} */} {this.renderLinkItems(related)}
); } else { return ( this._editingLink = undefined)}> ); } } }