diff options
Diffstat (limited to 'server/src/routes')
-rw-r--r-- | server/src/routes/ui/sort.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/server/src/routes/ui/sort.rs b/server/src/routes/ui/sort.rs index 23918be..2c5f0cc 100644 --- a/server/src/routes/ui/sort.rs +++ b/server/src/routes/ui/sort.rs @@ -46,6 +46,7 @@ form_enum!( enum SortProperty { ReleaseDate = "release_date", Title = "title", + Duration = "duration", RatingRottenTomatoes = "rating_rt", RatingMetacritic = "rating_mc", RatingImdb = "rating_imdb", @@ -64,6 +65,7 @@ impl SortProperty { "General", &[(Title, "Title"), (ReleaseDate, "Release Date")], ), + ("Media", &[(Duration, "Runtime")]), ( "By Rating", &[ @@ -156,13 +158,20 @@ pub fn filter_and_sort_nodes( } } } - if let Some(SortProperty::ReleaseDate) = &f.sort_by { - o &= node.release_date.is_some() + if let Some(sort_by) = &f.sort_by { + match sort_by { + SortProperty::ReleaseDate => o &= node.release_date.is_some(), + SortProperty::Duration => o &= node.media.is_some(), + _ => (), + } } o }); let sort_prop = f.sort_by.unwrap_or(default_sort.0); match sort_prop { + SortProperty::Duration => { + nodes.sort_by_key(|(_, n, _)| (n.media.as_ref().unwrap().duration * 1000.) as i64) + } SortProperty::ReleaseDate => { nodes.sort_by_key(|(_, n, _)| n.release_date.expect("asserted above")) } |