Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ pub enum UserEvent {
GoToRight,
PageDown,
PageUp,
ScrollDown,
ScrollUp,
Confirm,
Close,
QuickFilter,
Expand Down Expand Up @@ -130,6 +132,8 @@ impl UserEventMapper {
(KeyEvent::new(KeyCode::Right, KeyModifiers::NONE), UserEvent::Right),
(KeyEvent::new(KeyCode::Char('h'), KeyModifiers::NONE), UserEvent::Left),
(KeyEvent::new(KeyCode::Left, KeyModifiers::NONE), UserEvent::Left),
(KeyEvent::new(KeyCode::Char('e'), KeyModifiers::CONTROL), UserEvent::ScrollDown),
(KeyEvent::new(KeyCode::Char('y'), KeyModifiers::CONTROL), UserEvent::ScrollUp),
(KeyEvent::new(KeyCode::Enter, KeyModifiers::NONE), UserEvent::Confirm),
(KeyEvent::new(KeyCode::Backspace, KeyModifiers::NONE), UserEvent::Close),
(KeyEvent::new(KeyCode::Char('h'), KeyModifiers::CONTROL), UserEvent::Close),
Expand Down
14 changes: 14 additions & 0 deletions src/view/table.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,14 @@ impl TableView {
self.table_state.select_prev_col();
self.table_state.update_table_state();
}
UserEvent::ScrollDown => {
self.table_state.scroll_down();
self.table_state.update_table_state();
}
UserEvent::ScrollUp => {
self.table_state.scroll_up();
self.table_state.update_table_state();
}
UserEvent::QuickFilter => {
self.start_filtering();
}
Expand Down Expand Up @@ -314,6 +322,8 @@ fn build_helps(
BuildHelpsItem::new(UserEvent::GoToBottom, "Select last row"),
BuildHelpsItem::new(UserEvent::GoToLeft, "Select first column"),
BuildHelpsItem::new(UserEvent::GoToRight, "Select last column"),
BuildHelpsItem::new(UserEvent::ScrollDown, "Scroll down"),
BuildHelpsItem::new(UserEvent::ScrollUp, "Scroll up"),
BuildHelpsItem::new(UserEvent::Confirm, "Open selected item"),
BuildHelpsItem::new(UserEvent::QuickFilter, "Filter items"),
BuildHelpsItem::new(UserEvent::Expand, "Expand selected attribute"),
Expand All @@ -337,6 +347,8 @@ fn build_helps(
BuildHelpsItem::new(UserEvent::GoToBottom, "Select last row"),
BuildHelpsItem::new(UserEvent::GoToLeft, "Select first column"),
BuildHelpsItem::new(UserEvent::GoToRight, "Select last column"),
BuildHelpsItem::new(UserEvent::ScrollDown, "Scroll down"),
BuildHelpsItem::new(UserEvent::ScrollUp, "Scroll up"),
BuildHelpsItem::new(UserEvent::Confirm, "Open selected item"),
BuildHelpsItem::new(UserEvent::Reset, "Clear filter"),
BuildHelpsItem::new(UserEvent::Expand, "Expand selected attribute"),
Expand Down Expand Up @@ -384,6 +396,7 @@ fn build_short_helps(
BuildShortHelpsItem::group(vec![UserEvent::Down, UserEvent::Up], "Select row", 6),
BuildShortHelpsItem::group(vec![UserEvent::Left, UserEvent::Right], "Select col", 7),
BuildShortHelpsItem::group(vec![UserEvent::GoToTop, UserEvent::GoToBottom], "Top/Bottom", 11),
BuildShortHelpsItem::group(vec![UserEvent::ScrollDown, UserEvent::ScrollUp], "Scroll", 12),
BuildShortHelpsItem::single(UserEvent::Confirm, "Open", 2),
BuildShortHelpsItem::single(UserEvent::QuickFilter, "Filter", 5),
BuildShortHelpsItem::single(UserEvent::Expand, "Expand", 4),
Expand All @@ -400,6 +413,7 @@ fn build_short_helps(
BuildShortHelpsItem::group(vec![UserEvent::Down, UserEvent::Up], "Select row", 6),
BuildShortHelpsItem::group(vec![UserEvent::Left, UserEvent::Right], "Select col", 7),
BuildShortHelpsItem::group(vec![UserEvent::GoToTop, UserEvent::GoToBottom], "Top/Bottom", 11),
BuildShortHelpsItem::group(vec![UserEvent::ScrollDown, UserEvent::ScrollUp], "Scroll", 12),
BuildShortHelpsItem::single(UserEvent::Confirm, "Open", 2),
BuildShortHelpsItem::single(UserEvent::Reset, "Clear filter", 5),
BuildShortHelpsItem::single(UserEvent::Expand, "Expand", 4),
Expand Down
24 changes: 24 additions & 0 deletions src/widget/table.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,30 @@ impl TableState {
self.offset_col = self.total_cols - count;
}

pub fn scroll_down(&mut self) {
if self.total_rows == 0 {
return;
}
if self.offset_row + self.height < self.total_rows {
self.offset_row += 1;
if self.selected_row < self.offset_row {
self.selected_row = self.offset_row;
}
}
}

pub fn scroll_up(&mut self) {
if self.total_rows == 0 {
return;
}
if self.offset_row > 0 {
self.offset_row -= 1;
if self.selected_row - self.offset_row >= self.height {
self.selected_row = self.offset_row + self.height - 1;
}
}
}

pub fn select_index(&mut self, index: usize, offset_index: usize) {
if index >= self.total_rows {
return;
Expand Down