From 80d28b764c95891551e28c395783f5ff9d065743 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 28 Apr 2025 00:48:52 +0200 Subject: start with splitting server --- ui/src/stats.rs | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 ui/src/stats.rs (limited to 'ui/src/stats.rs') diff --git a/ui/src/stats.rs b/ui/src/stats.rs new file mode 100644 index 0000000..b4a2e23 --- /dev/null +++ b/ui/src/stats.rs @@ -0,0 +1,63 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2025 metamuffin +*/ + +use crate::{ + format::{format_duration, format_duration_long, format_kind, format_size}, + locale::{Language, tr, trs}, + scaffold::LayoutPage, +}; +use markup::raw; + +markup::define! { + StatsPage<'a>(lang: &'a Language) { + .page.stats { + h1 { @trs(&lang, "stats.title") } + p { @raw(tr(lang, "stats.count") + .replace("{count}", &format!("{}", all.count)) + )} + p { @raw(tr(lang, "stats.runtime") + .replace("{dur}", &format!("{}", format_duration_long(all.runtime, lang))) + .replace("{size}", &format!("{}", format_size(all.size))) + )} + p { @raw(tr(lang, "stats.average") + .replace("{dur}", &format!("{}", format_duration(all.average_runtime()))) + .replace("{size}", &format!("{}", format_size(all.average_size() as u64))) + )} + + h2 { @trs(&lang, "stats.by_kind.title") } + table.striped { + tr { + th { @trs(&lang, "stats.by_kind.kind") } + th { @trs(&lang, "stats.by_kind.count") } + th { @trs(&lang, "stats.by_kind.total_size") } + th { @trs(&lang, "stats.by_kind.total_runtime") } + th { @trs(&lang, "stats.by_kind.average_size") } + th { @trs(&lang, "stats.by_kind.average_runtime") } + 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) } + td { @b.count } + td { @format_size(b.size) } + td { @format_duration(b.runtime) } + td { @format_size(b.average_size() as u64) } + td { @format_duration(b.average_runtime()) } + td { @if b.max_size.0 > 0 { a[href=uri!(r_library_node(&b.max_size.1))]{ @format_size(b.max_size.0) }}} + td { @if b.max_runtime.0 > 0. { a[href=uri!(r_library_node(&b.max_runtime.1))]{ @format_duration(b.max_runtime.0) }}} + }} + } + } + } +} + +pub fn stats_page() { + LayoutPage { + title: tr(lang, "stats.title").to_string(), + content: StatsPage { lang: &lang }, + ..Default::default() + } +} -- cgit v1.2.3-70-g09d2