โน{x.min_price_inr}โ{x.max_price_inr} ยท {x.total_volume_mu} MU
+ >
+ :
โ
}
- :
๐ก Data pipeline coming soon
+ :
โ ๏ธ Sources unreachable
}
+ {xOk&&
Rs/MWh ยท DAM {x.as_of} ยท {x.blocks_parsed} blocks
}
);
}
-function StatCell({val,lbl}){
+function StatCell({val,lbl,alert}){
const[h,sH]=useState(false);
+ // `alert` overrides the normal text colour so a threshold breach is visible
+ // at a glance. A number you look at daily that never changes colour is a
+ // number you stop reading.
+ const col=alert||(h?"var(--c-accent)":"var(--c-text)");
return(
);
}
-function Section({sec}){
+function Section({sec,health}){
const[open,setOpen]=useState(true);
+ // Surface faults on the section header too โ otherwise collapsing a section
+ // hides the very thing you need to see.
+ const bad=sec.services.filter(s=>{
+ const st=health?.[s.id]?.status;
+ return st==="offline"||st==="degraded";
+ }).length;
return(