aboutsummaryrefslogtreecommitdiff
path: root/ui/src/items.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-29 11:10:21 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-29 11:10:21 +0200
commitf62c7f2a8cc143454779dc99334ca9fc80ddabd5 (patch)
treef31dbb908715d2deb2860e2097fa13dd41d759d5 /ui/src/items.rs
parent73d2d5eb01fceae9e0b1c58afb648822000c878a (diff)
downloadjellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar
jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar.bz2
jellything-f62c7f2a8cc143454779dc99334ca9fc80ddabd5.tar.zst
still just moving code around
Diffstat (limited to 'ui/src/items.rs')
-rw-r--r--ui/src/items.rs46
1 files changed, 46 insertions, 0 deletions
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 <metamuffin.org>
+*/
+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)
+ }
+}