From 5a6f6868dc25b2b24c6c7f4a7bc25670e6a35f47 Mon Sep 17 00:00:00 2001
From: bob <bcz@cs.brown.edu>
Date: Wed, 22 Jan 2020 12:08:20 -0500
Subject: fixed template/scripting problem.  added collectionDoc parameter for
 onClick scripts.   made buxton layout update hero image on click.

---
 src/client/views/collections/CollectionTreeView.tsx | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

(limited to 'src/client/views/collections/CollectionTreeView.tsx')

diff --git a/src/client/views/collections/CollectionTreeView.tsx b/src/client/views/collections/CollectionTreeView.tsx
index 48b5d91e9..2433cc40e 100644
--- a/src/client/views/collections/CollectionTreeView.tsx
+++ b/src/client/views/collections/CollectionTreeView.tsx
@@ -633,19 +633,20 @@ export class CollectionTreeView extends CollectionSubView(Document) {
         }
         ContextMenu.Instance.addItem({
             description: "Buxton Layout", icon: "eye", event: () => {
-                const { TextDocument, ImageDocument } = Docs.Create;
+                const { TextDocument, ImageDocument, MulticolumnDocument } = Docs.Create;
                 const { Document } = this.props;
                 const fallback = "http://www.cs.brown.edu/~bcz/face.gif";
+                const imageRack = MulticolumnDocument([], { title: "data", height: 100 });
                 const wrapper = Docs.Create.StackingDocument([
                     ImageDocument(fallback, { title: "hero" }),
+                    imageRack,
                     ...["short_description", "year", "company", "degrees_of_freedom"].map(key => TextDocument({ title: key }))
-                ], { autoHeight: true, chromeStatus: "disabled" });
-                wrapper.disableLOD = true;
-                wrapper.isTemplateDoc = makeTemplate(wrapper, true);
+                ], { autoHeight: true, chromeStatus: "disabled", disableLOD: true, title: "detailed layout stack" });
+                wrapper.isTemplateDoc = makeTemplate(wrapper);
+                imageRack.onChildClick = ScriptField.MakeFunction(`containingCollection.resolvedDataDoc.hero = copyField(this.data)`, { containingCollection: Doc.name });
 
                 const cardLayout = ImageDocument(fallback);
-                const proto = Doc.GetProto(cardLayout);
-                proto.layout = ImageBox.LayoutString("hero");
+                cardLayout.proto!.layout = ImageBox.LayoutString("hero");
                 cardLayout.showTitle = "title";
                 cardLayout.showTitleHover = "titlehover";
                 cardLayout.isTemplateField = true; // make this document act like a template field
-- 
cgit v1.2.3-70-g09d2

