From 276a6619eb3d86dabcb3ece26486e87b09708a3b Mon Sep 17 00:00:00 2001 From: Bob Zeleznik Date: Thu, 2 May 2019 00:21:18 -0400 Subject: made templates work again --- src/client/views/Templates.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/client/views/Templates.tsx') diff --git a/src/client/views/Templates.tsx b/src/client/views/Templates.tsx index 5b7e8da63..25d89772e 100644 --- a/src/client/views/Templates.tsx +++ b/src/client/views/Templates.tsx @@ -51,7 +51,7 @@ export namespace Templates { ); export const Title = new Template("Title", TemplatePosition.InnerTop, - `
{layout}
{Document.title}
` + `
{layout}
{props.Document.title}
` ); export const TemplateList: Template[] = [Title, OuterCaption, InnerCaption, SideCaption]; -- cgit v1.2.3-70-g09d2 From 407c104f0ad0957d71f73c14f5b835fab387ecd2 Mon Sep 17 00:00:00 2001 From: Bob Zeleznik Date: Thu, 2 May 2019 00:50:08 -0400 Subject: fixed up templates a bit. starting on summarization --- src/client/views/Templates.tsx | 3 ++ .../collections/collectionFreeForm/MarqueeView.tsx | 5 +++- src/client/views/nodes/DocumentContentsView.tsx | 25 +++++++++++++++-- src/client/views/nodes/DocumentView.tsx | 32 ++++------------------ 4 files changed, 36 insertions(+), 29 deletions(-) (limited to 'src/client/views/Templates.tsx') diff --git a/src/client/views/Templates.tsx b/src/client/views/Templates.tsx index 25d89772e..e17dd2354 100644 --- a/src/client/views/Templates.tsx +++ b/src/client/views/Templates.tsx @@ -53,6 +53,9 @@ export namespace Templates { export const Title = new Template("Title", TemplatePosition.InnerTop, `
{layout}
{props.Document.title}
` ); + export const Summary = new Template("Title", TemplatePosition.InnerTop, + `
{layout}
{props.Document.doc1.title}
` + ); export const TemplateList: Template[] = [Title, OuterCaption, InnerCaption, SideCaption]; diff --git a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx index 85a12defa..c58e7780c 100644 --- a/src/client/views/collections/collectionFreeForm/MarqueeView.tsx +++ b/src/client/views/collections/collectionFreeForm/MarqueeView.tsx @@ -13,6 +13,8 @@ import { Utils } from "../../../../Utils"; import { Doc } from "../../../../new_fields/Doc"; import { NumCast, Cast } from "../../../../new_fields/Types"; import { InkField, StrokeData } from "../../../../new_fields/InkField"; +import { Templates } from "../../Templates"; +import { List } from "../../../../new_fields/List"; interface MarqueeViewProps { getContainerTransform: () => Transform; @@ -178,7 +180,8 @@ export class MarqueeView extends React.Component // SelectionManager.DeselectAll(); if (e.key === "r") { let summary = Docs.TextDocument({ x: bounds.left, y: bounds.top, width: 300, height: 100, backgroundColor: "yellow", title: "-summary-" }); - Doc.MakeLink(summary.proto!, newCollection.proto!); + summary.doc1 = newCollection.proto!; + summary.templates = new List([Templates.Summary.Layout]); this.props.addLiveTextDocument(summary); e.preventDefault(); } diff --git a/src/client/views/nodes/DocumentContentsView.tsx b/src/client/views/nodes/DocumentContentsView.tsx index 794442469..24e8a36ae 100644 --- a/src/client/views/nodes/DocumentContentsView.tsx +++ b/src/client/views/nodes/DocumentContentsView.tsx @@ -20,7 +20,8 @@ import { HistogramBox } from "../../northstar/dash-nodes/HistogramBox"; import React = require("react"); import { FieldViewProps } from "./FieldView"; import { Without, OmitKeys } from "../../../Utils"; -import { Cast } from "../../../new_fields/Types"; +import { Cast, StrCast } from "../../../new_fields/Types"; +import { List } from "../../../new_fields/List"; const JsxParser = require('react-jsx-parser').default; //TODO Why does this need to be imported like this? type BindingProps = Without; @@ -40,11 +41,31 @@ export class DocumentContentsView extends React.Component obj.active = this.props.parentActive).omit }; } + @computed get templates(): List { + let field = this.props.Document.templates; + if (field && field instanceof List) { + return field; + } + return new List(); + } + set templates(templates: List) { this.props.Document.templates = templates; } + get finalLayout() { + const baseLayout = this.layout; + let base = baseLayout; + let layout = baseLayout; + + this.templates.forEach(template => { + layout = template.replace("{layout}", base); + base = layout; + }); + return layout; + } + render() { return { console.log(test); }} />; diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index ae2d3af13..e83f3fcba 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -243,42 +243,22 @@ export class DocumentView extends DocComponent(Docu } } - updateLayout = async () => { - const baseLayout = await StrCast(this.props.Document.baseLayout); - if (baseLayout) { - let base = baseLayout; - let layout = baseLayout; - - this.templates.forEach(template => { - layout = template.replace("{layout}", base); - base = layout; - }); - - this.props.Document.layout = layout; - } - } @action addTemplate = (template: Template) => { - let templates = this.templates; - templates.push(template.Layout); - this.templates = new List(templates.map(t => t)); - this.updateLayout(); + this.templates.push(template.Layout); + this.templates = this.templates; } @action removeTemplate = (template: Template) => { - let templates = this.templates; - for (let i = 0; i < templates.length; i++) { - let temp = templates[i]; - if (temp === template.Layout) { - templates.splice(i, 1); + for (let i = 0; i < this.templates.length; i++) { + if (this.templates[i] === template.Layout) { + this.templates.splice(i, 1); break; } } - templates = new List(templates.splice(0, templates.length)); - this.templates = templates; - this.updateLayout(); + this.templates = this.templates; } @action -- cgit v1.2.3-70-g09d2