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