From f62c7f2a8cc143454779dc99334ca9fc80ddabd5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 29 Apr 2025 11:10:21 +0200 Subject: still just moving code around --- ui/src/items.rs | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 ui/src/items.rs (limited to 'ui/src/items.rs') diff --git a/ui/src/items.rs b/ui/src/items.rs new file mode 100644 index 0000000..29bc78c --- /dev/null +++ b/ui/src/items.rs @@ -0,0 +1,46 @@ +/* + 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::{ + Page, + filter_sort::NodeFilterSortForm, + locale::{Language, tr, trs}, + node_card::NodeCard, +}; +use jellycommon::{ + api::{ApiItemsResponse, NodeFilterSort}, + routes::u_items_filter, +}; +use markup::DynRender; + +markup::define! { + ItemsPage<'a>(lang: &'a Language, r: ApiItemsResponse, filter: &'a NodeFilterSort, page: usize) { + .page.dir { + h1 { "All Items" } + @NodeFilterSortForm { f: &filter, lang: &lang } + ul.children { @for (node, udata) in &r.items { + li {@NodeCard { node, udata, lang: &lang }} + }} + p.pagecontrols { + span.current { @tr(**lang, "page.curr").replace("{cur}", &(page + 1).to_string()).replace("{max}", &r.pages.to_string()) " " } + @if *page > 0 { + a.prev[href=u_items_filter(page - 1, filter)] { @trs(&lang, "page.prev") } " " + } + @if page + 1 < r.pages { + a.next[href=u_items_filter(page + 1, filter)] { @trs(&lang, "page.next") } + } + } + } + } +} + +impl Page for ItemsPage<'_> { + fn title(&self) -> String { + tr(*self.lang, "home").to_string() + } + fn to_render(&self) -> DynRender { + markup::new!(@self) + } +} -- cgit v1.2.3-70-g09d2