diff options
author | Bob Zeleznik <zzzman@gmail.com> | 2019-05-02 00:21:18 -0400 |
---|---|---|
committer | Bob Zeleznik <zzzman@gmail.com> | 2019-05-02 00:21:18 -0400 |
commit | 276a6619eb3d86dabcb3ece26486e87b09708a3b (patch) | |
tree | e12ecd383346d3463304a2c40737a113e5b385f2 | |
parent | be3719bbbede85b4dd099f436b4f7d3bade157cb (diff) |
made templates work again
-rw-r--r-- | src/client/documents/Documents.ts | 2 | ||||
-rw-r--r-- | src/client/views/DocumentDecorations.scss | 31 | ||||
-rw-r--r-- | src/client/views/DocumentDecorations.tsx | 2 | ||||
-rw-r--r-- | src/client/views/TemplateMenu.tsx | 15 | ||||
-rw-r--r-- | src/client/views/Templates.tsx | 2 | ||||
-rw-r--r-- | src/client/views/nodes/DocumentView.tsx | 24 |
6 files changed, 24 insertions, 52 deletions
diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 6ca2567dc..0333f4673 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -48,7 +48,7 @@ export interface DocumentOptions { scale?: number; baseLayout?: string; layout?: string; - //templates?: Array<Template>; + templates?: List<string>; viewType?: number; backgroundColor?: string; copyDraggedItems?: boolean; diff --git a/src/client/views/DocumentDecorations.scss b/src/client/views/DocumentDecorations.scss index ecddb8b06..158b02b5a 100644 --- a/src/client/views/DocumentDecorations.scss +++ b/src/client/views/DocumentDecorations.scss @@ -105,37 +105,6 @@ $linkGap : 3px; opacity: 0.1; } -// position: absolute; -// display: grid; -// z-index: 1000; -// grid-template-rows: 20px 1fr 20px 0px; -// grid-template-columns: 20px 1fr 20px; -// pointer-events: none; -// #documentDecorations-centerCont { -// background: none; -// } -// .documentDecorations-resizer { -// pointer-events: auto; -// background: lightblue; -// opacity: 0.4; -// } -// #documentDecorations-topLeftResizer, -// #documentDecorations-bottomRightResizer { -// cursor: nwse-resize; -// } -// #documentDecorations-topRightResizer, -// #documentDecorations-bottomLeftResizer { -// cursor: nesw-resize; -// } -// #documentDecorations-topResizer, -// #documentDecorations-bottomResizer { -// cursor: ns-resize; -// } -// #documentDecorations-leftResizer, -// #documentDecorations-rightResizer { -// cursor: ew-resize; -// } -// } .linkFlyout { grid-column: 2/4; margin-top: $linkGap; diff --git a/src/client/views/DocumentDecorations.tsx b/src/client/views/DocumentDecorations.tsx index a6c7f9718..7dcd71495 100644 --- a/src/client/views/DocumentDecorations.tsx +++ b/src/client/views/DocumentDecorations.tsx @@ -518,7 +518,7 @@ export class DocumentDecorations extends React.Component<{}, { value: string }> let docTemps = doc.templates; let checked = false; docTemps.forEach(temp => { - if (template.Name === temp.Name) { + if (template.Layout === temp) { checked = true; } }); diff --git a/src/client/views/TemplateMenu.tsx b/src/client/views/TemplateMenu.tsx index 8eb2fc6c6..7be846e05 100644 --- a/src/client/views/TemplateMenu.tsx +++ b/src/client/views/TemplateMenu.tsx @@ -1,4 +1,4 @@ -import { observable, computed, action } from "mobx"; +import { observable, computed, action, trace } from "mobx"; import React = require("react"); import { observer } from "mobx-react"; import './DocumentDecorations.scss'; @@ -33,23 +33,24 @@ export interface TemplateMenuProps { export class TemplateMenu extends React.Component<TemplateMenuProps> { @observable private _hidden: boolean = true; - @observable private _templates: Map<Template, boolean> = this.props.templates; @action toggleTemplate = (event: React.ChangeEvent<HTMLInputElement>, template: Template): void => { if (event.target.checked) { this.props.doc.addTemplate(template); - this._templates.set(template, true); + this.props.templates.set(template, true); + this.props.templates.forEach((checked, template) => console.log("Set Checked + " + checked + " " + this.props.templates.get(template))); } else { this.props.doc.removeTemplate(template); - this._templates.set(template, false); + this.props.templates.set(template, false); + this.props.templates.forEach((checked, template) => console.log("Unset Checked + " + checked + " " + this.props.templates.get(template))); } } @action componentWillReceiveProps(nextProps: TemplateMenuProps) { - this._templates = nextProps.templates; + // this._templates = nextProps.templates; } @action @@ -58,8 +59,10 @@ export class TemplateMenu extends React.Component<TemplateMenuProps> { } render() { + trace(); let templateMenu: Array<JSX.Element> = []; - this._templates.forEach((checked, template) => { + this.props.templates.forEach((checked, template) => { + console.log("checked + " + checked + " " + this.props.templates.get(template)); templateMenu.push(<TemplateToggle key={template.Name} template={template} checked={checked} toggle={this.toggleTemplate} />); }); 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, - `<div><div style="height:100%; width:100%;position:absolute;">{layout}</div><div style="height:25px; width:100%; position:absolute; top: 0; background-color: rgba(0, 0, 0, .4); color: white; padding:2px 10px">{Document.title}</div></div>` + `<div><div style="height:100%; width:100%;position:absolute;">{layout}</div><div style="height:25px; width:100%; position:absolute; top: 0; background-color: rgba(0, 0, 0, .4); color: white; padding:2px 10px">{props.Document.title}</div></div>` ); export const TemplateList: Template[] = [Title, OuterCaption, InnerCaption, SideCaption]; diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index b35d68c4b..ae2d3af13 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -87,12 +87,14 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu public get ContentDiv() { return this._mainCont.current; } @computed get active(): boolean { return SelectionManager.IsSelected(this) || this.props.parentActive(); } @computed get topMost(): boolean { return this.props.isTopMost; } - @computed get templates(): Array<Template> { - return new Array<Template>(); - // let field = this.props.Document[KeyStore.Templates]; - // return !field || field === FieldWaiting ? [] : field.Data; + @computed get templates(): List<string> { + let field = this.props.Document.templates; + if (field && field instanceof List) { + return field; + } + return new List<string>(); } - set templates(templates: Array<Template>) { /* this.props.Document.templates = templates;*/ } + set templates(templates: List<string>) { this.props.Document.templates = templates; } screenRect = (): ClientRect | DOMRect => this._mainCont.current ? this._mainCont.current.getBoundingClientRect() : new DOMRect(); @action @@ -248,8 +250,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu let layout = baseLayout; this.templates.forEach(template => { - let temp = template.Layout; - layout = temp.replace("{layout}", base); + layout = template.replace("{layout}", base); base = layout; }); @@ -260,9 +261,8 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu @action addTemplate = (template: Template) => { let templates = this.templates; - templates.push(template); - templates = templates.splice(0, templates.length).sort(Templates.sortTemplates); - this.templates = templates; + templates.push(template.Layout); + this.templates = new List<string>(templates.map(t => t)); this.updateLayout(); } @@ -271,12 +271,12 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu let templates = this.templates; for (let i = 0; i < templates.length; i++) { let temp = templates[i]; - if (temp.Name === template.Name) { + if (temp === template.Layout) { templates.splice(i, 1); break; } } - templates = templates.splice(0, templates.length).sort(Templates.sortTemplates); + templates = new List<string>(templates.splice(0, templates.length)); this.templates = templates; this.updateLayout(); } |