From edf82f7a686169ea279627bac1c661aaa3459ec9 Mon Sep 17 00:00:00 2001 From: Bob Zeleznik Date: Fri, 24 Apr 2020 11:44:03 -0400 Subject: more starburst tweaks. --- .../views/collections/CollectionTimeView.tsx | 2 +- .../CollectionFreeFormLayoutEngines.tsx | 5 ++- .../collectionFreeForm/CollectionFreeFormView.tsx | 6 +-- src/client/views/nodes/DocumentBox.tsx | 2 +- src/new_fields/Doc.ts | 43 +++++++++++++--------- 5 files changed, 33 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/client/views/collections/CollectionTimeView.tsx b/src/client/views/collections/CollectionTimeView.tsx index 06ebf6d2d..63498cea1 100644 --- a/src/client/views/collections/CollectionTimeView.tsx +++ b/src/client/views/collections/CollectionTimeView.tsx @@ -29,7 +29,7 @@ export class CollectionTimeView extends CollectionSubView(doc => doc) { @observable _childClickedScript: Opt; @observable _viewDefDivClick: Opt; async componentDidMount() { - const detailView = (await DocCastAsync(this.props.Document.childDetailView)) || DocumentView.findTemplate("detailView", StrCast(this.props.Document.type), ""); + const detailView = (await DocCastAsync(this.props.Document.childDetailView)) || Doc.findTemplate("detailView", StrCast(this.props.Document.type), ""); const childText = "const alias = getAlias(self); switchView(alias, detailView); alias.dropAction='alias'; alias.removeDropProperties=new List(['dropAction']); useRightSplit(alias, shiftKey); "; runInAction(() => { this._childClickedScript = ScriptField.MakeScript(childText, { this: Doc.name, shiftKey: "boolean" }, { detailView: detailView! }); diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx index 57f62347a..7152ff242 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx @@ -108,7 +108,8 @@ export function computerStarburstLayout( viewDefsToJSX: (views: ViewDefBounds[]) => ViewDefResult[] ) { const docMap = new Map(); - const burstDim = [NumCast(pivotDoc.starburstRadius, panelDim[0]), NumCast(pivotDoc.starburstRadius, panelDim[1])] + const burstDim = [NumCast(pivotDoc.starburstRadius, panelDim[0]), NumCast(pivotDoc.starburstRadius, panelDim[1])]; + const scaleDim = [NumCast(pivotDoc._starburstWidth, burstDim[0]) * 5, NumCast(pivotDoc._starburstHeight, burstDim[1]) * 5]; childDocs.forEach((doc, i) => { const deg = i / childDocs.length * Math.PI * 2; docMap.set(doc, { @@ -120,7 +121,7 @@ export function computerStarburstLayout( payload: undefined }); }); - return normalizeResults(burstDim, 12, childPairs, docMap, poolData, viewDefsToJSX, [], 0, [], childDocs.filter(c => !filterDocs.includes(c))); + return normalizeResults(scaleDim, 12, childPairs, docMap, poolData, viewDefsToJSX, [], 0, [], childDocs.filter(c => !filterDocs.includes(c))); } diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx index 63199ccbb..1f0bc89c5 100644 --- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx +++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx @@ -898,7 +898,7 @@ export class CollectionFreeFormView extends CollectionSubView(); const engine = StrCast(this.layoutDoc._layoutEngine) || this.props.layoutEngine?.(); switch (engine) { - case "pass": return { newPool, computedElementData: this.doEngineLayout(newPool, computerPassLayout) } + case "pass": return { newPool, computedElementData: this.doEngineLayout(newPool, computerPassLayout) }; case "timeline": return { newPool, computedElementData: this.doEngineLayout(newPool, computeTimelineLayout) }; case "pivot": return { newPool, computedElementData: this.doEngineLayout(newPool, computePivotLayout) }; case "starburst": return { newPool, computedElementData: this.doEngineLayout(newPool, computerStarburstLayout) }; @@ -1044,7 +1044,7 @@ export class CollectionFreeFormView extends CollectionSubView { diff --git a/src/client/views/nodes/DocumentBox.tsx b/src/client/views/nodes/DocumentBox.tsx index 7583aa070..0111cadd5 100644 --- a/src/client/views/nodes/DocumentBox.tsx +++ b/src/client/views/nodes/DocumentBox.tsx @@ -111,7 +111,7 @@ export class DocHolderBox extends ViewBoxAnnotatableComponent { - DocumentView.createCustomView(containedDoc, Docs.Create.StackingDocument, childTemplateName); + Doc.createCustomView(containedDoc, Docs.Create.StackingDocument, childTemplateName); Doc.expandTemplateLayout(Cast(containedDoc["layout_" + childTemplateName], Doc, null), containedDoc, undefined); }, 0); } diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index 52c3ce141..48606833c 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -998,23 +998,7 @@ export namespace Doc { newCollection._layoutEngine = "pass"; newCollection.overflow = "visible"; - const script = "if (self._layoutEngine === 'starburst') {" + - " self.overflow = undefined;" + - " self.x = self.x + self._width/2 - 55; " + - " self.y = self.y + self._height/2 - 55; " + - " self._width = self._height = 110;" + - " self._layoutEngine = 'pass';" + - " } else {" + - " self.overflow = 'visible';" + - " !self.starburstRadius && (self.starburstRadius = 500);" + - " if (self._layoutEngine === 'pass') { " + - " self.x = self.x + self._width/2 - 12.5; " + - " self.y = self.y + self._height/2 - 12.5; " + - " }; " + - " self._width = self._height = 25;" + - " self._layoutEngine = 'starburst';" + - " };"; - newCollection.onClick = ScriptField.MakeScript(script, { self: Doc.name }); + newCollection.onClick = ScriptField.MakeScript("toggleStarburst(self)", { self: Doc.name }); } @@ -1071,4 +1055,27 @@ Scripting.addGlobal(function selectedDocs(container: Doc, excludeCollections: bo return docs.length ? new List(docs) : prevValue; }); Scripting.addGlobal(function setDocFilter(container: Doc, key: string, value: any, modifiers?: "check" | "x" | undefined) { Doc.setDocFilter(container, key, value, modifiers); }); -Scripting.addGlobal(function setDocFilterRange(container: Doc, key: string, range: number[]) { Doc.setDocFilterRange(container, key, range); }); \ No newline at end of file +Scripting.addGlobal(function setDocFilterRange(container: Doc, key: string, range: number[]) { Doc.setDocFilterRange(container, key, range); }); +Scripting.addGlobal(function toggleStarburst(self: Doc) { + if (self._layoutEngine === 'starburst') { + const defaultSize = 110; + self.overflow = undefined; + self.x = NumCast(self.x) + self[WidthSym]() / 2 - NumCast(self._starburstWidth, defaultSize) / 2; + self.y = NumCast(self.y) + self[HeightSym]() / 2 - NumCast(self._starburstHeight, defaultSize) / 2; + self._width = NumCast(self._starburstWidth, defaultSize); + self._height = NumCast(self._starburstHeight, defaultSize); + self._layoutEngine = 'pass'; + } else { + const defaultSize = 25; + self.overflow = 'visible'; + !self.starburstRadius && (self.starburstRadius = 200); + if (self._layoutEngine === 'pass') { + self.x = NumCast(self.x) + self[WidthSym]() / 2 - defaultSize / 2; + self.y = NumCast(self.y) + self[HeightSym]() / 2 - defaultSize / 2; + self._starburstWidth = self._width; + self._starburstHeight = self._height; + } + self._width = self._height = defaultSize; + self._layoutEngine = 'starburst'; + } +}); \ No newline at end of file -- cgit v1.2.3-70-g09d2