use std::time::Duration;
use crate::{data::AppData, utils::format_as_secs_minutes_and_hours};
use xilem::{
TextAlign, WidgetView,
view::{GridExt, GridParams, grid, label, progress_bar},
};
pub(crate) fn time_view(total: Duration, progress: Duration) -> impl WidgetView<AppData> + use<> {
let relative_progress = if progress == Duration::ZERO {
0f64
} else {
progress.as_millis() as f64 / total.as_millis() as f64
};
debug_assert!(relative_progress <= 1.);
grid(
(
progress_bar(Some(relative_progress)).grid_item(GridParams::new(0, 0, 3, 1)),
label(format_as_secs_minutes_and_hours(progress))
.text_alignment(TextAlign::Start)
.text_size(25.)
.grid_item(GridParams::new(0, 1, 1, 1)),
label(format_as_secs_minutes_and_hours(total))
.text_alignment(TextAlign::End)
.text_size(25.)
.grid_item(GridParams::new(2, 1, 1, 1)),
),
3,
2,
)
}