Skip to content

Commit 5e3db44

Browse files
adjust appearance
1 parent bfffd98 commit 5e3db44

File tree

2 files changed

+36
-17
lines changed

2 files changed

+36
-17
lines changed

src/components/editor.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ impl<'a> Component for Editor<'a> {
7676

7777
fn update(&mut self, action: Action, app_state: &AppState) -> Result<Option<Action>> {
7878
if let Action::MenuSelect(schema, table) = action {
79+
if app_state.query_task.is_some() {
80+
return Ok(None);
81+
}
7982
let query = format!("select * from {}.{} limit 100", schema, table);
8083
self.textarea = TextArea::from(vec![query.clone()]);
8184
self.command_tx.as_ref().unwrap().send(Action::Query(query))?;

src/components/menu.rs

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use crate::{
2727
pub enum MenuFocus {
2828
#[default]
2929
Schema,
30-
Table,
30+
Tables,
3131
}
3232

3333
pub trait SettableTableList<'a> {
@@ -71,7 +71,7 @@ impl Menu {
7171
MenuFocus::Schema => {
7272
self.list_state = ListState::default();
7373
},
74-
MenuFocus::Table => {
74+
MenuFocus::Tables => {
7575
self.list_state = ListState::default().with_selected(Some(0));
7676
},
7777
}
@@ -81,7 +81,7 @@ impl Menu {
8181

8282
pub fn scroll_down(&mut self) {
8383
match self.menu_focus {
84-
MenuFocus::Table => {
84+
MenuFocus::Tables => {
8585
if let Some(i) = self.list_state.selected() {
8686
let tables = self.table_map.get_index(self.schema_index).unwrap().1.to_owned();
8787
let filtered_tables: Vec<String> = tables
@@ -106,7 +106,7 @@ impl Menu {
106106

107107
pub fn scroll_up(&mut self) {
108108
match self.menu_focus {
109-
MenuFocus::Table => {
109+
MenuFocus::Tables => {
110110
if let Some(i) = self.list_state.selected() {
111111
self.list_state = ListState::default().with_selected(Some(i.saturating_sub(1)));
112112
}
@@ -117,7 +117,7 @@ impl Menu {
117117

118118
pub fn scroll_bottom(&mut self) {
119119
match self.menu_focus {
120-
MenuFocus::Table => {
120+
MenuFocus::Tables => {
121121
if let Some(i) = self.list_state.selected() {
122122
let tables = self.table_map.get_index(self.schema_index).unwrap().1.to_owned();
123123
let filtered_tables: Vec<String> = tables
@@ -141,7 +141,7 @@ impl Menu {
141141

142142
pub fn scroll_top(&mut self) {
143143
match self.menu_focus {
144-
MenuFocus::Table => {
144+
MenuFocus::Tables => {
145145
if let Some(i) = self.list_state.selected() {
146146
self.list_state = ListState::default().with_selected(Some(0));
147147
}
@@ -173,7 +173,7 @@ impl<'a> SettableTableList<'a> for Menu {
173173
});
174174
log::info!("table map: {:?}", self.table_map);
175175
if self.table_map.keys().len() == 1 {
176-
self.menu_focus = MenuFocus::Table;
176+
self.menu_focus = MenuFocus::Tables;
177177
self.list_state = ListState::default().with_selected(Some(0));
178178
} else {
179179
self.menu_focus = MenuFocus::Schema;
@@ -210,7 +210,7 @@ impl Component for Menu {
210210
}
211211
if let Some(Event::Key(key)) = event {
212212
match key.code {
213-
KeyCode::Right => self.change_focus(MenuFocus::Table),
213+
KeyCode::Right => self.change_focus(MenuFocus::Tables),
214214
KeyCode::Left => self.change_focus(MenuFocus::Schema),
215215
KeyCode::Down => self.scroll_down(),
216216
KeyCode::Up => self.scroll_up(),
@@ -228,7 +228,7 @@ impl Component for Menu {
228228
self.search = Some("".to_owned())
229229
}
230230
},
231-
KeyCode::Char('l') => self.change_focus(MenuFocus::Table),
231+
KeyCode::Char('l') => self.change_focus(MenuFocus::Tables),
232232
KeyCode::Char('h') => self.change_focus(MenuFocus::Schema),
233233
KeyCode::Char('j') => self.scroll_down(),
234234
KeyCode::Char('k') => self.scroll_up(),
@@ -242,6 +242,8 @@ impl Component for Menu {
242242
KeyCode::Enter => {
243243
if self.search.is_some() && self.search_focused {
244244
self.search_focused = false;
245+
} else if self.menu_focus == MenuFocus::Schema {
246+
self.change_focus(MenuFocus::Tables);
245247
} else if let Some(selected) = self.list_state.selected() {
246248
let (schema, tables) = self.table_map.get_index(self.schema_index).unwrap();
247249
let filtered_tables: Vec<String> = tables
@@ -264,13 +266,17 @@ impl Component for Menu {
264266
},
265267
KeyCode::Esc => self.reset_search(),
266268
KeyCode::Backspace => {
267-
if let Some(search) = self.search.as_mut() {
268-
if !search.is_empty() {
269-
search.pop();
270-
self.list_state = ListState::default().with_selected(Some(0));
271-
} else {
272-
self.reset_search();
269+
if self.search.is_some() && self.search_focused {
270+
if let Some(search) = self.search.as_mut() {
271+
if !search.is_empty() {
272+
search.pop();
273+
self.list_state = ListState::default().with_selected(Some(0));
274+
} else {
275+
self.reset_search();
276+
}
273277
}
278+
} else if self.menu_focus == MenuFocus::Tables {
279+
self.change_focus(MenuFocus::Schema);
274280
}
275281
},
276282
_ => {},
@@ -343,11 +349,21 @@ impl Component for Menu {
343349
let available_height = block.inner(parent_block.inner(area)).height as usize;
344350
let list = List::default().items(filtered_tables).block(block).highlight_style(
345351
Style::default()
346-
.bg(if focused && !self.search_focused { Color::Green } else { Color::White })
352+
.bg(if focused && !self.search_focused && self.menu_focus == MenuFocus::Tables {
353+
Color::Green
354+
} else {
355+
Color::White
356+
})
347357
.fg(Color::DarkGray),
348358
);
349359
f.render_stateful_widget(list, layout[layout_index], &mut self.list_state);
350-
let vertical_scrollbar = Scrollbar::new(ScrollbarOrientation::VerticalRight).symbols(scrollbar::VERTICAL);
360+
let vertical_scrollbar = Scrollbar::new(ScrollbarOrientation::VerticalRight)
361+
.symbols(scrollbar::VERTICAL)
362+
.style(Style::default().fg(if focused && !self.search_focused && self.menu_focus == MenuFocus::Tables {
363+
Color::Green
364+
} else {
365+
Color::DarkGray
366+
}));
351367
let mut vertical_scrollbar_state =
352368
ScrollbarState::new(table_length.saturating_sub(available_height)).position(self.list_state.offset());
353369
f.render_stateful_widget(vertical_scrollbar, block_margin, &mut vertical_scrollbar_state);

0 commit comments

Comments
 (0)