Improve display log

This commit is contained in:
Daniel M 2021-03-30 19:07:18 +02:00
parent bc84eb1c2a
commit 9edb2daf86

View File

@ -4,9 +4,10 @@ use std::io::stdout;
use tokio::sync::mpsc;
use crossterm::cursor::{ MoveUp };
use crossterm::cursor::{ MoveToPreviousLine };
use crossterm::execute;
use crossterm::terminal::{ Clear, ClearType };
use crossterm::style::{ Print };
use crate::errors::*;
@ -85,58 +86,50 @@ fn print_accumulated_report(statuses: & HashMap<i32, InfoHolder>, msg_queue: &mu
execute!(
stdout(),
crossterm::cursor::Hide,
MoveUp(moved_lines)
MoveToPreviousLine(moved_lines)
)?;
for msg in msg_queue.drain(..) {
let ct_now = chrono::Local::now();
print!("{} > {}", ct_now.format("%H:%M:%S"), msg);
execute!(
stdout(),
Clear(ClearType::UntilNewLine)
Print(format!("{} > {}", ct_now.format("%H:%M:%S"), msg)),
Clear(ClearType::UntilNewLine),
Print("\n")
)?;
println!();
}
print!("----------------------------------------");
execute!(
stdout(),
Clear(ClearType::UntilNewLine)
Print(format!("----------------------------------------")),
Clear(ClearType::UntilNewLine),
Print("\n")
)?;
println!();
for (_k, v) in statuses {
let percent_complete = v.progress as f64 / v.total_size as f64 * 100.0;
print!("Status: {:6.2} mb/s {:5.2}% completed '{}'", v.speed_mbps, percent_complete, v.filename);
execute!(
stdout(),
Clear(ClearType::UntilNewLine)
Print(format!("Status: {:6.2} mb/s {:5.2}% completed '{}'", v.speed_mbps, percent_complete, v.filename)),
Clear(ClearType::UntilNewLine),
Print("\n")
)?;
println!("");
dl_speed_sum += v.speed_mbps;
}
println!();
if statuses.len() != 0 {
print!(" =>> Accumulated download speed: {:6.2} mb/s", dl_speed_sum);
}
execute!(
stdout(),
Clear(ClearType::UntilNewLine)
)?;
println!("");
execute!(
stdout(),
Clear(ClearType::CurrentLine),
Print("\n"),
Print(format!(" =>> Accumulated download speed: {:6.2} mb/s", dl_speed_sum)),
Clear(ClearType::UntilNewLine),
Print("\n"),
Clear(ClearType::FromCursorDown),
crossterm::cursor::Show
)?;
@ -215,10 +208,10 @@ pub async fn watch_and_print_reports(mut receiver: mpsc::UnboundedReceiver<DlRep
execute!(
stdout(),
MoveUp(2)
MoveToPreviousLine(2),
Print("All done!"),
Clear(ClearType::FromCursorDown)
)?;
println!("All done!");
Ok(())
}