From b12143cc9822e2d590212363e02a1f8771c81e3b Mon Sep 17 00:00:00 2001 From: bob Date: Fri, 3 May 2019 12:36:06 -0400 Subject: more icon fixes for multiple documents. --- .../views/nodes/CollectionFreeFormDocumentView.tsx | 35 +++++++++++----------- src/client/views/nodes/IconBox.tsx | 6 ++-- 2 files changed, 21 insertions(+), 20 deletions(-) (limited to 'src/client/views/nodes') diff --git a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx index 53298fbdd..6bb00dd5c 100644 --- a/src/client/views/nodes/CollectionFreeFormDocumentView.tsx +++ b/src/client/views/nodes/CollectionFreeFormDocumentView.tsx @@ -11,6 +11,7 @@ import { OmitKeys, Utils } from "../../../Utils"; import { SelectionManager } from "../../util/SelectionManager"; import { matchedData } from "express-validator/filter"; import { Doc } from "../../../new_fields/Doc"; +import { List } from "../../../new_fields/List"; export interface CollectionFreeFormDocumentViewProps extends DocumentViewProps { } @@ -112,23 +113,23 @@ export class CollectionFreeFormDocumentView extends DocComponent => { SelectionManager.DeselectAll(); let isMinimized: boolean | undefined; - let minimizedDocSet = Cast(this.props.Document.linkedIconTags, listSpec(Doc), []); - let docs = minimizedDocSet.map(d => d); - let minimDoc = Cast(this.props.Document.minimizedDoc, Doc); - if (minimDoc instanceof Doc) docs.push(minimDoc); - else docs.push(this.props.Document); - docs.map(async minimizedDoc => { - this.props.addDocument && this.props.addDocument(minimizedDoc, false); - let maximizedDoc = await Cast(minimizedDoc.maximizedDoc, Doc); - if (maximizedDoc && !maximizedDoc.isIconAnimating) { + let maximizedDocs = await Cast(this.props.Document.maximizedDocs, listSpec(Doc)); + let minimizedDoc: Doc | undefined = this.props.Document; + if (!maximizedDocs) { + minimizedDoc = await Cast(this.props.Document.minimizedDoc, Doc); + if (minimizedDoc) maximizedDocs = await Cast(minimizedDoc.maximizedDocs, listSpec(Doc)); + } + if (minimizedDoc && maximizedDocs && maximizedDocs instanceof List && !maximizedDocs.some(md => BoolCast(md.isIconAnimating))) { + let minimizedTarget = minimizedDoc; + maximizedDocs.map(maximizedDoc => { maximizedDoc.isIconAnimating = true; if (isMinimized === undefined) { let maximizedDocMinimizedState = Cast(maximizedDoc.isMinimized, "boolean"); isMinimized = (maximizedDocMinimizedState) ? true : false; } if (isMinimized) this.props.bringToFront(maximizedDoc); - let minx = NumCast(minimizedDoc.x, undefined); - let miny = NumCast(minimizedDoc.y, undefined); + let minx = NumCast(minimizedTarget.x, undefined); + let miny = NumCast(minimizedTarget.y, undefined); let maxx = NumCast(maximizedDoc.x, undefined); let maxy = NumCast(maximizedDoc.y, undefined); let maxw = NumCast(maximizedDoc.width, undefined); @@ -137,8 +138,8 @@ export class CollectionFreeFormDocumentView extends DocComponent { this._downX = e.clientX; @@ -149,9 +150,9 @@ export class CollectionFreeFormDocumentView extends DocComponent d instanceof Doc).map(maxDoc => this.props.addDocument!(maxDoc, false)); this.toggleIcon(); } } @@ -169,7 +170,7 @@ export class CollectionFreeFormDocumentView extends DocComponent { public static LayoutString() { return FieldView.LayoutString(IconBox); } - @computed get maximized() { return Cast(this.props.Document.maximizedDoc, Doc); } @computed get layout(): string { const field = Cast(this.props.Document[this.props.fieldKey], IconField); return field ? field.icon : "

Error loading icon data

"; } @computed get minimizedIcon() { return IconBox.DocumentIcon(this.layout); } @@ -54,8 +54,8 @@ export class IconBox extends React.Component { render() { let labelField = StrCast(this.props.Document.labelField); let hideLabel = BoolCast(this.props.Document.hideLabel); - let maxDoc = Cast(this.props.Document.maximizedDoc, Doc) as Doc; - let label = !hideLabel && maxDoc && labelField ? maxDoc[labelField] : ""; + let maxDoc = Cast(this.props.Document.maximizedDocs, listSpec(Doc), []); + let label = !hideLabel && maxDoc && labelField ? (maxDoc.length === 1 ? maxDoc[0][labelField] : this.props.Document[labelField]) : ""; return (
{this.minimizedIcon} -- cgit v1.2.3-70-g09d2