aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlukeflo2024-10-17 23:24:51 +0200
committerlukeflo2024-10-17 23:24:51 +0200
commit917b9c522635a304ff7c70499f05903a694696a3 (patch)
tree3cc12f06bed4f991e4fa926b8bc16de24a38ed1e /src
parent8362f2a4272cf11e54c9384b19d5c878141bf76d (diff)
downloadbibiman-917b9c522635a304ff7c70499f05903a694696a3.tar.gz
bibiman-917b9c522635a304ff7c70499f05903a694696a3.zip
correct sorting function
Diffstat (limited to 'src')
-rw-r--r--src/frontend/entries.rs21
-rw-r--r--src/frontend/handler.rs2
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());