From d4772cb6fb78c3d0a69371fc6cd822260b208857 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 24 Jan 2024 01:53:41 +0100 Subject: refactor hlist once again. also added top rated in home --- server/src/routes/ui/home.rs | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) (limited to 'server/src') diff --git a/server/src/routes/ui/home.rs b/server/src/routes/ui/home.rs index 3abc9e9..f9994cc 100644 --- a/server/src/routes/ui/home.rs +++ b/server/src/routes/ui/home.rs @@ -18,7 +18,7 @@ use jellybase::{ database::{ReadableTable, TableExt, T_NODE, T_USER_NODE}, CONF, }; -use jellycommon::user::WatchedState; +use jellycommon::{user::WatchedState, Rating}; use rocket::{get, State}; use tokio::fs::read_to_string; @@ -60,6 +60,19 @@ pub fn r_home(sess: Session, db: &State) -> MyResult { .into_iter() .collect::>(); + items.sort_by_key(|(_, n, _)| { + n.ratings + .get(&Rating::Tmdb) + .map(|x| (*x * -1000.) as i32) + .unwrap_or(0) + }); + + let top_rated = items + .iter() + .take(16) + .map(|k| k.to_owned()) + .collect::>(); + items.sort_by_key(|(_, n, _)| n.release_date.map(|d| -d).unwrap_or(i64::MAX)); let latest = items @@ -84,31 +97,33 @@ pub fn r_home(sess: Session, db: &State) -> MyResult { title: "Home".to_string(), content: markup::new! { h2 { "Explore " @CONF.brand } - ul.hlist {@for (id, node, udata) in &toplevel { + ul.children.hlist {@for (id, node, udata) in &toplevel { li { @NodeCard { id, node, udata } } }} @if !continue_watching.is_empty() { h2 { "Continue Watching" } - ul.hlist {@for (id, node, udata) in &continue_watching { + ul.children.hlist {@for (id, node, udata) in &continue_watching { li { @NodeCard { id, node, udata } } }} } @if !watchlist.is_empty() { h2 { "Watchlist" } - ul.hlist {@for (id, node, udata) in &watchlist { + ul.children.hlist {@for (id, node, udata) in &watchlist { li { @NodeCard { id, node, udata } } }} } h2 { "Latest Releases" } - ul.hlist {@for (id, node, udata) in &latest { + ul.children.hlist {@for (id, node, udata) in &latest { li { @NodeCard { id, node, udata } } }} h2 { "Today's Picks" } - ul.hlist {@for (id, node, udata) in &random { + ul.children.hlist {@for (id, node, udata) in &random { + li { @NodeCard { id, node, udata } } + }} + h2 { "Top Rated" } + ul.children.hlist {@for (id, node, udata) in &top_rated { li { @NodeCard { id, node, udata } } }} - p.error { "TODO: recently added" } - p.error { "TODO: best rating" } }, ..Default::default() }) -- cgit v1.2.3-70-g09d2