Changeset - 9d47c44d4ae4
[Not reviewed]
default
0 5 1
drewp@bigasterisk.com - 19 months ago 2023-06-08 21:54:26
drewp@bigasterisk.com
experimental tiled-layout home page
6 files changed with 144 insertions and 2 deletions:
0 comments (0 inline, 0 general)
light9/web/TiledHome.ts
Show inline comments
 
new file 100644
 
import * as React from "react";
 
import { createRoot } from "react-dom/client";
 
import * as FlexLayout from "flexlayout-react";
 
export { Light9DeviceSettings } from "./live/Light9DeviceSettings";
 
export { Light9CollectorUi } from "./collector/Light9CollectorUi";
 

	
 
const config:FlexLayout.IJsonModel = {
 
  global: {},
 
  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" }],
 
      },
 
    ],
 
  },
 
};
 

	
 
const e = React.createElement;
 

	
 
// see https://github.com/lit/lit/tree/main/packages/labs/react
 

	
 
class Main extends React.Component {
 
  constructor(props) {
 
    super(props);
 
    this.state = { model: FlexLayout.Model.fromJson(config) };
 
  }
 

	
 
  factory = (node) => {
 
    var component = node.getComponent();
 
    return e(component, null, "");
 
  };
 

	
 
  render() {
 
    return e(FlexLayout.Layout, { model: this.state.model, factory: this.factory });
 
  }
 
}
 

	
 
const root = createRoot(document.getElementById("container")!);
 
root.render(React.createElement(Main));
light9/web/index.html
Show inline comments
 
@@ -4,7 +4,10 @@
 
    <title>light9 home</title>
 
    <meta charset="utf-8" />
 
    <link rel="stylesheet" href="style.css" />
 
    <link rel="stylesheet" href="flexlayout-react/style/dark.css" />
 
    <script type="module" src="TiledHome.ts"></script>
 
  </head>
 
  <body>
 
    <div id="container"></div>
 
  </body>
 
</html>
light9/web/style.css
Show inline comments
 
body {
 
  background: black;
 
  color: white;
 
  --color-background: black;
 
  --color-text: white;
 
  font-family: sans-serif;
 
}
 

	
 
h1 {
 
  margin: 0;
 
}
light9/web/vite.config.ts
Show inline comments
 
@@ -3,7 +3,7 @@ import { defineConfig } from "vite";
 
export default defineConfig({
 
  base: "/",
 
  root: "./light9/web",
 
  // publicDir: ".",
 
  publicDir: "../../node_modules",
 
  server: {
 
    host: "0.0.0.0",
 
    strictPort: true,
package.json
Show inline comments
 
@@ -25,6 +25,7 @@
 
    "async": "^3.2.4",
 
    "d3": "^7.8.4",
 
    "debug": "^4.3.4",
 
    "flexlayout-react": "^0.7.7",
 
    "fpsmeter": "^0.3.1",
 
    "immutable": "^4.3.0",
 
    "knockout": "^3.5.1",
 
@@ -32,6 +33,8 @@
 
    "n3": "^1.16.4",
 
    "onecolor": "^4.0.0",
 
    "parse-prometheus-text-format": "^1.1.1",
 
    "react": "^18.2.0",
 
    "react-dom": "^18.2.0",
 
    "reconnectingwebsocket": "^1.0.0",
 
    "sub-events": "^1.9.0",
 
    "sylvester": "^0.0.21",
 
@@ -40,5 +43,9 @@
 
    "vite": "^4.3.7",
 
    "vite-plugin-rewrite-all": "^1.0.1",
 
    "vitest": "^0.31.1"
 
  },
 
  "devDependencies": {
 
    "@types/react": "^18.2.9",
 
    "@types/react-dom": "^18.2.4"
 
  }
 
}
pnpm-lock.yaml
Show inline comments
 
@@ -12,11 +12,14 @@ specifiers:
 
  '@types/fpsmeter': ^0.3.31
 
  '@types/n3': ^1.10.4
 
  '@types/node': ^20.2.0
 
  '@types/react': ^18.2.9
 
  '@types/react-dom': ^18.2.4
 
  '@types/reconnectingwebsocket': ^1.0.7
 
  '@types/underscore': ^1.11.4
 
  async: ^3.2.4
 
  d3: ^7.8.4
 
  debug: ^4.3.4
 
  flexlayout-react: ^0.7.7
 
  fpsmeter: ^0.3.1
 
  immutable: ^4.3.0
 
  knockout: ^3.5.1
 
@@ -24,6 +27,8 @@ specifiers:
 
  n3: ^1.16.4
 
  onecolor: ^4.0.0
 
  parse-prometheus-text-format: ^1.1.1
 
  react: ^18.2.0
 
  react-dom: ^18.2.0
 
  reconnectingwebsocket: ^1.0.0
 
  sub-events: ^1.9.0
 
  sylvester: ^0.0.21
 
@@ -50,6 +55,7 @@ dependencies:
 
  async: 3.2.4
 
  d3: 7.8.4
 
  debug: 4.3.4
 
  flexlayout-react: 0.7.7_biqbaboplfbrettd7655fr4n2y
 
  fpsmeter: 0.3.1
 
  immutable: 4.3.0
 
  knockout: 3.5.1
 
@@ -57,6 +63,8 @@ dependencies:
 
  n3: 1.16.4
 
  onecolor: 4.0.0
 
  parse-prometheus-text-format: 1.1.1
 
  react: 18.2.0
 
  react-dom: 18.2.0_react@18.2.0
 
  reconnectingwebsocket: 1.0.0
 
  sub-events: 1.9.0
 
  sylvester: 0.0.21
 
@@ -66,6 +74,10 @@ dependencies:
 
  vite-plugin-rewrite-all: 1.0.1_vite@4.3.7
 
  vitest: 0.31.1
 

	
 
devDependencies:
 
  '@types/react': 18.2.9
 
  '@types/react-dom': 18.2.4
 

	
 
packages:
 

	
 
  /@esbuild/android-arm/0.17.19:
 
@@ -871,10 +883,32 @@ packages:
 
    resolution: {integrity: sha512-3iD2jaCCziTx04uudpJKwe39QxXgSUnpxXSvRQjRvHPxFQfmfP4NXIm/NURVeNlTCc+ru4WqjYGTmpXrW9uMlw==}
 
    dev: false
 

	
 
  /@types/prop-types/15.7.5:
 
    resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
 
    dev: true
 

	
 
  /@types/react-dom/18.2.4:
 
    resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==}
 
    dependencies:
 
      '@types/react': 18.2.9
 
    dev: true
 

	
 
  /@types/react/18.2.9:
 
    resolution: {integrity: sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==}
 
    dependencies:
 
      '@types/prop-types': 15.7.5
 
      '@types/scheduler': 0.16.3
 
      csstype: 3.1.2
 
    dev: true
 

	
 
  /@types/reconnectingwebsocket/1.0.7:
 
    resolution: {integrity: sha512-17pnIZsGi9P8YNp7c0ueY2WEauSxDivuFeGuMuPPJMA3qk34CnFgBHGqkxgun3HUifEuwNr8cf+9rU7vSd8i5g==}
 
    dev: false
 

	
 
  /@types/scheduler/0.16.3:
 
    resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
 
    dev: true
 

	
 
  /@types/trusted-types/2.0.3:
 
    resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==}
 
    dev: false
 
