/* 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() } }