diff options
| author | lukeflo | 2024-10-17 23:24:51 +0200 |
|---|---|---|
| committer | lukeflo | 2024-10-17 23:24:51 +0200 |
| commit | 917b9c522635a304ff7c70499f05903a694696a3 (patch) | |
| tree | 3cc12f06bed4f991e4fa926b8bc16de24a38ed1e /src | |
| parent | 8362f2a4272cf11e54c9384b19d5c878141bf76d (diff) | |
| download | bibiman-917b9c522635a304ff7c70499f05903a694696a3.tar.gz bibiman-917b9c522635a304ff7c70499f05903a694696a3.zip | |
correct sorting function
Diffstat (limited to 'src')
| -rw-r--r-- | src/frontend/entries.rs | 21 | ||||
| -rw-r--r-- | src/frontend/handler.rs | 2 |
2 files changed, 14 insertions, 9 deletions
diff --git a/src/frontend/entries.rs b/src/frontend/entries.rs index 38b1852..63a2a1b 100644 --- a/src/frontend/entries.rs +++ b/src/frontend/entries.rs @@ -76,35 +76,37 @@ impl EntryTable { // Sort entry table by specific column. // Toggle sorting by hitting same key again - pub fn sort_entry_table(&mut self, sorting: &str) { + pub fn sort_entry_table(&mut self, sorting: &str, toggle: bool) { + if toggle { + self.entry_table_reversed_sort = !self.entry_table_reversed_sort; + } if self.entry_table_reversed_sort { match sorting { "author" => self .entry_table_items - .sort_by(|a, b| a.authors.to_lowercase().cmp(&b.authors.to_lowercase())), + .sort_by(|a, b| b.authors.to_lowercase().cmp(&a.authors.to_lowercase())), "title" => self .entry_table_items - .sort_by(|a, b| a.title.to_lowercase().cmp(&b.title.to_lowercase())), + .sort_by(|a, b| b.title.to_lowercase().cmp(&a.title.to_lowercase())), "year" => self .entry_table_items - .sort_by(|a, b| a.year.to_lowercase().cmp(&b.year.to_lowercase())), + .sort_by(|a, b| b.year.to_lowercase().cmp(&a.year.to_lowercase())), _ => {} } } else if !self.entry_table_reversed_sort { match sorting { "author" => self .entry_table_items - .sort_by(|a, b| b.authors.to_lowercase().cmp(&a.authors.to_lowercase())), + .sort_by(|a, b| a.authors.to_lowercase().cmp(&b.authors.to_lowercase())), "title" => self .entry_table_items - .sort_by(|a, b| b.title.to_lowercase().cmp(&a.title.to_lowercase())), + .sort_by(|a, b| a.title.to_lowercase().cmp(&b.title.to_lowercase())), "year" => self .entry_table_items - .sort_by(|a, b| b.year.to_lowercase().cmp(&a.year.to_lowercase())), + .sort_by(|a, b| a.year.to_lowercase().cmp(&b.year.to_lowercase())), _ => {} } } - self.entry_table_reversed_sort = !self.entry_table_reversed_sort; } } @@ -276,6 +278,9 @@ impl App { let filtered_list = BibiSearch::search_entry_list(&mut self.search_struct.search_string, orig_list.clone()); self.entry_table.entry_table_items = filtered_list; + if self.entry_table.entry_table_reversed_sort { + self.entry_table.sort_entry_table("author", false); + } self.entry_table.entry_scroll_state = ScrollbarState::content_length( self.entry_table.entry_scroll_state, self.entry_table.entry_table_items.len(), diff --git a/src/frontend/handler.rs b/src/frontend/handler.rs index 70ba5c7..ec1647e 100644 --- a/src/frontend/handler.rs +++ b/src/frontend/handler.rs @@ -122,7 +122,7 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App, tui: &mut Tui) -> R app.select_last_entry(); } KeyCode::Char('s') => { - app.entry_table.sort_entry_table("author"); + app.entry_table.sort_entry_table("author", true); } KeyCode::Char('y') => { App::yank_text(&app.get_selected_citekey()); |
