implement `reset`

pull/30/head
Takayuki Maeda 3 years ago
parent 9846d89741
commit 13d343af56

@ -191,7 +191,6 @@ impl App {
.get_columns(&database, &table.name)
.await?;
self.structure_table = TableComponent::new(records, headers);
self.table_status
.update(self.record_table.len() as u64, table);
}

@ -16,10 +16,10 @@ use unicode_width::UnicodeWidthStr;
pub struct TableComponent {
pub state: TableState,
select_state: TableState,
pub headers: Vec<String>,
pub rows: Vec<Vec<String>>,
pub eod: bool,
select_state: TableState,
selected_left_column_index: usize,
selected_right_cell: Option<(usize, usize)>,
column_page_start: std::cell::Cell<usize>,
@ -59,6 +59,12 @@ impl TableComponent {
}
}
pub fn reset(&mut self) {
self.select_state.select(None);
self.selected_right_cell = None;
self.select_entire_row = false;
}
pub fn end(&mut self) {
self.eod = true;
}
@ -74,7 +80,7 @@ impl TableComponent {
}
None => None,
};
self.select_entire_row = false;
self.reset();
self.state.select(i);
}
@ -103,7 +109,7 @@ impl TableComponent {
}
None => None,
};
self.select_entire_row = false;
self.reset();
self.state.select(i);
}
@ -125,7 +131,7 @@ impl TableComponent {
if self.rows.is_empty() {
return;
}
self.state.select(None);
self.reset();
self.state.select(Some(0));
}
@ -133,6 +139,7 @@ impl TableComponent {
if self.rows.is_empty() {
return;
}
self.reset();
self.state.select(Some(self.rows.len() - 1));
}
@ -143,7 +150,7 @@ impl TableComponent {
if self.selected_left_column_index >= self.headers.len().saturating_sub(1) {
return;
}
self.select_entire_row = false;
self.reset();
self.selected_left_column_index += 1;
}
@ -154,7 +161,7 @@ impl TableComponent {
if self.selected_left_column_index == 0 {
return;
}
self.select_entire_row = false;
self.reset();
self.selected_left_column_index -= 1;
}
@ -486,49 +493,38 @@ impl Component for TableComponent {
match key {
Key::Char('h') => {
self.previous_column();
self.selected_right_cell = None;
return Ok(EventState::Consumed);
}
Key::Char('j') => {
self.next(1);
self.selected_right_cell = None;
self.select_state.select(None);
return Ok(EventState::NotConsumed);
}
Key::Ctrl('d') => {
self.next(10);
self.selected_right_cell = None;
return Ok(EventState::NotConsumed);
}
Key::Char('k') => {
self.previous(1);
self.selected_right_cell = None;
self.select_state.select(None);
return Ok(EventState::Consumed);
}
Key::Ctrl('u') => {
self.previous(10);
self.selected_right_cell = None;
return Ok(EventState::Consumed);
}
Key::Char('g') => {
self.scroll_top();
self.selected_right_cell = None;
return Ok(EventState::Consumed);
}
Key::Char('r') => {
self.select_entire_row = true;
self.selected_right_cell = None;
return Ok(EventState::Consumed);
}
Key::Char('G') => {
self.scroll_bottom();
self.selected_right_cell = None;
return Ok(EventState::Consumed);
}
Key::Char('l') => {
self.next_column();
self.selected_right_cell = None;
return Ok(EventState::Consumed);
}
Key::Char('H') => {

Loading…
Cancel
Save