diff options
| author | lukeflo | 2024-10-21 13:01:38 +0200 |
|---|---|---|
| committer | lukeflo | 2024-10-21 13:01:38 +0200 |
| commit | d4a65ac4eda41ecee063e111d67ad1346de234b2 (patch) | |
| tree | 95957013d308a33d5a81e93af20ea48a495782a1 /src | |
| parent | 4337f1c8524b3774a9b10ea41543cc89ae7fb5a9 (diff) | |
| download | bibiman-d4a65ac4eda41ecee063e111d67ad1346de234b2.tar.gz bibiman-d4a65ac4eda41ecee063e111d67ad1346de234b2.zip | |
show order if list is filtered by multiple keywords successively
Diffstat (limited to 'src')
| -rw-r--r-- | src/frontend/keywords.rs | 7 | ||||
| -rw-r--r-- | src/frontend/ui.rs | 10 |
2 files changed, 10 insertions, 7 deletions
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<String>, pub tag_list_state: ListState, pub tag_scroll_state: ScrollbarState, - pub selected_keyword: String, + pub selected_keywords: Vec<String>, } // 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(), ] |
