architecture

pull/2/head
Takayuki Maeda 3 years ago
parent 1daec68bb2
commit ae7b2a32af

@ -158,8 +158,32 @@ impl Default for App {
}
impl App {
pub fn new(title: &str, enhanced_graphics: bool) -> App {
Self::default()
pub fn next(&mut self) {
let i = match self.selected_database.selected() {
Some(i) => {
if i >= self.databases.len() - 1 {
0
} else {
i + 1
}
}
None => 0,
};
self.selected_database.select(Some(i));
}
pub fn previous(&mut self) {
let i = match self.selected_database.selected() {
Some(i) => {
if i == 0 {
self.databases.len() - 1
} else {
i - 1
}
}
None => 0,
};
self.selected_database.select(Some(i));
}
pub fn next_database(&mut self) {

@ -0,0 +1,43 @@
use tui::widgets::TableState;
pub struct TableList {
state: TableState,
tables: Vec<Vec<String>>,
}
impl TableList {
fn new() -> Self {
Self {
state: TableState::default(),
tables: vec![],
}
}
pub fn next(&mut self) {
let i = match self.state.selected() {
Some(i) => {
if i >= self.tables.len() - 1 {
0
} else {
i + 1
}
}
None => 0,
};
self.state.select(Some(i));
}
pub fn previous(&mut self) {
let i = match self.state.selected() {
Some(i) => {
if i == 0 {
self.tables.len() - 1
} else {
i - 1
}
}
None => 0,
};
self.state.select(Some(i));
}
}

@ -87,14 +87,17 @@ pub fn draw<B: Backend>(f: &mut Frame<'_, B>, app: &mut App) -> anyhow::Result<(
f.render_stateful_widget(tasks, left_chunks[0], &mut app.selected_database);
let databases = app.databases.clone();
let tables: Vec<ListItem> = databases[app.selected_database.selected().unwrap_or(0)]
.tables
.iter()
.map(|i| {
ListItem::new(vec![Spans::from(Span::raw(&i.name))])
.style(Style::default().fg(Color::White))
})
.collect();
let tables: Vec<ListItem> = databases[match app.selected_database.selected() {
Some(index) => index,
None => 0,
}]
.tables
.iter()
.map(|i| {
ListItem::new(vec![Spans::from(Span::raw(&i.name))])
.style(Style::default().fg(Color::White))
})
.collect();
let tasks = List::new(tables)
.block(Block::default().borders(Borders::ALL).title("Tables"))
.highlight_style(Style::default().fg(Color::Green))

Loading…
Cancel
Save