diff options
Diffstat (limited to 'ui/src/stats.rs')
-rw-r--r-- | ui/src/stats.rs | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/ui/src/stats.rs b/ui/src/stats.rs index b4a2e23..3655245 100644 --- a/ui/src/stats.rs +++ b/ui/src/stats.rs @@ -7,24 +7,24 @@ use crate::{ format::{format_duration, format_duration_long, format_kind, format_size}, locale::{Language, tr, trs}, - scaffold::LayoutPage, }; +use jellycommon::api::{ApiStatsResponse, StatsBin}; use markup::raw; markup::define! { - StatsPage<'a>(lang: &'a Language) { + StatsPage<'a>(lang: &'a Language, r: ApiStatsResponse) { .page.stats { h1 { @trs(&lang, "stats.title") } - p { @raw(tr(lang, "stats.count") - .replace("{count}", &format!("<b>{}</b>", all.count)) + p { @raw(tr(**lang, "stats.count") + .replace("{count}", &format!("<b>{}</b>", r.total.count)) )} - p { @raw(tr(lang, "stats.runtime") - .replace("{dur}", &format!("<b>{}</b>", format_duration_long(all.runtime, lang))) - .replace("{size}", &format!("<b>{}</b>", format_size(all.size))) + p { @raw(tr(**lang, "stats.runtime") + .replace("{dur}", &format!("<b>{}</b>", format_duration_long(r.total.runtime, **lang))) + .replace("{size}", &format!("<b>{}</b>", format_size(r.total.size))) )} - p { @raw(tr(lang, "stats.average") - .replace("{dur}", &format!("<b>{}</b>", format_duration(all.average_runtime()))) - .replace("{size}", &format!("<b>{}</b>", format_size(all.average_size() as u64))) + p { @raw(tr(**lang, "stats.average") + .replace("{dur}", &format!("<b>{}</b>", format_duration(r.total.average_runtime()))) + .replace("{size}", &format!("<b>{}</b>", format_size(r.total.average_size() as u64))) )} h2 { @trs(&lang, "stats.by_kind.title") } @@ -39,8 +39,8 @@ markup::define! { th { @trs(&lang, "stats.by_kind.max_size") } th { @trs(&lang, "stats.by_kind.max_runtime") } } - @for (k,b) in &kinds { tr { - td { @format_kind(*k, lang) } + @for (k,b) in &r.kinds { tr { + td { @format_kind(*k, **lang) } td { @b.count } td { @format_size(b.size) } td { @format_duration(b.runtime) } @@ -54,10 +54,21 @@ markup::define! { } } -pub fn stats_page() { - LayoutPage { - title: tr(lang, "stats.title").to_string(), - content: StatsPage { lang: &lang }, - ..Default::default() +impl StatsPage<'_> { + pub fn title(&self) -> String { + tr(*self.lang, "stats.title").to_string() + } +} + +trait BinExt { + fn average_runtime(&self) -> f64; + fn average_size(&self) -> f64; +} +impl BinExt for StatsBin { + fn average_runtime(&self) -> f64 { + self.runtime / self.count as f64 + } + fn average_size(&self) -> f64 { + self.size as f64 / self.count as f64 } } |