diff options
Diffstat (limited to 'ui/src/components/node_page.rs')
| -rw-r--r-- | ui/src/components/node_page.rs | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/ui/src/components/node_page.rs b/ui/src/components/node_page.rs index 2a5848b..265e2d4 100644 --- a/ui/src/components/node_page.rs +++ b/ui/src/components/node_page.rs @@ -4,7 +4,11 @@ Copyright (C) 2026 metamuffin <metamuffin.org> */ -use crate::{RenderInfo, components::props::Props, page}; +use crate::{ + RenderInfo, + components::{node_card::NodeCard, props::Props}, + page, +}; use jellycommon::{ jellyobject::{EMPTY, Object, Tag, TypedTag}, routes::{u_image, u_node_slug_player}, @@ -29,7 +33,13 @@ page!(Player<'_>, |x| x .into()); markup::define! { - NodePage<'a>(ri: &'a RenderInfo<'a>, nku: Nku<'a>) { + NodePage<'a>( + ri: &'a RenderInfo<'a>, + nku: Nku<'a>, + children: &'a [Nku<'a>], + credits: &'a [(Tag, Vec<Nku<'a>>)], + credited: &'a [Nku<'a>] + ) { @let node = &nku.node; @let slug = node.get(NO_SLUG).unwrap_or_default(); @let pics = node.get(NO_PICTURES).unwrap_or(EMPTY); @@ -145,15 +155,24 @@ markup::define! { } } } - // @if matches!(node.kind, NodeKind::Collection | NodeKind::Channel) { - // @NodeFilterSortForm { f: filter, lang } - // } - // @if !similar.is_empty() { - // h2 { @trs(lang, "node.similar") } - // ul.children.hlist {@for (node, udata) in similar.iter() { - // li { @NodeCard { node, udata, lang } } - // }} - // } + + @for (cat, items) in *credits { + h2 { @tr(ri.lang, &format!("tag.cred.kind.{cat}")) } + ul.nl.inline { @for nku in items { + li { @NodeCard { ri, nku } } + }} + } + @if !credited.is_empty() { + h2 { @tr(ri.lang, &format!("node.credited")) } + ul.nl.grid { @for nku in *credited { + li { @NodeCard { ri, nku } } + }} + } + @if !children.is_empty() { + ul.nl.grid { @for nku in *children { + li { @NodeCard { ri, nku } } + }} + } } Player<'a>(ri: &'a RenderInfo<'a>, nku: Nku<'a>) { |