Commit 6c1fa9e6d86f10002fbacfef71353e983ca024c0

Authored by David Mayerich
1 parent df98143c

added time estimates to the progress bar

Showing 1 changed file with 31 additions and 1 deletions   Show diff stats
stim/ui/progressbar.h
... ... @@ -5,7 +5,28 @@
5 5 #include <sstream>
6 6 using namespace std;
7 7  
8   -static void rtsProgressBar(unsigned int percent)
  8 +void stimPrintTime(unsigned long long s) {
  9 + char buffer[26];
  10 + std::cout << std::fixed << std::showpoint << std::setprecision(1);
  11 + if (s >= 60) { //if there are more than 60 seconds
  12 + unsigned long long m = s / 60; //get the number of minutes
  13 + s = s - m * 60; //get the number of remaining seconds
  14 + if (m > 60) { //if more than 60 minutes
  15 + unsigned long long h = m / 60;
  16 + m = m - h * 60; //get the number of remaining minutes
  17 + if (h > 24) { //if there are more than 24 hours
  18 + unsigned long long d = h / 24;
  19 + h = h - d * 24; //get the number of remaining hours
  20 + std::cout << " " << d << "d";
  21 + }
  22 + std::cout << " " << h << "h";
  23 + }
  24 + std::cout << " " << m << "m";
  25 + }
  26 + std::cout << " " << s << "s";
  27 +}
  28 +
  29 +static void rtsProgressBar(unsigned int percent, double elapsed_s = 0)
9 30 {
10 31 //std::cout<<percent<<std::endl;
11 32 stringstream bar;
... ... @@ -26,6 +47,15 @@ static void rtsProgressBar(unsigned int percent)
26 47 bar<<"]";
27 48 cout << "\r"; // carriage return back to beginning of line
28 49 cout << bar.str() << " " << slash[x] << " " << percent << " %"; // print the bars and percentage
  50 + if (elapsed_s > 0) {
  51 + stimPrintTime(elapsed_s);
  52 + if (percent > 0) {
  53 + std::cout << " / ";
  54 + double s_per_percent = elapsed_s / percent;
  55 + double total = s_per_percent * 100;
  56 + stimPrintTime(total);
  57 + }
  58 + }
29 59 cout.flush();
30 60 x++; // increment to make the slash appear to rotate
31 61 if(x == 4)
... ...