work addition started

This commit is contained in:
Seth Trowbridge 2025-07-28 17:15:54 -04:00
parent bd0ff30f2a
commit 32923dee59
2 changed files with 22 additions and 16 deletions

View File

@ -82,14 +82,12 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName)
// Apply passes // Apply passes
/** @type {Record<string, TYPES.Pass>} */ /** @type {Record<string, TYPES.Pass>} */
const PassList = {}; const PassList = pass;
for(let passID in pass) for(let passID in pass)
{ {
const [passName] = pass[passID];
/** @type {TYPES.Pass} */ /** @type {TYPES.Pass} */
PassList[passID] = { const passObj = {
name: passName, name: pass[passID][0],
path:passID, path:passID,
async load(){ async load(){
@ -118,11 +116,19 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName)
condensedWork.push(userObject); condensedWork.push(userObject);
}); });
let passCheck = PartList[partID].pass.get(this); const partObj = PartList[partID]
let passCheck = partObj.pass.get(this);
if(!passCheck) if(!passCheck)
{ {
passCheck = {time:0, work:[]} passCheck = {time:0, work:[], make(user, data)
PartList[partID].pass.set(this, passCheck); {
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);
} }
if(latest > passCheck.time) if(latest > passCheck.time)
@ -130,7 +136,7 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName)
passCheck.time = latest; passCheck.time = latest;
} }
passCheck.work = /** @type {TYPES.Work[]}*/(payload) passCheck.work = /** @type {TYPES.Work[]}*/(payload);
}) })
} }
catch (e) catch (e)
@ -140,26 +146,26 @@ function Builder({user, role, part, desk, pass}, folderHandle, folderName)
} }
} }
const selfPass = this;
Object.entries(DeskList).forEach(([deskID, deskObj])=>{ Object.entries(DeskList).forEach(([deskID, deskObj])=>{
Scan(deskObj, selfPass); Scan(deskObj, passObj);
}); });
this.live = true; this.live = true;
}, },
dump(){ dump(){
const selfPass = this;
Object.entries(PartList).forEach(([partID, partObj])=>{ Object.entries(PartList).forEach(([partID, partObj])=>{
partObj.pass.delete(selfPass); partObj.pass.delete(passObj);
}); });
Object.entries(DeskList).forEach(([deskID, deskObj])=>{ Object.entries(DeskList).forEach(([deskID, deskObj])=>{
deskObj.pass.delete(selfPass); deskObj.pass.delete(passObj);
}); });
this.live = false; this.live = false;
}, },
live:false live:false
}; };
PassList[passID] = passObj;
} }
return { return {

View File

@ -2,8 +2,8 @@ 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, [dirtyNeed:number[], dirtyMake: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[]}>, need:Desk[], make:Desk[]}; 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 GraphBuilder= export type GraphBuilder=
< <