mirror of
https://github.com/ClementTsang/bottom
synced 2025-02-15 12:48:28 +00:00
Updated memory labels to be more straightforward in generation.
This commit is contained in:
parent
10b7aa6f78
commit
c5cd431e2e
4 changed files with 62 additions and 65 deletions
|
@ -85,16 +85,18 @@ impl DataCollection {
|
|||
new_entry.mem_data = mem_pt;
|
||||
|
||||
// Swap
|
||||
let swap_percent = harvested_data.swap.mem_used_in_mb as f64
|
||||
/ harvested_data.swap.mem_total_in_mb as f64
|
||||
* 100.0;
|
||||
let swap_joining_pt = if let Some((time, last_pt)) = self.timed_data_vec.last() {
|
||||
generate_joining_points(&time, last_pt.swap_data.0, &harvested_time, swap_percent)
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let swap_pt = (swap_percent, swap_joining_pt);
|
||||
new_entry.swap_data = swap_pt;
|
||||
if harvested_data.swap.mem_total_in_mb > 0 {
|
||||
let swap_percent = harvested_data.swap.mem_used_in_mb as f64
|
||||
/ harvested_data.swap.mem_total_in_mb as f64
|
||||
* 100.0;
|
||||
let swap_joining_pt = if let Some((time, last_pt)) = self.timed_data_vec.last() {
|
||||
generate_joining_points(&time, last_pt.swap_data.0, &harvested_time, swap_percent)
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
let swap_pt = (swap_percent, swap_joining_pt);
|
||||
new_entry.swap_data = swap_pt;
|
||||
}
|
||||
|
||||
// In addition copy over latest data for easy reference
|
||||
self.memory_harvest = harvested_data.memory.clone();
|
||||
|
|
|
@ -96,7 +96,8 @@ pub struct CanvasData {
|
|||
pub temp_sensor_data: Vec<Vec<String>>,
|
||||
pub process_data: Vec<ConvertedProcessData>,
|
||||
pub grouped_process_data: Vec<ConvertedProcessData>,
|
||||
pub memory_labels: Vec<(u64, u64)>,
|
||||
pub mem_label: String,
|
||||
pub swap_label: String,
|
||||
pub mem_data: Vec<(f64, f64)>,
|
||||
pub swap_data: Vec<(f64, f64)>,
|
||||
pub cpu_data: Vec<ConvertedCpuData>,
|
||||
|
@ -581,7 +582,6 @@ fn draw_memory_table<B: backend::Backend>(
|
|||
fn draw_memory_graph<B: backend::Backend>(f: &mut Frame<B>, app_state: &app::App, draw_loc: Rect) {
|
||||
let mem_data: &[(f64, f64)] = &(app_state.canvas_data.mem_data);
|
||||
let swap_data: &[(f64, f64)] = &(app_state.canvas_data.swap_data);
|
||||
let memory_labels: &[(u64, u64)] = &(app_state.canvas_data.memory_labels);
|
||||
|
||||
let x_axis: Axis<String> = Axis::default()
|
||||
.style(Style::default().fg(GRAPH_COLOUR))
|
||||
|
@ -591,20 +591,8 @@ fn draw_memory_graph<B: backend::Backend>(f: &mut Frame<B>, app_state: &app::App
|
|||
.bounds([-0.5, 100.5]) // Offset as the zero value isn't drawn otherwise...
|
||||
.labels(&["0%", "100%"]);
|
||||
|
||||
// TODO: [OPT] Move this
|
||||
let mem_name = "RAM:".to_string()
|
||||
+ &format!(
|
||||
"{:3}%",
|
||||
(mem_data.last().unwrap_or(&(0_f64, 0_f64)).1.round() as u64)
|
||||
) + &format!(
|
||||
" {:.1}GB/{:.1}GB",
|
||||
memory_labels.first().unwrap_or(&(0, 0)).0 as f64 / 1024.0,
|
||||
memory_labels.first().unwrap_or(&(0, 0)).1 as f64 / 1024.0
|
||||
);
|
||||
let swap_name: String;
|
||||
|
||||
let mut mem_canvas_vec: Vec<Dataset> = vec![Dataset::default()
|
||||
.name(&mem_name)
|
||||
.name(&app_state.canvas_data.mem_label)
|
||||
.marker(if app_state.use_dot {
|
||||
Marker::Dot
|
||||
} else {
|
||||
|
@ -614,35 +602,19 @@ fn draw_memory_graph<B: backend::Backend>(f: &mut Frame<B>, app_state: &app::App
|
|||
.data(&mem_data)];
|
||||
|
||||
if !(&swap_data).is_empty() {
|
||||
if let Some(last_canvas_result) = (&swap_data).last() {
|
||||
if last_canvas_result.1 >= 0.0 {
|
||||
swap_name = "SWP:".to_string()
|
||||
+ &format!(
|
||||
"{:3}%",
|
||||
(swap_data.last().unwrap_or(&(0_f64, 0_f64)).1.round() as u64)
|
||||
) + &format!(
|
||||
" {:.1}GB/{:.1}GB",
|
||||
memory_labels[1].0 as f64 / 1024.0,
|
||||
memory_labels[1].1 as f64 / 1024.0
|
||||
);
|
||||
mem_canvas_vec.push(
|
||||
Dataset::default()
|
||||
.name(&swap_name)
|
||||
.marker(if app_state.use_dot {
|
||||
Marker::Dot
|
||||
} else {
|
||||
Marker::Braille
|
||||
})
|
||||
.style(Style::default().fg(COLOUR_LIST[1]))
|
||||
.data(&swap_data),
|
||||
);
|
||||
}
|
||||
}
|
||||
mem_canvas_vec.push(
|
||||
Dataset::default()
|
||||
.name(&app_state.canvas_data.swap_label)
|
||||
.marker(if app_state.use_dot {
|
||||
Marker::Dot
|
||||
} else {
|
||||
Marker::Braille
|
||||
})
|
||||
.style(Style::default().fg(COLOUR_LIST[1]))
|
||||
.data(&swap_data),
|
||||
);
|
||||
}
|
||||
|
||||
// Memory usage table
|
||||
// draw_memory_table(f, &app_state, mem_labels, swap_labels, label_loc);
|
||||
|
||||
Chart::default()
|
||||
.block(
|
||||
Block::default()
|
||||
|
|
|
@ -358,21 +358,42 @@ pub fn update_swap_data_points(current_data: &data_janitor::DataCollection) -> V
|
|||
result
|
||||
}
|
||||
|
||||
pub fn update_mem_labels(current_data: &data_janitor::DataCollection) -> Vec<(u64, u64)> {
|
||||
let mut result: Vec<(u64, u64)> = Vec::new();
|
||||
pub fn update_mem_labels(current_data: &data_janitor::DataCollection) -> (String, String) {
|
||||
let mem_label = if current_data.memory_harvest.mem_total_in_mb == 0 {
|
||||
"".to_string()
|
||||
} else {
|
||||
"RAM:".to_string()
|
||||
+ &format!(
|
||||
"{:3.0}%",
|
||||
(current_data.memory_harvest.mem_used_in_mb as f64 * 100.0
|
||||
/ current_data.memory_harvest.mem_total_in_mb as f64)
|
||||
.round()
|
||||
) + &format!(
|
||||
" {:.1}GB/{:.1}GB",
|
||||
current_data.memory_harvest.mem_used_in_mb as f64 / 1024.0,
|
||||
current_data.memory_harvest.mem_total_in_mb as f64 / 1024.0
|
||||
)
|
||||
};
|
||||
|
||||
// This wants (u64, u64) values - left is usage in MB, right is total in MB
|
||||
result.push((
|
||||
current_data.memory_harvest.mem_used_in_mb,
|
||||
current_data.memory_harvest.mem_total_in_mb,
|
||||
));
|
||||
let swap_label = if current_data.swap_harvest.mem_total_in_mb == 0 {
|
||||
"".to_string()
|
||||
} else {
|
||||
"SWP:".to_string()
|
||||
+ &format!(
|
||||
"{:3.0}%",
|
||||
(current_data.swap_harvest.mem_used_in_mb as f64 * 100.0
|
||||
/ current_data.swap_harvest.mem_total_in_mb as f64)
|
||||
.round()
|
||||
) + &format!(
|
||||
" {:.1}GB/{:.1}GB",
|
||||
current_data.swap_harvest.mem_used_in_mb as f64 / 1024.0,
|
||||
current_data.swap_harvest.mem_total_in_mb as f64 / 1024.0
|
||||
)
|
||||
};
|
||||
|
||||
result.push((
|
||||
current_data.swap_harvest.mem_used_in_mb,
|
||||
current_data.swap_harvest.mem_total_in_mb,
|
||||
));
|
||||
debug!("{:?}", mem_label);
|
||||
|
||||
result
|
||||
(mem_label, swap_label)
|
||||
}
|
||||
|
||||
pub fn convert_network_data_points(
|
||||
|
|
|
@ -286,7 +286,9 @@ fn main() -> error::Result<()> {
|
|||
update_temp_row(&app.data, &app.temperature_type);
|
||||
app.canvas_data.mem_data = update_mem_data_points(&app.data_collection);
|
||||
app.canvas_data.swap_data = update_swap_data_points(&app.data_collection);
|
||||
app.canvas_data.memory_labels = update_mem_labels(&app.data_collection);
|
||||
let memory_and_swap_labels = update_mem_labels(&app.data_collection);
|
||||
app.canvas_data.mem_label = memory_and_swap_labels.0;
|
||||
app.canvas_data.swap_label = memory_and_swap_labels.1;
|
||||
app.canvas_data.cpu_data =
|
||||
update_cpu_data_points(app.show_average_cpu, &app.data);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue