From d4a65ac4eda41ecee063e111d67ad1346de234b2 Mon Sep 17 00:00:00 2001 From: lukeflo Date: Mon, 21 Oct 2024 13:01:38 +0200 Subject: show order if list is filtered by multiple keywords successively --- src/frontend/keywords.rs | 7 ++++--- src/frontend/ui.rs | 10 ++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src/frontend') diff --git a/src/frontend/keywords.rs b/src/frontend/keywords.rs index 8f13230..5605a59 100644 --- a/src/frontend/keywords.rs +++ b/src/frontend/keywords.rs @@ -24,7 +24,7 @@ pub struct TagList { pub tag_list_items: Vec, pub tag_list_state: ListState, pub tag_scroll_state: ScrollbarState, - pub selected_keyword: String, + pub selected_keywords: Vec, } // Structure of the list items. @@ -51,7 +51,7 @@ impl TagList { tag_list_items, tag_list_state, tag_scroll_state, - selected_keyword: String::new(), + selected_keywords: Vec::new(), } } } @@ -143,7 +143,8 @@ impl App { let orig_list = &self.entry_table.entry_table_items; let keyword = self.get_selected_tag(); let filtered_list = BibiSearch::filter_entries_by_tag(&keyword, &orig_list); - self.tag_list.selected_keyword = keyword.to_string(); + // self.tag_list.selected_keyword = keyword.to_string(); + self.tag_list.selected_keywords.push(keyword.to_string()); self.entry_table.entry_table_items = filtered_list; // Update scrollbar state with new lenght of itemlist self.entry_table.entry_scroll_state = ScrollbarState::content_length( diff --git a/src/frontend/ui.rs b/src/frontend/ui.rs index 59a07f3..6fab1d1 100644 --- a/src/frontend/ui.rs +++ b/src/frontend/ui.rs @@ -188,8 +188,8 @@ impl App { }); let [file_area, keyword_area, count_area] = Layout::horizontal([ + Constraint::Fill(3), Constraint::Fill(4), - Constraint::Fill(2), Constraint::Fill(1), ]) .horizontal_margin(1) @@ -202,10 +202,12 @@ impl App { .bg(HEADER_FOOTER_BG) .render(file_area, buf); - Line::from(if !self.tag_list.selected_keyword.is_empty() { + Line::from(if !self.tag_list.selected_keywords.is_empty() { vec![ - Span::raw("Filtered by: "), - Span::raw(self.tag_list.selected_keyword.to_string()) + Span::raw("Selected keywords: "), + // Show all keywords in correct order if list is filtered + // successively by multiple keywords + Span::raw(self.tag_list.selected_keywords.join(" → ")) .bold() .green(), ] -- cgit v1.2.3