diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-28 18:27:03 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-28 18:27:03 +0200 |
commit | 51761cbdefa39107b9e1f931f1aa8df6aebb2a94 (patch) | |
tree | 957ca180786ece777e6e1153ada91da741d845ec /ui/src/stats.rs | |
parent | 80d28b764c95891551e28c395783f5ff9d065743 (diff) | |
download | jellything-51761cbdefa39107b9e1f931f1aa8df6aebb2a94.tar jellything-51761cbdefa39107b9e1f931f1aa8df6aebb2a94.tar.bz2 jellything-51761cbdefa39107b9e1f931f1aa8df6aebb2a94.tar.zst |
many much more generic refactor
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 } } |