diff options
Diffstat (limited to 'server/src/routes/ui/node.rs')
-rw-r--r-- | server/src/routes/ui/node.rs | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index d5e52ff..b9e9871 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -15,6 +15,7 @@ use crate::{ CONF, }; use anyhow::Context; +use jellycommon::DirectoryKind; use log::info; use rocket::{get, http::ContentType, State}; use rocket::{FromFormField, UriDisplayQuery}; @@ -49,23 +50,17 @@ markup::define! { } NodeCard<'a>(node: &'a Arc<Node>) { @match node.as_ref() { - Node::Directory(dir) => { @DirectoryCard { dir } } - Node::Item(item) => { @ItemCard { item } } - } - } - DirectoryCard<'a>(dir: &'a Arc<Directory>) { - div.card.dir { - div.banner { - a[href=uri!(r_library_node(&dir.lib_path))] { - img[src=uri!(r_item_assets(&dir.lib_path, AssetRole::Poster))]; - } - div.hover { a[href=uri!(r_library_node(&dir.lib_path))] { "Open" } } - } - p.title { - a[href=uri!(r_library_node(&dir.lib_path))] { - @dir.info.title - } - } + Node::Directory(dir) => {@PosterCard { + wide: !matches!(dir.info.kind, DirectoryKind::Series | DirectoryKind::Season), + dir: true, + path: dir.lib_path.clone(), + title: &dir.info.title + }} + Node::Item(item) => {@PosterCard { + wide: false, dir: false, + path: item.lib_path.clone(), + title: &item.info.title + }} } } DirectoryPage<'a>(dir: &'a Arc<Directory>) { @@ -81,17 +76,21 @@ markup::define! { } } } - ItemCard<'a>(item: &'a Arc<Item>) { - div.card.item { + PosterCard<'a>(path: PathBuf, title: &'a str, wide: bool, dir: bool) { + div[class=if *wide {"card wide poster"} else {"card poster"}] { div.banner { - a[href=uri!(r_library_node(&item.lib_path))] { - img[src=uri!(r_item_assets(&item.lib_path, AssetRole::Poster))]; + a[href=uri!(r_library_node(path))] { + img[src=uri!(r_item_assets(path, AssetRole::Poster))]; + } + @if *dir { + div.hoverdir { a[href=&uri!(r_library_node(path))] { "Open" } } + } else { + div.hoveritem { a[href=&player_uri(path)] { "▶" } } } - div.hover { a[href=&player_uri(&item.lib_path)] { "▶" } } } p.title { - a[href=uri!(r_library_node(&item.lib_path))] { - @item.info.title + a[href=uri!(r_library_node(path))] { + @title } } } |