work addition working

This commit is contained in:
Seth Trowbridge 2025-07-28 21:15:35 -04:00
parent 32923dee59
commit 276e09b2ca
4 changed files with 27 additions and 22 deletions

2
app.js
View File

@ -39,7 +39,7 @@ async function getFolderHandle(dirHandle)
const listPass = H("ul"); const listPass = H("ul");
Object.entries(roomData.Pass).forEach(([passID, passData])=>{ Object.entries(roomData.Pass).forEach(([passID, passData])=>{
listPass.appendChild(H("li", {}, 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)
)) ))
}); });

View File

@ -16,7 +16,7 @@ export default Graph(
}, },
desk: desk:
{ {
d1:["Desk 01", ["dev"], "all", {p2:3}, "p1"] d1:["Desk 01", ["dev"], "all", {p1:3}, "p2"]
}, },
pass:{ pass:{
pass_01:["pass 01"], pass_01:["pass 01"],

View File

@ -82,6 +82,7 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName)
// Apply passes // Apply passes
/** @type {Record<string, TYPES.Pass>} */ /** @type {Record<string, TYPES.Pass>} */
//@ts-ignore
const PassList = pass; const PassList = pass;
for(let passID in 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 roomFolder = await folderHandle.getDirectoryHandle(folderName);
const passFolder = await roomFolder.getDirectoryHandle(passID); 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()) for await (const [_, userFile] of passFolder.entries())
{ {
if(userFile.name.endsWith(".json")) if(userFile.name.endsWith(".json"))
@ -116,27 +132,16 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName)
condensedWork.push(userObject); condensedWork.push(userObject);
}); });
const partObj = PartList[partID] const passCheck = PartList[partID].pass.get(this);
if(passCheck)
let passCheck = partObj.pass.get(this);
if(!passCheck)
{ {
passCheck = {time:0, work:[], make(user, data) if(latest > passCheck.time)
{ {
this.time = Date.now(); passCheck.time = latest;
this.work.push(/** @type {TYPES.Work}*/([user, data, this.time])); }
partObj.make.forEach((arg)=>{Scan(arg, passObj)}); passCheck.work = /** @type {TYPES.Work[]}*/(payload);
partObj.need.forEach((arg)=>{Scan(arg, passObj)});
}}
partObj.pass.set(this, passCheck);
} }
if(latest > passCheck.time)
{
passCheck.time = latest;
}
passCheck.work = /** @type {TYPES.Work[]}*/(payload);
}) })
} }
catch (e) catch (e)
@ -227,5 +232,5 @@ const Scan =(desk, pass)=>
} }
} }
desk.pass.set(pass, [dirtyNeed, dirtyMake]) desk.pass.set(pass, {need:dirtyNeed, make:dirtyMake})
}; };

View File

@ -1,9 +1,9 @@
export type User = {name:string, desk:Set<Desk>}; export type User = {name:string, desk:Set<Desk>};
export type Role = {name:string, user:User[]}; export type Role = {name:string, user:User[]};
export type Desk = {name:string, need:Part[], time:number[], make:Part[], pass:Map<Pass, [dirtyNeed:number[], dirtyMake:number[]]>, mode:string, role:Role[]}; export type Desk = {name:string, need:Part[], time:number[], make:Part[], pass:Map<Pass, {need:number[], make:number[]}>, mode:string, role:Role[]};
export type Work = [user:User, time:number, data:string]; export type Work = [user:User, time:number, data:string];
export type Pass = {name:string, path:string, live:boolean, load:()=>Promise<void>, dump:()=>void}; export type Pass = {name:string, path:string, live:boolean, load:()=>Promise<void>, dump:()=>void};
export type Part = {name:string, pass:Map<Pass, {time:number, work:Work[], make:(user:User, time:number, data:string)=>void}>, need:Desk[], make:Desk[]}; export type Part = {name:string, pass:Map<Pass, {time:number, work:Work[], make:(user:User, data:string)=>void}>, need:Desk[], make:Desk[]};
export type GraphBuilder= export type GraphBuilder=
< <