diff --git a/README.md b/README.md index 8035554..525ab08 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

- A simple tui to view and control docker containers + A simple tui to view & control docker containers

@@ -55,7 +55,6 @@ available command line arguments requires docker & cross-rs - #### 64bit pi (pi 4, pi zero w 2) ```cross build --target aarch64-unknown-linux-gnu --release``` diff --git a/src/ui/draw_blocks.rs b/src/ui/draw_blocks.rs index 182462c..ae5828f 100644 --- a/src/ui/draw_blocks.rs +++ b/src/ui/draw_blocks.rs @@ -42,32 +42,32 @@ const MARGIN: &str = " "; /// Generate block, add a border if is the selected panel, /// add custom title based on state of each panel fn generate_block<'a>( - selectable_panel: Option, app_data: &Arc>, - selected_panel: &SelectablePanel, + area: Rect, + gui_state: &Arc>, + panel: SelectablePanel, ) -> Block<'a> { + gui_state.lock().insert_into_area_map(panel, area); let mut block = Block::default() .borders(Borders::ALL) .border_type(BorderType::Rounded); - - if let Some(panel) = selectable_panel { - let title = match panel { - SelectablePanel::Containers => { - format!( - " {} {} ", - panel.title(), - app_data.lock().containers.get_state_title() - ) - } - SelectablePanel::Logs => { - format!(" {} {} ", panel.title(), app_data.lock().get_log_title()) - } - _ => String::from(""), - }; - block = block.title(title); - if selected_panel == &panel { - block = block.border_style(Style::default().fg(Color::LightCyan)); + let current_selected_panel = gui_state.lock().selected_panel; + let title = match panel { + SelectablePanel::Containers => { + format!( + " {} {} ", + panel.title(), + app_data.lock().containers.get_state_title() + ) } + SelectablePanel::Logs => { + format!(" {} {} ", panel.title(), app_data.lock().get_log_title()) + } + _ => String::from(""), + }; + block = block.title(title); + if current_selected_panel == panel { + block = block.border_style(Style::default().fg(Color::LightCyan)); } block } @@ -79,13 +79,8 @@ pub fn draw_commands( f: &mut Frame<'_, B>, gui_state: &Arc>, index: Option, - selected_panel: &SelectablePanel, ) { - let panel = SelectablePanel::Commands; - let block = generate_block(Some(panel), app_data, selected_panel); - - gui_state.lock().insert_into_area_map(panel, area); - + let block = generate_block(app_data, area, gui_state, SelectablePanel::Commands); if let Some(i) = index { let items = app_data.lock().containers.items[i] .docker_controls @@ -125,13 +120,14 @@ pub fn draw_containers( area: Rect, f: &mut Frame<'_, B>, gui_state: &Arc>, - selected_panel: &SelectablePanel, widths: &Columns, ) { - let panel = SelectablePanel::Containers; - let block = generate_block(Some(panel), app_data, selected_panel); - - gui_state.lock().insert_into_area_map(panel, area); + let block = generate_block( + app_data, + area, + gui_state, + SelectablePanel::Containers, + ); let items = app_data .lock() @@ -216,7 +212,7 @@ pub fn draw_containers( } } -/// Draw the selectable panels +/// Draw the logs panels pub fn draw_logs( app_data: &Arc>, area: Rect, @@ -224,17 +220,16 @@ pub fn draw_logs( gui_state: &Arc>, index: Option, loading_icon: String, - selected_panel: &SelectablePanel, ) { - let panel = SelectablePanel::Logs; - - gui_state.lock().insert_into_area_map(panel, area); - - let block = generate_block(Some(panel), app_data, selected_panel); + let block = generate_block( + app_data, + area, + gui_state, + SelectablePanel::Logs, + ); let init = app_data.lock().init; if !init { - // let icon = gui_state.lock().get_loading(); let parsing_logs = format!("parsing logs {}", loading_icon); let paragraph = Paragraph::new(parsing_logs) .style(Style::default()) diff --git a/src/ui/mod.rs b/src/ui/mod.rs index 15d04d2..144c86d 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -153,7 +153,6 @@ fn ui( let has_containers = !app_data.lock().containers.items.is_empty(); let has_error = app_data.lock().get_error(); let log_index = app_data.lock().get_selected_log_index(); - let selected_panel = gui_state.lock().selected_panel; let show_help = gui_state.lock().show_help; let info_text = gui_state.lock().info_box_text.clone(); let loading_icon = gui_state.lock().get_loading(); @@ -197,7 +196,6 @@ fn ui( top_panel[0], f, gui_state, - &selected_panel, &column_widths, ); @@ -208,7 +206,6 @@ fn ui( f, gui_state, log_index, - &selected_panel, ); } @@ -219,7 +216,6 @@ fn ui( gui_state, log_index, loading_icon.to_owned(), - &selected_panel, ); draw_heading_bar(