diff options
| author | lukeflo | 2024-10-21 12:26:44 +0200 |
|---|---|---|
| committer | lukeflo | 2024-10-21 12:26:44 +0200 |
| commit | 4337f1c8524b3774a9b10ea41543cc89ae7fb5a9 (patch) | |
| tree | 482ae156d760354c9ddebe2d2ab6a9833ae53e84 /src/frontend/entries.rs | |
| parent | 23461438ad1ef51cfabf76e1530574e8bac28faa (diff) | |
| download | bibiman-4337f1c8524b3774a9b10ea41543cc89ae7fb5a9.tar.gz bibiman-4337f1c8524b3774a9b10ea41543cc89ae7fb5a9.zip | |
fix sorting
Diffstat (limited to 'src/frontend/entries.rs')
| -rw-r--r-- | src/frontend/entries.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/frontend/entries.rs b/src/frontend/entries.rs index d5b0d8c..7883a17 100644 --- a/src/frontend/entries.rs +++ b/src/frontend/entries.rs @@ -24,7 +24,7 @@ use editor_command::EditorBuilder; use ratatui::widgets::{ScrollbarState, TableState}; use std::process::{Command, Stdio}; -#[derive(Debug)] +#[derive(Debug, Clone, PartialEq, Eq)] pub enum EntryTableColumn { Authors, Title, @@ -33,11 +33,12 @@ pub enum EntryTableColumn { } // Define list containing entries as table -#[derive(Debug)] +#[derive(Debug, PartialEq, Eq)] pub struct EntryTable { pub entry_table_items: Vec<EntryTableItem>, pub entry_table_at_search_start: Vec<EntryTableItem>, pub entry_table_selected_column: EntryTableColumn, + pub entry_table_sorted_by_col: EntryTableColumn, pub entry_table_reversed_sort: bool, pub entry_table_state: TableState, pub entry_scroll_state: ScrollbarState, @@ -55,6 +56,7 @@ impl EntryTable { entry_table_items, entry_table_at_search_start: Vec::new(), entry_table_selected_column: EntryTableColumn::Authors, + entry_table_sorted_by_col: EntryTableColumn::Authors, entry_table_reversed_sort: false, entry_table_state, entry_scroll_state, @@ -90,6 +92,10 @@ impl EntryTable { if toggle { self.entry_table_reversed_sort = !self.entry_table_reversed_sort; } + if self.entry_table_selected_column != self.entry_table_sorted_by_col { + self.entry_table_reversed_sort = false + } + self.entry_table_sorted_by_col = self.entry_table_selected_column.clone(); if self.entry_table_reversed_sort { match self.entry_table_selected_column { EntryTableColumn::Authors => self @@ -248,19 +254,15 @@ impl App { match self.entry_table.entry_table_selected_column { EntryTableColumn::Authors => { self.entry_table.entry_table_selected_column = EntryTableColumn::Title; - self.entry_table.sort_entry_table(false); } EntryTableColumn::Title => { self.entry_table.entry_table_selected_column = EntryTableColumn::Year; - self.entry_table.sort_entry_table(false); } EntryTableColumn::Year => { self.entry_table.entry_table_selected_column = EntryTableColumn::Pubtype; - self.entry_table.sort_entry_table(false); } EntryTableColumn::Pubtype => { self.entry_table.entry_table_selected_column = EntryTableColumn::Authors; - self.entry_table.sort_entry_table(false); } } } @@ -269,19 +271,15 @@ impl App { match self.entry_table.entry_table_selected_column { EntryTableColumn::Authors => { self.entry_table.entry_table_selected_column = EntryTableColumn::Pubtype; - self.entry_table.sort_entry_table(false); } EntryTableColumn::Title => { self.entry_table.entry_table_selected_column = EntryTableColumn::Authors; - self.entry_table.sort_entry_table(false); } EntryTableColumn::Year => { self.entry_table.entry_table_selected_column = EntryTableColumn::Title; - self.entry_table.sort_entry_table(false); } EntryTableColumn::Pubtype => { self.entry_table.entry_table_selected_column = EntryTableColumn::Year; - self.entry_table.sort_entry_table(false); } } } |