@@ -1023,6 +1057,10 @@ packages:
 
    engines: {node: '>=0.8'}
 
    dev: false
 

	
 
  /csstype/3.1.2:
 
    resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
 
    dev: true
 

	
 
  /d3-array/3.2.3:
 
    resolution: {integrity: sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==}
 
    engines: {node: '>=12'}
 
@@ -1356,6 +1394,16 @@ packages:
 
    resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
 
    dev: false
 

	
 
  /flexlayout-react/0.7.7_biqbaboplfbrettd7655fr4n2y:
 
    resolution: {integrity: sha512-BOS+lueEBdLVsrB2Jekr/z4WIuerMhkDhYcT+3E56o/ZHz6xkmv8YEkB9qimrGxRt2uAnozzH5VPUnxXMQCu0Q==}
 
    peerDependencies:
 
      react: ^18.0.0
 
      react-dom: ^18.0.0
 
    dependencies:
 
      react: 18.2.0
 
      react-dom: 18.2.0_react@18.2.0
 
    dev: false
 

	
 
  /fpsmeter/0.3.1:
 
    resolution: {integrity: sha512-i3zzNJwGkA+9WWIXpAtP0TCN64eO5VkKQgirYE7ZCVqyC3NfUPszU35R044fmSCjiMqefiBs5NiGKvD7lFJ87Q==}
 
    dev: false
 
@@ -1397,6 +1445,10 @@ packages:
 
    engines: {node: '>= 0.8'}
 
    dev: false
 

	
 
  /js-tokens/4.0.0:
 
    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
 
    dev: false
 

	
 
  /jsonc-parser/3.2.0:
 
    resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
 
    dev: false
 
@@ -1436,6 +1488,13 @@ packages:
 
    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
 
    dev: false
 

	
 
  /loose-envify/1.4.0:
 
    resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
 
    hasBin: true
 
    dependencies:
 
      js-tokens: 4.0.0
 
    dev: false
 

	
 
  /loupe/2.3.6:
 
    resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
 
    dependencies:
 
@@ -1561,10 +1620,27 @@ packages:
 
      '@rdfjs/types': 1.1.0
 
    dev: false
 

	
 
  /react-dom/18.2.0_react@18.2.0:
 
    resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
 
    peerDependencies:
 
      react: ^18.2.0
 
    dependencies:
 
      loose-envify: 1.4.0
 
      react: 18.2.0
 
      scheduler: 0.23.0
 
    dev: false
 

	
 
  /react-is/17.0.2:
 
    resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
 
    dev: false
 

	
 
  /react/18.2.0:
 
    resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
 
    engines: {node: '>=0.10.0'}
 
    dependencies:
 
      loose-envify: 1.4.0
 
    dev: false
 

	
 
  /readable-stream/4.4.0:
 
    resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==}
 
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 
@@ -1599,6 +1675,12 @@ packages:
 
    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
 
    dev: false
 

	
 
  /scheduler/0.23.0:
 
    resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==}
 
    dependencies:
 
      loose-envify: 1.4.0
 
    dev: false
 

	
 
  /semver/7.5.1:
 
    resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==}
 
    engines: {node: '>=10'}
0 comments (0 inline, 0 general)