desk state scanning started
This commit is contained in:
parent
84cb05f9d6
commit
bd0ff30f2a
2
app.js
2
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)
|
||||
))
|
||||
});
|
||||
|
||||
|
||||
@ -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"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
55
graph.js
55
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<need.length; i++)
|
||||
for(let i=0; i<desk.need.length; i++)
|
||||
{
|
||||
const id = need[i];
|
||||
const part = Part.find(id);
|
||||
if(part.time > 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<make.length; i++)
|
||||
for(let i=0; i<desk.make.length; i++)
|
||||
{
|
||||
const id = make[i];
|
||||
const part = Part.find(make[i]);
|
||||
if(part.time < makeMin) makeMin = part.time;
|
||||
if(part.time < needMax)
|
||||
const part = desk.make[i];
|
||||
const partPassTime = part.pass.get(pass)?.time || 0;
|
||||
if(partPassTime < makeMin) makeMin = partPassTime;
|
||||
if(partPassTime < needMax)
|
||||
{
|
||||
dirtyMake.push(id);
|
||||
dirtyMake.push(i);
|
||||
}
|
||||
}
|
||||
|
||||
for(let i=0; i<need.length; i++)
|
||||
for(let i=0; i<desk.need.length; i++)
|
||||
{
|
||||
const id = need[i];
|
||||
const part = Part.find(id);
|
||||
if(part.time > 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])
|
||||
};
|
||||
@ -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',
|
||||
|
||||
7
types.ts
7
types.ts
@ -1,6 +1,6 @@
|
||||
export type User = {name:string, desk:Set<Desk>};
|
||||
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<Pass, [dirtyNeed:number[], dirtyMake:number[]]>, mode:string, role:Role[]};
|
||||
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 Part = {name:string, pass:Map<Pass, {time:number, work:Work[]}>, need:Desk[], make:Desk[]};
|
||||
@ -36,4 +36,7 @@ export type MassDscription=
|
||||
(
|
||||
params:Record<string, Parameters<GraphBuilder>[0]>
|
||||
)
|
||||
=>(folder:FileSystemDirectoryHandle)=>Record<string, ReturnType<GraphBuilder>>
|
||||
=>(folder:FileSystemDirectoryHandle)=>Record<string, ReturnType<GraphBuilder>>
|
||||
|
||||
|
||||
export type Scanner =(desk:Desk, pass:Pass)=>void;
|
||||
Loading…
Reference in New Issue
Block a user