aboutsummaryrefslogtreecommitdiff
path: root/ui/src/stats.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-28 18:27:03 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-28 18:27:03 +0200
commit51761cbdefa39107b9e1f931f1aa8df6aebb2a94 (patch)
tree957ca180786ece777e6e1153ada91da741d845ec /ui/src/stats.rs
parent80d28b764c95891551e28c395783f5ff9d065743 (diff)
downloadjellything-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.rs45
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
}
}