From 276e09b2ca2619873a3cca926863f4c899a34ad3 Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Mon, 28 Jul 2025 21:15:35 -0400 Subject: [PATCH] work addition working --- app.js | 2 +- data/room.js | 2 +- graph.js | 41 +++++++++++++++++++++++------------------ types.ts | 4 ++-- 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/app.js b/app.js index 352593c..b6bec80 100644 --- a/app.js +++ b/app.js @@ -39,7 +39,7 @@ async function getFolderHandle(dirHandle) const listPass = H("ul"); Object.entries(roomData.Pass).forEach(([passID, passData])=>{ listPass.appendChild(H("li", {}, - H("button", { onclick(){ passData.load();console.log(roomData); } }, passID) + H("button", { onclick(){ passData.load();console.log(roomData);globalThis.ROOM=roomData; } }, passID) )) }); diff --git a/data/room.js b/data/room.js index 97a2831..a905132 100644 --- a/data/room.js +++ b/data/room.js @@ -16,7 +16,7 @@ export default Graph( }, desk: { - d1:["Desk 01", ["dev"], "all", {p2:3}, "p1"] + d1:["Desk 01", ["dev"], "all", {p1:3}, "p2"] }, pass:{ pass_01:["pass 01"], diff --git a/graph.js b/graph.js index a73568f..71a63a0 100644 --- a/graph.js +++ b/graph.js @@ -82,6 +82,7 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName) // Apply passes /** @type {Record} */ + //@ts-ignore const PassList = pass; for(let passID in pass) { @@ -94,6 +95,21 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName) const roomFolder = await folderHandle.getDirectoryHandle(folderName); const passFolder = await roomFolder.getDirectoryHandle(passID); + Object.entries(PartList).forEach(([partID, partObj])=> + { + partObj.pass.set(passObj, {time:0, work:[], make(user, data) + { + this.time = Date.now(); + this.work.push(/** @type {TYPES.Work}*/([this.time, data, user])); + partObj.make.forEach((arg)=>{Scan(arg, passObj)}); + partObj.need.forEach((arg)=>{Scan(arg, passObj)}); + }}); + }); + Object.entries(DeskList).forEach(([deskID, deskObj])=> + { + deskObj.pass.set(passObj, {need:[], make:[]}); + }); + for await (const [_, userFile] of passFolder.entries()) { if(userFile.name.endsWith(".json")) @@ -116,27 +132,16 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName) condensedWork.push(userObject); }); - const partObj = PartList[partID] - - let passCheck = partObj.pass.get(this); - if(!passCheck) + const passCheck = PartList[partID].pass.get(this); + if(passCheck) { - passCheck = {time:0, work:[], make(user, data) + if(latest > passCheck.time) { - this.time = Date.now(); - this.work.push(/** @type {TYPES.Work}*/([user, data, this.time])); - partObj.make.forEach((arg)=>{Scan(arg, passObj)}); - partObj.need.forEach((arg)=>{Scan(arg, passObj)}); - }} - partObj.pass.set(this, passCheck); + passCheck.time = latest; + } + passCheck.work = /** @type {TYPES.Work[]}*/(payload); } - if(latest > passCheck.time) - { - passCheck.time = latest; - } - - passCheck.work = /** @type {TYPES.Work[]}*/(payload); }) } catch (e) @@ -227,5 +232,5 @@ const Scan =(desk, pass)=> } } - desk.pass.set(pass, [dirtyNeed, dirtyMake]) + desk.pass.set(pass, {need:dirtyNeed, make:dirtyMake}) }; \ No newline at end of file diff --git a/types.ts b/types.ts index afcc5e1..5060952 100644 --- a/types.ts +++ b/types.ts @@ -1,9 +1,9 @@ export type User = {name:string, desk:Set}; export type Role = {name:string, user:User[]}; -export type Desk = {name:string, need:Part[], time:number[], make:Part[], pass:Map, mode:string, role:Role[]}; +export type Desk = {name:string, need:Part[], time:number[], make:Part[], pass:Map, mode:string, role:Role[]}; export type Work = [user:User, time:number, data:string]; export type Pass = {name:string, path:string, live:boolean, load:()=>Promise, dump:()=>void}; -export type Part = {name:string, pass:Mapvoid}>, need:Desk[], make:Desk[]}; +export type Part = {name:string, pass:Mapvoid}>, need:Desk[], make:Desk[]}; export type GraphBuilder= <