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");
|
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.Part); } }, passID)
|
H("button", { onclick(){ passData.load();console.log(roomData); } }, passID)
|
||||||
))
|
))
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,6 @@ export default Graph(
|
|||||||
},
|
},
|
||||||
part:
|
part:
|
||||||
{
|
{
|
||||||
"a nice room": "yep!",
|
|
||||||
p1:"hey",
|
p1:"hey",
|
||||||
p2:"sup"
|
p2:"sup"
|
||||||
},
|
},
|
||||||
@ -20,7 +19,8 @@ export default Graph(
|
|||||||
d1:["Desk 01", ["dev"], "all", {p2:3}, "p1"]
|
d1:["Desk 01", ["dev"], "all", {p2:3}, "p1"]
|
||||||
},
|
},
|
||||||
pass:{
|
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,
|
need,
|
||||||
time,
|
time,
|
||||||
make:[],
|
make:[],
|
||||||
role:[]
|
role:[],
|
||||||
|
pass:new Map()
|
||||||
};
|
};
|
||||||
|
|
||||||
for(const partId in needObj)
|
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;
|
this.live = true;
|
||||||
},
|
},
|
||||||
dump(){
|
dump(){
|
||||||
|
const selfPass = this;
|
||||||
Object.entries(PartList).forEach(([partID, partObj])=>{
|
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;
|
this.live = false;
|
||||||
},
|
},
|
||||||
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 dirtyNeed = [];
|
||||||
const dirtyMake = [];
|
const dirtyMake = [];
|
||||||
|
|
||||||
let makeMin = Infinity;
|
let makeMin = Infinity;
|
||||||
let needMax = -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 = desk.need[i];
|
||||||
const part = Part.find(id);
|
const partPassTime = part.pass.get(pass)?.time || 0;
|
||||||
if(part.time > needMax) needMax = part.time;
|
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 = desk.make[i];
|
||||||
const part = Part.find(make[i]);
|
const partPassTime = part.pass.get(pass)?.time || 0;
|
||||||
if(part.time < makeMin) makeMin = part.time;
|
if(partPassTime < makeMin) makeMin = partPassTime;
|
||||||
if(part.time < needMax)
|
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 = desk.need[i];
|
||||||
const part = Part.find(id);
|
const partPassTime = part.pass.get(pass)?.time || 0;
|
||||||
if(part.time > makeMin)
|
if(partPassTime > makeMin)
|
||||||
{
|
{
|
||||||
dirtyNeed.push(id);
|
dirtyNeed.push(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("scan", dirtyNeed, dirtyMake);
|
desk.pass.set(pass, [dirtyNeed, dirtyMake])
|
||||||
return [dirtyNeed, dirtyMake];
|
|
||||||
};
|
};
|
||||||
@ -29,11 +29,9 @@ async function Interceptor(event)
|
|||||||
{
|
{
|
||||||
filePointer = await filePointer.getDirectoryHandle(parts[i], {create: false});
|
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});
|
filePointer = await filePointer.getFileHandle(parts[parts.length-1], {create: false});
|
||||||
const file = await filePointer.getFile();
|
const file = await filePointer.getFile();
|
||||||
const content = await file.text();
|
const content = await file.text();
|
||||||
console.log("responding to", pathname, "with content:", content);
|
|
||||||
return new Response(content, {
|
return new Response(content, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/javascript',
|
'Content-Type': 'application/javascript',
|
||||||
|
|||||||
7
types.ts
7
types.ts
@ -1,6 +1,6 @@
|
|||||||
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[], 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[]}>, need:Desk[], make:Desk[]};
|
||||||
@ -36,4 +36,7 @@ export type MassDscription=
|
|||||||
(
|
(
|
||||||
params:Record<string, Parameters<GraphBuilder>[0]>
|
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