From cf9bb45a627dac85f815b257048425b3f37ec68a Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Mon, 22 Sep 2025 23:06:09 -0400 Subject: [PATCH] rendering --- app.js | 72 ++++++++++++++++++++++++++++++++++++++++---------------- graph.js | 1 + types.ts | 6 +++-- 3 files changed, 57 insertions(+), 22 deletions(-) diff --git a/app.js b/app.js index 7b51a0b..8f171bb 100644 --- a/app.js +++ b/app.js @@ -1,3 +1,5 @@ +/** @import * as TYPES from "./types.ts" */ + import * as FSHandle from "./store-directory-handle.js"; /** @type {(type:string, attributes?:Record, ...children:Array)=>HTMLElement} */ @@ -39,32 +41,15 @@ async function ReloadAndRedraw(errorAction = ()=>{}) } button.setAttribute("disabled", true); button.innerText = "loading..."; + const module = await import("./data/room.js"+"?rand="+Math.random()); + /** @type {Record} */ const rooms = module.default(); button.innerText = "change directory"; console.log("rooms loaded:", rooms); - Object.entries(rooms).forEach(([roomID, roomData])=> - { - const listPass = H("ul"); - Object.entries(roomData.Pass).forEach(([passID, passData])=>{ - listPass.appendChild(H("li", {}, - H("button", { onclick() - { - passData.load(); - console.log(roomData); - globalThis.ROOM=roomData; - } }, passData.name) - )) - }); + Redraw(rooms); - listRoom.appendChild( - H("li", {}, - H("div", {}, roomID), - listPass - ) - ); - }) } catch(e) { @@ -75,6 +60,53 @@ async function ReloadAndRedraw(errorAction = ()=>{}) } +function Redraw(rooms) +{ + Object.entries(rooms).forEach(([roomID, roomData])=> + { + const listPass = H("ul"); + Object.entries(roomData.Pass).forEach(([passID, passData])=>{ + + listPass.appendChild(H("li", {}, + H("button", { onclick:async()=> + { + await passData.load(); + globalThis.ROOM=roomData; + Redraw(rooms) + } }, passData.name), + )) + }); + + + const listPart = H("ul"); + Object.entries(roomData.Part).forEach(([partId, partData])=>{ + + const listWork = H("dl"); + + partData.pass.entries().forEach(([pass, passMapper])=>{ + listWork.appendChild(H("dt", {}, pass.name)) + passMapper.work.forEach((w)=>{ + listWork.appendChild(H("dd", {}, w.join(" "))) + }) + }) + + listPart.appendChild(H("li", {}, + H("h2", {}, partData.name), + listWork + )); + }) + + listRoom.innerHTML = ""; + listRoom.appendChild( + H("li", {}, + H("div", {}, roomID), + listPass, + H("div", {}, listPart) + ) + ); + }) +} + await ReloadAndRedraw(); button.addEventListener("click", async()=> diff --git a/graph.js b/graph.js index f8bc5d2..c4b6459 100644 --- a/graph.js +++ b/graph.js @@ -151,6 +151,7 @@ function Builder({user, role, part, desk, pass}, folderName) } } + console.log("load complete", PartList); // update the graph Object.values(DeskList).forEach((deskObj)=>Scan(deskObj, passObj)); diff --git a/types.ts b/types.ts index f6e979f..e35a01b 100644 --- a/types.ts +++ b/types.ts @@ -23,7 +23,9 @@ export type GraphBuilder= }, folderName:string ) -=>{ +=>GraphParts + +export type GraphParts = { Desk:Record, Part:Record, User:Record, @@ -35,7 +37,7 @@ export type MassDscription= ( params:Record[0]> ) -=>()=>Record> +=>()=>Record export type UserPassFile = Record>