due date working
This commit is contained in:
parent
dfffa59094
commit
ae89ac642e
10
app.js
10
app.js
@ -204,7 +204,7 @@ function Desks(inDesks)
|
|||||||
|
|
||||||
// at least one but not all need fields are empty
|
// at least one but not all need fields are empty
|
||||||
const caution = scan.need_empty.length>0 && scan.need_empty.length<desk.need.length;
|
const caution = scan.need_empty.length>0 && scan.need_empty.length<desk.need.length;
|
||||||
|
|
||||||
work.push(DOM.tr(
|
work.push(DOM.tr(
|
||||||
DOM.td(pass.name),
|
DOM.td(pass.name),
|
||||||
desk.need.map((part, index, array)=>
|
desk.need.map((part, index, array)=>
|
||||||
@ -236,7 +236,13 @@ function Desks(inDesks)
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
DOM.td(Div.Icon("⇉")),
|
DOM.td(
|
||||||
|
Div.Icon("⇉"),
|
||||||
|
scan.due_date ? Div.Part(
|
||||||
|
scan.due_date.toLocaleDateString(),
|
||||||
|
scan.due_date.toLocaleTimeString()
|
||||||
|
) : " "
|
||||||
|
),
|
||||||
desk.make.map((part, index, array)=>
|
desk.make.map((part, index, array)=>
|
||||||
{
|
{
|
||||||
const partPass = part.pass.get(pass);
|
const partPass = part.pass.get(pass);
|
||||||
|
|||||||
@ -27,7 +27,7 @@ export default CreateAllRooms({
|
|||||||
},
|
},
|
||||||
desk:{
|
desk:{
|
||||||
d1:["Write page metas", ["admin", "write"], { }, "p1", "p2"],
|
d1:["Write page metas", ["admin", "write"], { }, "p1", "p2"],
|
||||||
d2:["Build Page preview", ["admin", "dev" ], {p1:1, p2:1, p5:1}, "p3", "p4"],
|
d2:["Build Page preview", ["admin", "dev" ], {p1:1, p2:1, p5:4}, "p3", "p4"],
|
||||||
d3:["Proof Page", ["admin", "write"], {p3:1, }, "p5" ]
|
d3:["Proof Page", ["admin", "write"], {p3:1, }, "p5" ]
|
||||||
},
|
},
|
||||||
pass:{
|
pass:{
|
||||||
|
|||||||
@ -264,20 +264,13 @@ Loop parts:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(time > needMax) needMax = time;
|
if(time > needMax) needMax = time;
|
||||||
|
if(!time) emptyNeed.push(i);
|
||||||
// estimation
|
|
||||||
if(time < estMin) estMin = time;
|
|
||||||
const projectedTime = time + desk.time[i];
|
|
||||||
estSum += desk.time[i];
|
|
||||||
if(projectedTime > estMax) estMax = projectedTime;
|
|
||||||
|
|
||||||
if(!time) emptyNeed.push(i)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// update makeMin AND dirtyMakes
|
// update makeMin AND dirtyMakes
|
||||||
for(let i=0; i<desk.make.length; i++)
|
for(let i=0; i<desk.make.length; i++)
|
||||||
{
|
{
|
||||||
const [time, value, part] = lookup(desk.make[i]);
|
const [time] = lookup(desk.make[i]);
|
||||||
|
|
||||||
if(time < makeMin) makeMin = time;
|
if(time < makeMin) makeMin = time;
|
||||||
if(time < needMax) dirtyMake.push(i);
|
if(time < needMax) dirtyMake.push(i);
|
||||||
@ -298,17 +291,24 @@ Loop parts:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(time > makeMin) dirtyNeed.push(i);
|
if(time > makeMin)
|
||||||
|
{
|
||||||
|
dirtyNeed.push(i);
|
||||||
|
|
||||||
|
// estimation
|
||||||
|
if(time < estMin) estMin = time;
|
||||||
|
const allottedTime = desk.time[i] * 1000 * 60 * 60;
|
||||||
|
const projectedTime = time + allottedTime;
|
||||||
|
estSum += allottedTime;
|
||||||
|
if(projectedTime > estMax) estMax = projectedTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
estSum += estMin;
|
||||||
|
let stamp = estSum;
|
||||||
if(estMax > estSum)
|
if(estMax > estSum)
|
||||||
{
|
{
|
||||||
// use estMax
|
stamp = estMax;
|
||||||
}
|
}
|
||||||
else
|
desk.pass.set(pass, {need_dirty:dirtyNeed, make_dirty:dirtyMake, need_empty:emptyNeed, make_empty:emptyMake, due_date:isFinite(stamp) ? new Date(stamp) : undefined})
|
||||||
{
|
|
||||||
// use estSum
|
|
||||||
}
|
|
||||||
|
|
||||||
desk.pass.set(pass, {need_dirty:dirtyNeed, make_dirty:dirtyMake, need_empty:emptyNeed, make_empty:emptyMake})
|
|
||||||
};
|
};
|
||||||
@ -4,7 +4,7 @@ export type Desk = {name:string, id:string, need:Part[], time:number[], make:Par
|
|||||||
export type Pass = {name:string, id:string, path:string, live:boolean, load:()=>Promise<void>, dump:()=>void};
|
export type Pass = {name:string, id:string, path:string, live:boolean, load:()=>Promise<void>, dump:()=>void};
|
||||||
export type Part = {name:string, id:string, pass:Map<Pass, {time:number, work:Work[], make:(user:User, data:string)=>Promise<void>}>, need:Desk[], make:Desk[], loop?:boolean};
|
export type Part = {name:string, id:string, pass:Map<Pass, {time:number, work:Work[], make:(user:User, data:string)=>Promise<void>}>, need:Desk[], make:Desk[], loop?:boolean};
|
||||||
export type Work = [time:number, data:string, user:User];
|
export type Work = [time:number, data:string, user:User];
|
||||||
export type Scan = {need_dirty:number[], make_dirty:number[], need_empty:number[], make_empty:number[]}
|
export type Scan = {need_dirty:number[], make_dirty:number[], need_empty:number[], make_empty:number[], due_date?:Date}
|
||||||
|
|
||||||
export type GraphBuilder=
|
export type GraphBuilder=
|
||||||
<
|
<
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user