From df36a85b54fd427cc0914320d29aa4f005e5aff7 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 5 Feb 2025 23:10:15 +0100 Subject: trakt episode details --- server/src/routes/ui/node.rs | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'server/src/routes/ui/node.rs') diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index 337d249..f8b448f 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -63,17 +63,20 @@ pub async fn r_library_node_filter<'a>( .into_iter() .map(|c| db.get_node_with_userdata(c, &session)) .collect::>>()?; + children.retain(|(n, _)| n.visibility >= Visibility::Reduced); - let parents = node + let mut parents = node .parents .iter() .flat_map(|pid| db.get_node(*pid).transpose()) .collect::, _>>()?; + parents.retain(|n| n.visibility >= Visibility::Reduced); filter_and_sort_nodes( &filter, match node.kind { NodeKind::Channel => (SortProperty::ReleaseDate, SortOrder::Descending), + NodeKind::Season | NodeKind::Show => (SortProperty::Index, SortOrder::Ascending), _ => (SortProperty::Title, SortOrder::Ascending), }, &mut children, @@ -115,6 +118,26 @@ markup::define! { } } } + NodeCardWide<'a>(node: &'a Node, udata: &'a NodeUserData) { + @let cls = format!("node card widecard poster {}", aspect_class(node.kind)); + div[class=cls] { + .poster { + a[href=uri!(r_library_node(&node.slug))] { + img[src=uri!(r_item_poster(&node.slug, Some(1024))), loading="lazy"]; + } + .cardhover.item { + @if node.media.is_some() { + a.play.icon[href=&uri!(r_player(&node.slug, PlayerConfig::default()))] { "play_arrow" } + } + } + } + div.details { + a.title[href=uri!(r_library_node(&node.slug))] { @node.title } + @Props { node, udata, full: false } + span.overview { @node.description } + } + } + } NodePage<'a>(id: &'a str, node: &'a Node, udata: &'a NodeUserData, children: &'a [(Arc, NodeUserData)], parents: &'a [Arc], filter: &'a NodeFilterSort) { @if !matches!(node.kind, NodeKind::Collection) { img.backdrop[src=uri!(r_item_backdrop(id, Some(2048))), loading="lazy"]; @@ -218,15 +241,13 @@ markup::define! { } @match node.kind { NodeKind::Show | NodeKind::Series | NodeKind::Season => { - ol { @for (c, _) in children.iter() { - li { a[href=uri!(r_library_node(&c.slug))] { @c.title } } + ol { @for (node, udata) in children.iter() { + li { @NodeCardWide { node, udata } } }} } NodeKind::Collection | NodeKind::Channel | _ => { ul.children {@for (node, udata) in children.iter() { - @if node.visibility != Visibility::Hidden { - li { @NodeCard { node, udata } } - } + li { @NodeCard { node, udata } } }} } } -- cgit v1.2.3-70-g09d2