aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlukeflo2024-10-21 13:01:38 +0200
committerlukeflo2024-10-21 13:01:38 +0200
commitd4a65ac4eda41ecee063e111d67ad1346de234b2 (patch)
tree95957013d308a33d5a81e93af20ea48a495782a1 /src
parent4337f1c8524b3774a9b10ea41543cc89ae7fb5a9 (diff)
downloadbibiman-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.rs7
-rw-r--r--src/frontend/ui.rs10
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(),
]