Skip to content

Commit 5f40904

Browse files
committed
feat: preserve more settings across loads
1 parent c36c08e commit 5f40904

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/app.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,12 +310,17 @@ impl LogViewerApp {
310310
match Data::try_from((self.row_idx_field_name.as_ref(), &data[..])) {
311311
Ok(mut data) => {
312312
if let Some(old_data) = self.data.as_mut() {
313-
// Preserve filter settings across loads of the data
314-
data.filter = old_data.filter.take();
313+
// Preserve settings across loads of the data
314+
data.take_config(
315+
old_data,
316+
self.data_display_options.common_fields(),
317+
);
315318
}
316319
self.data = Some(data);
317320
if self.should_scroll_to_end_on_load {
318321
self.move_selected_last();
322+
} else {
323+
self.should_scroll = true;
319324
}
320325
LoadingStatus::NotInProgress
321326
}

src/app/data.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,19 @@ impl Data {
246246
warn!("Apply called but no filter is available")
247247
}
248248
}
249+
250+
pub fn take_config(&mut self, other: &mut Self, common_fields: &BTreeSet<String>) {
251+
let is_filtered = other.is_filtered();
252+
self.filter = other.filter.take();
253+
if is_filtered {
254+
self.apply_filter(common_fields);
255+
}
256+
if let Some(i) = other.selected_row {
257+
if i < self.len() {
258+
self.selected_row = Some(i);
259+
}
260+
}
261+
}
249262
}
250263

251264
fn is_included(

0 commit comments

Comments
 (0)