From bd0ff30f2aba1893bd6b77e22b44612d569c0ff8 Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Sun, 27 Jul 2025 15:29:50 -0400 Subject: [PATCH] desk state scanning started --- app.js | 2 +- data/room.js | 4 +- graph.js | 55 +++++++++++++---------- room/room_01/{pass_01 => pass_02}/u3.json | 0 service-worker.js | 2 - types.ts | 7 ++- 6 files changed, 40 insertions(+), 30 deletions(-) rename room/room_01/{pass_01 => pass_02}/u3.json (100%) diff --git a/app.js b/app.js index 4efa2e5..352593c 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.Part); } }, passID) + H("button", { onclick(){ passData.load();console.log(roomData); } }, passID) )) }); diff --git a/data/room.js b/data/room.js index 7a4abd8..97a2831 100644 --- a/data/room.js +++ b/data/room.js @@ -11,7 +11,6 @@ export default Graph( }, part: { - "a nice room": "yep!", p1:"hey", p2:"sup" }, @@ -20,7 +19,8 @@ export default Graph( d1:["Desk 01", ["dev"], "all", {p2:3}, "p1"] }, pass:{ - pass_01:["pass 01"] + pass_01:["pass 01"], + pass_02:["pass 02"] } } } diff --git a/graph.js b/graph.js index 612b359..6358e79 100644 --- a/graph.js +++ b/graph.js @@ -51,7 +51,8 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName) need, time, make:[], - role:[] + role:[], + pass:new Map() }; for(const partId in needObj) @@ -138,12 +139,23 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName) } } } + + const selfPass = this; + Object.entries(DeskList).forEach(([deskID, deskObj])=>{ + Scan(deskObj, selfPass); + }); + this.live = true; }, dump(){ + const selfPass = this; Object.entries(PartList).forEach(([partID, partObj])=>{ - partObj.pass.delete(this); + partObj.pass.delete(selfPass); }); + Object.entries(DeskList).forEach(([deskID, deskObj])=>{ + deskObj.pass.delete(selfPass); + }); + this.live = false; }, live:false @@ -172,45 +184,42 @@ export default function Graph(params) } -const Scan =(desk)=> +/** @type {TYPES.Scanner} */ +const Scan =(desk, pass)=> { - const need = Object.keys(desk.need); - const make = desk.make; - const dirtyNeed = []; const dirtyMake = []; let makeMin = Infinity; let needMax = -Infinity; - for(let i=0; i needMax) needMax = part.time; + const part = desk.need[i]; + const partPassTime = part.pass.get(pass)?.time || 0; + if(partPassTime > needMax) needMax = partPassTime; } - for(let i=0; i makeMin) + const part = desk.need[i]; + const partPassTime = part.pass.get(pass)?.time || 0; + if(partPassTime > makeMin) { - dirtyNeed.push(id); + dirtyNeed.push(i); } } - console.log("scan", dirtyNeed, dirtyMake); - return [dirtyNeed, dirtyMake]; + desk.pass.set(pass, [dirtyNeed, dirtyMake]) }; \ No newline at end of file diff --git a/room/room_01/pass_01/u3.json b/room/room_01/pass_02/u3.json similarity index 100% rename from room/room_01/pass_01/u3.json rename to room/room_01/pass_02/u3.json diff --git a/service-worker.js b/service-worker.js index dad61e4..6b1c891 100644 --- a/service-worker.js +++ b/service-worker.js @@ -29,11 +29,9 @@ async function Interceptor(event) { filePointer = await filePointer.getDirectoryHandle(parts[i], {create: false}); } - console.log("about to get file handle", filePointer); filePointer = await filePointer.getFileHandle(parts[parts.length-1], {create: false}); const file = await filePointer.getFile(); const content = await file.text(); - console.log("responding to", pathname, "with content:", content); return new Response(content, { headers: { 'Content-Type': 'application/javascript', diff --git a/types.ts b/types.ts index fa9f4c1..d2aa750 100644 --- a/types.ts +++ b/types.ts @@ -1,6 +1,6 @@ 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[], 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:Map, need:Desk[], make:Desk[]}; @@ -36,4 +36,7 @@ export type MassDscription= ( params:Record[0]> ) -=>(folder:FileSystemDirectoryHandle)=>Record> \ No newline at end of file +=>(folder:FileSystemDirectoryHandle)=>Record> + + +export type Scanner =(desk:Desk, pass:Pass)=>void; \ No newline at end of file