fix dirty rendering

This commit is contained in:
Seth Trowbridge 2025-10-31 15:59:14 -04:00
parent dee5328d71
commit 8a58cfcba4
3 changed files with 29 additions and 20 deletions

32
app.js
View File

@ -54,7 +54,7 @@ function Room(room_id, graphParts)
Div.Plain("Passes:"), Div.Plain("Passes:"),
Object.entries(graphParts.Pass).map(([pass_id, pass])=>{ Object.entries(graphParts.Pass).map(([pass_id, pass])=>{
return ()=>{ return ()=>{
console.log("rerendering...", rerender.val) console.log("rerendering...", rerender.rawVal);
return Div.Plain( return Div.Plain(
Div.Title( Div.Title(
DOM.div.Plain(pass.name), DOM.div.Plain(pass.name),
@ -82,23 +82,29 @@ function Room(room_id, graphParts)
rerender.val; rerender.val;
const work = [] const work = []
for(const [_pass_ref, data] of part.pass) for(const [pass, data] of part.pass)
{ {
work.push(Div.Part( work.push(Div.Part(
DOM.h5("Pass:", _pass_ref.name), DOM.h5("Pass:", pass.name),
DOM.p(data.time), DOM.p(data.time),
data.work.map(([time, data, user])=>Div.Plain( data.work.map(([time, data, user])=>Div.Plain(
DOM.span(time), DOM.span(time),
" ", " ",
DOM.strong(data), DOM.strong(data),
)) )),
Div.Plain(
DOM.button({onclick(){
data.make({}, "NEW");
rerender.val++
}}, "Add work!")
)
)) ))
} }
return Div.Part( return Div.Part(
DOM.h3("Part:", part.name), DOM.h3(part.name),
...work ...work,
); );
} }
@ -113,7 +119,7 @@ function Room(room_id, graphParts)
rerender.val; rerender.val;
/** @type {(part:TYPES.Part, index:number, pass:TYPES.Pass, dirty:TYPES.Flag)=>HTMLElement|null} */ /** @type {(part:TYPES.Part, index:number, pass:TYPES.Pass, dirty:number[])=>HTMLElement|null} */
const Iterator = (part, index, pass, dirty)=>{ const Iterator = (part, index, pass, dirty)=>{
const partPass = part.pass.get(pass); const partPass = part.pass.get(pass);
@ -122,10 +128,9 @@ function Room(room_id, graphParts)
const time = partPass.time; const time = partPass.time;
const latest = partPass.work.find(t=>t[0] == time); const latest = partPass.work.find(t=>t[0] == time);
return Div.Plain( return Div.Plain(
part.name, part.name,
DOM.p( dirty.need.includes(index) ? "Dirty" : "Good!" ), DOM.p( dirty.includes(index) ? "Dirty" : "Good!" ),
Div.Part( Div.Part(
time, " ", latest?.[1] || "" time, " ", latest?.[1] || ""
) )
@ -137,21 +142,22 @@ function Room(room_id, graphParts)
const work = []; const work = [];
for(const [pass, dirty] of desk.pass) for(const [pass, dirty] of desk.pass)
{ {
work.push(Div.Part( work.push(Div.Part(
DOM.h5("Pass:", pass.name), DOM.h5(pass.name),
Div.Part( Div.Part(
DOM.h4("Need:"), DOM.h4("Need:"),
desk.need.map((part, index)=>Iterator(part, index, pass, dirty)) desk.need.map((part, index)=>Iterator(part, index, pass, dirty.need))
), ),
Div.Part( Div.Part(
DOM.h4("Make:"), DOM.h4("Make:"),
desk.make.map((part, index)=>Iterator(part, index, pass, dirty)) desk.make.map((part, index)=>Iterator(part, index, pass, dirty.make))
) )
)) ))
} }
return Div.Part( return Div.Part(
DOM.h3("Desk:", desk.name), DOM.h3(desk.name),
work work
) )
} }

View File

@ -201,6 +201,7 @@ const Scan =(desk, pass)=>
let makeMin = Infinity; let makeMin = Infinity;
let needMax = -Infinity; let needMax = -Infinity;
// update needMax
for(let i=0; i<desk.need.length; i++) for(let i=0; i<desk.need.length; i++)
{ {
const part = desk.need[i]; const part = desk.need[i];
@ -208,6 +209,7 @@ const Scan =(desk, pass)=>
if(partPassTime > needMax) needMax = partPassTime; if(partPassTime > needMax) needMax = partPassTime;
} }
// update makeMin AND dirty check makes
for(let i=0; i<desk.make.length; i++) for(let i=0; i<desk.make.length; i++)
{ {
const part = desk.make[i]; const part = desk.make[i];
@ -219,6 +221,7 @@ const Scan =(desk, pass)=>
} }
} }
// dirty check needs
for(let i=0; i<desk.need.length; i++) for(let i=0; i<desk.need.length; i++)
{ {
const part = desk.need[i]; const part = desk.need[i];

View File

@ -9,17 +9,17 @@ export default Rooms({
dev:["Development", "u1"] dev:["Development", "u1"]
}, },
part:{ part:{
p1:"hey", p1:"Page title",
p2:"sup" p2:"Page slug",
p3:"Page preview",
}, },
desk:{ desk:{
d1:["Desk 01", ["dev"], "one", {p1:3}, "p1"] d1:["Write page metas", ["dev"], "all", {}, "p1", "p2"],
d2:["Build Page preview", ["dev"], "all", {p1:1, p2:1}, "p3"]
}, },
pass:{ pass:{
pass_01:["pass 01"], pass_01:["pass 01"],
pass_02:["pass 02"] pass_02:["pass 02"]
} }
}) })
}) });