diff --git a/app.js b/app.js index 9f9edd8..355112f 100644 --- a/app.js +++ b/app.js @@ -204,7 +204,7 @@ function Desks(inDesks) // at least one but not all need fields are empty const caution = scan.need_empty.length>0 && scan.need_empty.length @@ -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)=> { const partPass = part.pass.get(pass); diff --git a/deep/mock-user-folder/graph/room.js b/deep/mock-user-folder/graph/room.js index 3e13cf2..92367a2 100644 --- a/deep/mock-user-folder/graph/room.js +++ b/deep/mock-user-folder/graph/room.js @@ -27,7 +27,7 @@ export default CreateAllRooms({ }, desk:{ 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" ] }, pass:{ diff --git a/graph/graph.js b/graph/graph.js index 9a9bd74..0ba3af7 100644 --- a/graph/graph.js +++ b/graph/graph.js @@ -264,20 +264,13 @@ Loop parts: } if(time > needMax) needMax = time; - - // 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) + if(!time) emptyNeed.push(i); } // update makeMin AND dirtyMakes for(let i=0; i 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) { - // use estMax + stamp = estMax; } - else - { - // use estSum - } - - desk.pass.set(pass, {need_dirty:dirtyNeed, make_dirty:dirtyMake, need_empty:emptyNeed, make_empty:emptyMake}) + desk.pass.set(pass, {need_dirty:dirtyNeed, make_dirty:dirtyMake, need_empty:emptyNeed, make_empty:emptyMake, due_date:isFinite(stamp) ? new Date(stamp) : undefined}) }; \ No newline at end of file diff --git a/graph/types.ts b/graph/types.ts index e8fc4ea..9ae2691 100644 --- a/graph/types.ts +++ b/graph/types.ts @@ -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, dump:()=>void}; export type Part = {name:string, id:string, pass:MapPromise}>, need:Desk[], make:Desk[], loop?:boolean}; 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= <