use super::*;
const PERCENT_MAX: f64 = 100.0;
#[component]
pub fn euv_progress(node: VirtualNode<EuvProgressProps>) -> VirtualNode {
let EuvProgressProps {
percent,
label: label_text,
active,
}: EuvProgressProps = node.try_get_props().unwrap_or_default();
let clamped: f64 = progress_percent_clamp(percent.get());
let fill_style: String = format!("width: {clamped}%;");
let fill_style_ref: &str = fill_style.as_str();
let readout: String = format!("{clamped:.0}%");
html! {
div {
div {
class: c_progress_container()
div {
class: c_progress_bar_fill()
class: if { active } {
c_progress_bar_running()
} else {
c_progress_bar_stopped()
}
style: fill_style_ref
}
}
div {
class: c_euv_slider_header()
span {
class: c_form_label()
label_text
}
span {
class: c_binding_slider_value()
readout
}
}
}
}
}
pub fn progress_percent_clamp(percent: f64) -> f64 {
if percent.is_nan() {
return 0.0;
}
percent.clamp(0.0, PERCENT_MAX)
}