aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2020-04-24 15:41:57 -0400
committerBob Zeleznik <zzzman@gmail.com>2020-04-24 15:41:57 -0400
commit95efa332e0fd7ba9dfddf45c71f02a37052ca24e (patch)
tree606174f24aec48988f9f2e00312f3f10655f1117
parent81229ca27c6e21d4b5f0ee3a5168c766dcfb954a (diff)
more starburst fixes
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx14
-rw-r--r--src/client/views/nodes/DocumentView.tsx2
-rw-r--r--src/new_fields/Doc.ts31
3 files changed, 25 insertions, 22 deletions
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx
index 7152ff242..566a6788b 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormLayoutEngines.tsx
@@ -108,16 +108,18 @@ export function computerStarburstLayout(
viewDefsToJSX: (views: ViewDefBounds[]) => ViewDefResult[]
) {
const docMap = new Map<Doc, ViewDefBounds>();
- 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];
+ const burstRadius = [NumCast(pivotDoc._starburstRadius, panelDim[0]), NumCast(pivotDoc._starburstRadius, panelDim[1])];
+ const docScale = NumCast(pivotDoc._starburstDocScale);
+ const docSize = docScale * 100; // assume a icon sized at 100
+ const scaleDim = [burstRadius[0] + docSize, burstRadius[1] + docSize];
childDocs.forEach((doc, i) => {
const deg = i / childDocs.length * Math.PI * 2;
docMap.set(doc, {
type: "doc",
- x: Math.cos(deg) * (burstDim[0] / 3) - doc[WidthSym]() / 2,
- y: Math.sin(deg) * (burstDim[1] / 3) - doc[HeightSym]() / 2,
- width: doc[WidthSym](),
- height: doc[HeightSym](),
+ x: Math.cos(deg) * (burstRadius[0] / 3) - docScale * doc[WidthSym]() / 2,
+ y: Math.sin(deg) * (burstRadius[1] / 3) - docScale * doc[HeightSym]() / 2,
+ width: docScale * doc[WidthSym](),
+ height: docScale * doc[HeightSym](),
payload: undefined
});
});
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index 4bbdde3ea..06bd40992 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -408,7 +408,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
const collapse = layoutKey !== "layout_icon";
if (collapse) {
this.switchViews(collapse, "icon");
- if (layoutKey && layoutKey !== "layout") this.props.Document.deiconifyLayout = layoutKey.replace("layout_", "");
+ if (layoutKey && layoutKey !== "layout" && layoutKey !== "layout_icon") this.props.Document.deiconifyLayout = layoutKey.replace("layout_", "");
} else {
const deiconifyLayout = Cast(this.props.Document.deiconifyLayout, "string", null);
this.switchViews(deiconifyLayout ? true : false, deiconifyLayout);
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts
index 48606833c..18ffc38f5 100644
--- a/src/new_fields/Doc.ts
+++ b/src/new_fields/Doc.ts
@@ -973,7 +973,7 @@ export namespace Doc {
export function iconify(doc: Doc) {
const layoutKey = Cast(doc.layoutKey, "string", null);
Doc.makeCustomViewClicked(doc, Docs.Create.StackingDocument, "icon", undefined);
- if (layoutKey && layoutKey !== "layout") doc.deiconifyLayout = layoutKey.replace("layout_", "");
+ if (layoutKey && layoutKey !== "layout" && layoutKey !== "layout_icon") doc.deiconifyLayout = layoutKey.replace("layout_", "");
}
export function pileup(newCollection: Doc, selected: Doc[]) {
@@ -998,7 +998,7 @@ export namespace Doc {
newCollection._layoutEngine = "pass";
newCollection.overflow = "visible";
- newCollection.onClick = ScriptField.MakeScript("toggleStarburst(self)", { self: Doc.name });
+ newCollection.onClick = ScriptField.MakeScript("toggleStarburst(self, this)", { self: Doc.name, this: Doc.name });
}
@@ -1056,26 +1056,27 @@ Scripting.addGlobal(function selectedDocs(container: Doc, excludeCollections: bo
});
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); });
-Scripting.addGlobal(function toggleStarburst(self: Doc) {
+Scripting.addGlobal(function toggleStarburst(self: Doc, tLayout: 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);
+ tLayout.overflow = undefined;
+ self.x = NumCast(self.x) + tLayout[WidthSym]() / 2 - NumCast(tLayout._starburstPileWidth, defaultSize) / 2;
+ self.y = NumCast(self.y) + tLayout[HeightSym]() / 2 - NumCast(tLayout._starburstPileHeight, defaultSize) / 2;
+ tLayout._width = NumCast(tLayout._starburstPileWidth, defaultSize);
+ tLayout._height = NumCast(tLayout._starburstPileHeight, defaultSize);
self._layoutEngine = 'pass';
} else {
const defaultSize = 25;
- self.overflow = 'visible';
- !self.starburstRadius && (self.starburstRadius = 200);
+ tLayout.overflow = 'visible';
+ !tLayout._starburstRadius && (tLayout._starburstRadius = 500);
+ !tLayout._starburstDocScale && (tLayout._starburstDocScale = 2.5);
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.x = NumCast(self.x) + tLayout[WidthSym]() / 2 - defaultSize / 2;
+ self.y = NumCast(self.y) + tLayout[HeightSym]() / 2 - defaultSize / 2;
+ tLayout._starburstPileWidth = tLayout[WidthSym]();
+ tLayout._starburstPileHeight = tLayout[HeightSym]();
}
- self._width = self._height = defaultSize;
+ tLayout._width = tLayout._height = defaultSize;
self._layoutEngine = 'starburst';
}
}); \ No newline at end of file