Added sorting to the main library table
This commit is contained in:
@@ -270,6 +270,7 @@ pub enum ActiveRadarrBlock {
|
||||
MovieHistory,
|
||||
#[default]
|
||||
Movies,
|
||||
MoviesSortPrompt,
|
||||
RootFolders,
|
||||
System,
|
||||
SystemLogs,
|
||||
@@ -289,8 +290,9 @@ pub enum ActiveRadarrBlock {
|
||||
ViewMovieOverview,
|
||||
}
|
||||
|
||||
pub static LIBRARY_BLOCKS: [ActiveRadarrBlock; 6] = [
|
||||
pub static LIBRARY_BLOCKS: [ActiveRadarrBlock; 7] = [
|
||||
ActiveRadarrBlock::Movies,
|
||||
ActiveRadarrBlock::MoviesSortPrompt,
|
||||
ActiveRadarrBlock::SearchMovie,
|
||||
ActiveRadarrBlock::SearchMovieError,
|
||||
ActiveRadarrBlock::FilterMovies,
|
||||
|
||||
@@ -256,8 +256,9 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_library_blocks_contents() {
|
||||
assert_eq!(LIBRARY_BLOCKS.len(), 6);
|
||||
assert_eq!(LIBRARY_BLOCKS.len(), 7);
|
||||
assert!(LIBRARY_BLOCKS.contains(&ActiveRadarrBlock::Movies));
|
||||
assert!(LIBRARY_BLOCKS.contains(&ActiveRadarrBlock::MoviesSortPrompt));
|
||||
assert!(LIBRARY_BLOCKS.contains(&ActiveRadarrBlock::SearchMovie));
|
||||
assert!(LIBRARY_BLOCKS.contains(&ActiveRadarrBlock::SearchMovieError));
|
||||
assert!(LIBRARY_BLOCKS.contains(&ActiveRadarrBlock::FilterMovies));
|
||||
|
||||
@@ -218,8 +218,14 @@ where
|
||||
}
|
||||
|
||||
pub fn apply_sorting(&mut self) {
|
||||
self.apply_sorting_toggle(true);
|
||||
}
|
||||
|
||||
pub fn apply_sorting_toggle(&mut self, toggle_dir: bool) {
|
||||
if let Some(sort_options) = &mut self.sort {
|
||||
self.sort_asc = !self.sort_asc;
|
||||
if toggle_dir {
|
||||
self.sort_asc = !self.sort_asc;
|
||||
}
|
||||
let selected_sort_option = sort_options.current_selection();
|
||||
let mut items = self.filtered_items.as_ref().unwrap_or(&self.items).clone();
|
||||
if let Some(cmp_fn) = selected_sort_option.cmp_fn {
|
||||
|
||||
@@ -268,18 +268,18 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_table_apply_sorting_no_op_no_sort_options() {
|
||||
fn test_stateful_table_apply_sorting_toggle_no_op_no_sort_options() {
|
||||
let mut stateful_table = create_test_stateful_table();
|
||||
let expected_items = stateful_table.items.clone();
|
||||
|
||||
stateful_table.apply_sorting();
|
||||
stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
assert!(!stateful_table.sort_asc);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_table_apply_sorting_no_op_no_cmp_fn() {
|
||||
fn test_stateful_table_apply_sorting_toggle_no_op_no_cmp_fn() {
|
||||
let mut stateful_table = create_test_stateful_table();
|
||||
stateful_table.sorting(vec![SortOption {
|
||||
name: "Test 1",
|
||||
@@ -287,14 +287,14 @@ mod tests {
|
||||
}]);
|
||||
let expected_items = stateful_table.items.clone();
|
||||
|
||||
stateful_table.apply_sorting();
|
||||
stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
assert!(stateful_table.sort_asc);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_filtered_stateful_table_apply_sorting_no_op_no_cmp_fn() {
|
||||
fn test_filtered_stateful_table_apply_sorting_toggle_no_op_no_cmp_fn() {
|
||||
let mut filtered_stateful_table = create_test_filtered_stateful_table();
|
||||
filtered_stateful_table.sorting(vec![SortOption {
|
||||
name: "Test 1",
|
||||
@@ -306,7 +306,7 @@ mod tests {
|
||||
.unwrap()
|
||||
.clone();
|
||||
|
||||
filtered_stateful_table.apply_sorting();
|
||||
filtered_stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
assert_eq!(
|
||||
*filtered_stateful_table.filtered_items.as_ref().unwrap(),
|
||||
@@ -316,7 +316,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_table_apply_sorting() {
|
||||
fn test_stateful_table_apply_sorting_toggles_direction() {
|
||||
let mut stateful_table = create_test_stateful_table();
|
||||
stateful_table.sorting(vec![SortOption {
|
||||
name: "Test 1",
|
||||
@@ -325,12 +325,12 @@ mod tests {
|
||||
let mut expected_items = stateful_table.items.clone();
|
||||
expected_items.sort();
|
||||
|
||||
stateful_table.apply_sorting();
|
||||
stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
assert!(stateful_table.sort_asc);
|
||||
|
||||
stateful_table.apply_sorting();
|
||||
stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
expected_items.reverse();
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
@@ -338,7 +338,46 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_filtered_stateful_table_apply_sorting() {
|
||||
fn test_stateful_table_apply_sorting_toggle() {
|
||||
let mut stateful_table = create_test_stateful_table();
|
||||
stateful_table.sorting(vec![SortOption {
|
||||
name: "Test 1",
|
||||
cmp_fn: Some(|a, b| a.cmp(b)),
|
||||
}]);
|
||||
let mut expected_items = stateful_table.items.clone();
|
||||
expected_items.sort();
|
||||
|
||||
stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
assert!(stateful_table.sort_asc);
|
||||
|
||||
stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
expected_items.reverse();
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
assert!(!stateful_table.sort_asc);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_stateful_table_apply_sorting_toggle_false_doesnt_toggle_direction() {
|
||||
let mut stateful_table = create_test_stateful_table();
|
||||
stateful_table.sorting(vec![SortOption {
|
||||
name: "Test 1",
|
||||
cmp_fn: Some(|a, b| a.cmp(b)),
|
||||
}]);
|
||||
let mut expected_items = stateful_table.items.clone();
|
||||
expected_items.sort();
|
||||
expected_items.reverse();
|
||||
|
||||
stateful_table.apply_sorting_toggle(false);
|
||||
|
||||
assert_eq!(stateful_table.items, expected_items);
|
||||
assert!(!stateful_table.sort_asc);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_filtered_stateful_table_apply_sorting_toggle() {
|
||||
let mut filtered_stateful_table = create_test_filtered_stateful_table();
|
||||
filtered_stateful_table.sorting(vec![SortOption {
|
||||
name: "Test 1",
|
||||
@@ -351,7 +390,7 @@ mod tests {
|
||||
.clone();
|
||||
expected_items.sort();
|
||||
|
||||
filtered_stateful_table.apply_sorting();
|
||||
filtered_stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
assert_eq!(
|
||||
*filtered_stateful_table.filtered_items.as_ref().unwrap(),
|
||||
@@ -359,7 +398,7 @@ mod tests {
|
||||
);
|
||||
assert!(filtered_stateful_table.sort_asc);
|
||||
|
||||
filtered_stateful_table.apply_sorting();
|
||||
filtered_stateful_table.apply_sorting_toggle(true);
|
||||
|
||||
expected_items.reverse();
|
||||
assert_eq!(
|
||||
|
||||
Reference in New Issue
Block a user