diff options
Diffstat (limited to 'server/src/routes/ui/node.rs')
-rw-r--r-- | server/src/routes/ui/node.rs | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index b9e9871..0b53e6d 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -32,7 +32,7 @@ pub async fn r_library_node( .nested_path(&path) .context("retrieving library node")?; Ok(LayoutPage { - title: node.commmon().title.to_string(), + title: node.common().title.to_string(), show_back: node.get_item().is_ok(), content: markup::new! { @NodePage { node: &node } @@ -44,7 +44,10 @@ pub async fn r_library_node( markup::define! { NodePage<'a>(node: &'a Arc<Node>) { @match node.as_ref() { - Node::Directory(dir) => { @DirectoryPage { dir } } + Node::Directory(dir) => { @match dir.info.kind { + DirectoryKind::Series => { @SeriesPage { dir } } + _ => { @DirectoryPage { dir } } + } } Node::Item(item) => { @ItemPage { item } } } } @@ -113,6 +116,25 @@ markup::define! { } } } + SeriesPage<'a>(dir: &'a Arc<Directory>) { + // TODO different image here + img.backdrop[src=uri!(r_item_assets(&dir.lib_path, AssetRole::Backdrop))]; + div.page.item { + div.banner { + img[src=uri!(r_item_assets(&dir.lib_path, AssetRole::Poster))]; + } + div.title { + h1 { @dir.info.title } + } + div.details { + h3 { @dir.info.tagline } + p { @dir.info.description } + } + ol { @for ep in &dir.children { + li { a[href=uri!(r_library_node(ep.lib_path()))] { @ep.common().title } } + } } + } + } } #[derive(FromFormField, UriDisplayQuery)] @@ -133,12 +155,11 @@ pub async fn r_item_assets( .context("retrieving library node")?; let path = match role { AssetRole::Backdrop => node - .get_item()? - .info + .common() .backdrop .clone() - .or_else(|| node.commmon().poster.clone()), - AssetRole::Poster => node.commmon().poster.clone(), + .or_else(|| node.common().poster.clone()), + AssetRole::Poster => node.common().poster.clone(), }; let path = if let Some(p) = path { library.root_path.join(p) |