changeset 2407:6697a68800d2

junk merge just to avoid two heads
author drewp@bigasterisk.com
date Fri, 17 May 2024 17:48:26 -0700
parents 9cbc93f80b05 (current diff) 68d8e905d61a (diff)
children 66a4db80ce6e
files web/TiledHome.ts
diffstat 2 files changed, 80 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/web/TiledHome.ts	Fri May 17 17:41:22 2024 -0700
+++ b/web/TiledHome.ts	Fri May 17 17:48:26 2024 -0700
@@ -17,22 +17,7 @@
     tabEnableRename: false,
   },
   borders: [],
-  layout: {
-    type: "row",
-    weight: 100,
-    children: [
-      {
-        type: "tabset",
-        weight: 50,
-        children: [{ type: "tab", name: "devsettings", component: "light9-device-settings" }],
-      },
-      {
-        type: "tabset",
-        weight: 50,
-        children: [{ type: "tab", name: "collector", component: "light9-collector-ui" }],
-      },
-    ],
-  },
+  layout: fullLayout(persistedLayout) as FlexLayout.IJsonRowNode,
 };
 
 // see https://github.com/lit/lit/tree/main/packages/labs/react
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/tiledLayoutPersistence.ts	Fri May 17 17:48:26 2024 -0700
@@ -0,0 +1,79 @@
+// for persistence
+interface SimpleLayoutTab {
+  type: "tab";
+  light9Element: string;
+}
+export interface SimpleLayout {
+  type: string;
+  weight?: number;
+  children: (SimpleLayout | SimpleLayoutTab)[];
+}
+// for FlexLayout
+interface FullLayoutTab {
+  type: "tab";
+  name: string;
+  component: string;
+}
+interface FullLayout {
+  type: string;
+  weight?: number;
+  children: (FullLayout | FullLayoutTab)[];
+}
+function tabConfigFromSimpleTabName(name: string): FullLayoutTab {
+  return { type: "tab", name: name.replace(/^light9-/, ""), component: name };
+}
+export function simpleLayout(full: FullLayout | FullLayoutTab): SimpleLayout | SimpleLayoutTab {
+  if (full.type == "tab") {
+    return { type: "tab", light9Element: (full as FullLayoutTab).component };
+  } else {
+    return { ...(full as FullLayout), children: (full as FullLayout).children.map(simpleLayout) };
+  }
+}
+export function fullLayout(simple: SimpleLayout | SimpleLayoutTab): FullLayout | FullLayoutTab {
+  if (simple.type == "tab") {
+    return tabConfigFromSimpleTabName((simple as SimpleLayoutTab).light9Element);
+  } else {
+    return { ...(simple as SimpleLayout), children: (simple as SimpleLayout).children.map(fullLayout) };
+  }
+}
+export const persistedLayout: SimpleLayout = {
+  type: "row",
+  children: [
+    // {
+    //   type: "tabset",
+    //   weight: 50,
+    //   children: [
+    //     {
+    //       type: "tab",
+    //       light9Element: "light9-device-settings",
+    //     },
+    //   ],
+    // },
+    // {
+    //   type: "row",
+    //   weight: 50,
+    //   children: [
+    //     {
+    //       type: "tabset",
+    //       weight: 50,
+    //       children: [
+    //         {
+    //           type: "tab",
+    //           light9Element: "light9-fade-ui",
+    //         },
+    //       ],
+    //     },
+    //     {
+    //       type: "tabset",
+    //       weight: 50,
+    //       children: [
+    //         {
+    //           type: "tab",
+    //           light9Element: "light9-collector-ui",
+    //         },
+    //       ],
+    //     },
+    //   ],
+    // },
+  ],
+};