Skip to content

Commit

Permalink
refactor: generate_block()
Browse files Browse the repository at this point in the history
insert area in gui_state in generate_block, don't pass in currently
selected panel, instead get from gui_state itself
  • Loading branch information
mrjackwills committed Apr 30, 2022
1 parent 06bb138 commit 32705a6
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 45 deletions.
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</p>

<p align="center">
A simple tui to view and control docker containers
A simple tui to view & control docker containers
</p>

<p align="center">
Expand Down Expand Up @@ -55,7 +55,6 @@ available command line arguments

requires docker & <a href='https://github.com/cross-rs/cross' target='_blank' rel='noopener noreferrer'>cross-rs</a>


#### 64bit pi (pi 4, pi zero w 2)

```cross build --target aarch64-unknown-linux-gnu --release```
Expand Down
73 changes: 34 additions & 39 deletions src/ui/draw_blocks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<SelectablePanel>,
app_data: &Arc<Mutex<AppData>>,
selected_panel: &SelectablePanel,
area: Rect,
gui_state: &Arc<Mutex<GuiState>>,
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
}
Expand All @@ -79,13 +79,8 @@ pub fn draw_commands<B: Backend>(
f: &mut Frame<'_, B>,
gui_state: &Arc<Mutex<GuiState>>,
index: Option<usize>,
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
Expand Down Expand Up @@ -125,13 +120,14 @@ pub fn draw_containers<B: Backend>(
area: Rect,
f: &mut Frame<'_, B>,
gui_state: &Arc<Mutex<GuiState>>,
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()
Expand Down Expand Up @@ -216,25 +212,24 @@ pub fn draw_containers<B: Backend>(
}
}

/// Draw the selectable panels
/// Draw the logs panels
pub fn draw_logs<B: Backend>(
app_data: &Arc<Mutex<AppData>>,
area: Rect,
f: &mut Frame<'_, B>,
gui_state: &Arc<Mutex<GuiState>>,
index: Option<usize>,
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())
Expand Down
4 changes: 0 additions & 4 deletions src/ui/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,6 @@ fn ui<B: Backend>(
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();
Expand Down Expand Up @@ -197,7 +196,6 @@ fn ui<B: Backend>(
top_panel[0],
f,
gui_state,
&selected_panel,
&column_widths,
);

Expand All @@ -208,7 +206,6 @@ fn ui<B: Backend>(
f,
gui_state,
log_index,
&selected_panel,
);
}

Expand All @@ -219,7 +216,6 @@ fn ui<B: Backend>(
gui_state,
log_index,
loading_icon.to_owned(),
&selected_panel,
);

draw_heading_bar(
Expand Down

0 comments on commit 32705a6

Please sign in to comment.