Files @ 69ca2b2fc133
Branch filter:

Location: light9/web/tiledLayoutPersistence.ts

drewp@bigasterisk.com
overcomplicated attempt at persisting the pane layout in the rdf graph

this was hard because we have to somehow wait for the graph to load before config'ing the panes
// 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",
    //         },
    //       ],
    //     },
    //   ],
    // },
  ],
};