From aaef5f4693b5eb6aae429f5c8caaf82838e9c65e Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Mon, 3 Oct 2022 15:12:14 -0400
Subject: added a reset menu item for docking views in their context menu. 
 fixed being able to edit dockingConfig in keyValue by quoting with ' instead
 of ".  If there's no dockingConfig, make one.

---
 .../views/collections/CollectionDockingView.tsx    | 56 +++++++++++-----------
 1 file changed, 27 insertions(+), 29 deletions(-)

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

diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx
index c6ac5ee0c..40a5876e0 100644
--- a/src/client/views/collections/CollectionDockingView.tsx
+++ b/src/client/views/collections/CollectionDockingView.tsx
@@ -281,38 +281,36 @@ export class CollectionDockingView extends CollectionSubView() {
         this.stateChanged();
         return true;
     }
-
     setupGoldenLayout = async () => {
-        const config = StrCast(this.props.Document.dockingConfig);
-        if (config) {
-            const matches = config.match(/\"documentId\":\"[a-z0-9-]+\"/g);
-            const docids = matches?.map(m => m.replace('"documentId":"', '').replace('"', '')) ?? [];
-            await Promise.all(docids.map(id => DocServer.GetRefField(id)));
-
-            if (this._goldenLayout) {
-                if (config === JSON.stringify(this._goldenLayout.toConfig())) {
-                    return;
-                } else {
-                    try {
-                        this._goldenLayout.unbind('tabCreated', this.tabCreated);
-                        this._goldenLayout.unbind('tabDestroyed', this.tabDestroyed);
-                        this._goldenLayout.unbind('stackCreated', this.stackCreated);
-                    } catch (e) {}
-                }
-                this.tabMap.clear();
-                this._goldenLayout.destroy();
+        const config = StrCast(this.props.Document.dockingConfig, JSON.stringify(DashboardView.resetDashboard(this.props.Document)));
+        const matches = config.match(/\"documentId\":\"[a-z0-9-]+\"/g);
+        const docids = matches?.map(m => m.replace('"documentId":"', '').replace('"', '')) ?? [];
+
+        await Promise.all(docids.map(id => DocServer.GetRefField(id)));
+
+        if (this._goldenLayout) {
+            if (config === JSON.stringify(this._goldenLayout.toConfig())) {
+                return;
+            } else {
+                try {
+                    this._goldenLayout.unbind('tabCreated', this.tabCreated);
+                    this._goldenLayout.unbind('tabDestroyed', this.tabDestroyed);
+                    this._goldenLayout.unbind('stackCreated', this.stackCreated);
+                } catch (e) {}
             }
-            const glay = (this._goldenLayout = new GoldenLayout(JSON.parse(config)));
-            glay.on('tabCreated', this.tabCreated);
-            glay.on('tabDestroyed', this.tabDestroyed);
-            glay.on('stackCreated', this.stackCreated);
-            glay.registerComponent('DocumentFrameRenderer', TabDocView);
-            glay.container = this._containerRef.current;
-            glay.init();
-            glay.root.layoutManager.on('itemDropped', this.tabItemDropped);
-            glay.root.layoutManager.on('dragStart', this.tabDragStart);
-            glay.root.layoutManager.on('activeContentItemChanged', this.stateChanged);
+            this.tabMap.clear();
+            this._goldenLayout.destroy();
         }
+        const glay = (this._goldenLayout = new GoldenLayout(JSON.parse(config)));
+        glay.on('tabCreated', this.tabCreated);
+        glay.on('tabDestroyed', this.tabDestroyed);
+        glay.on('stackCreated', this.stackCreated);
+        glay.registerComponent('DocumentFrameRenderer', TabDocView);
+        glay.container = this._containerRef.current;
+        glay.init();
+        glay.root.layoutManager.on('itemDropped', this.tabItemDropped);
+        glay.root.layoutManager.on('dragStart', this.tabDragStart);
+        glay.root.layoutManager.on('activeContentItemChanged', this.stateChanged);
     };
 
     componentDidMount: () => void = () => {
-- 
cgit v1.2.3-70-g09d2

