diff --git a/include/indicators/block_progress_bar.hpp b/include/indicators/block_progress_bar.hpp index c3108bd..fa532c5 100644 --- a/include/indicators/block_progress_bar.hpp +++ b/include/indicators/block_progress_bar.hpp @@ -208,9 +208,14 @@ private: std::cout << " " << std::min(static_cast(progress_), size_t(100)) << "%"; } + auto &saved_start_time = get_value(); + if (get_value()) { std::cout << " ["; - details::write_duration(std::cout, elapsed); + if (saved_start_time) + details::write_duration(std::cout, elapsed); + else + std::cout << "00:00s"; } if (get_value()) { @@ -218,10 +223,16 @@ private: std::cout << "<"; else std::cout << " ["; - auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(elapsed.count() * 100 / progress_) : 0); - auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta); - details::write_duration(std::cout, remaining); + + if (saved_start_time) { + auto eta = std::chrono::nanoseconds( + progress_ > 0 ? static_cast(elapsed.count() * 100 / progress_) : 0); + auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta); + details::write_duration(std::cout, remaining); + } else { + std::cout << "00:00s"; + } + std::cout << "]"; } else { if (get_value()) diff --git a/include/indicators/progress_bar.hpp b/include/indicators/progress_bar.hpp index 11004b7..02c514f 100644 --- a/include/indicators/progress_bar.hpp +++ b/include/indicators/progress_bar.hpp @@ -226,9 +226,14 @@ private: std::cout << " " << std::min(progress_, size_t(100)) << "%"; } + auto &saved_start_time = get_value(); + if (get_value()) { std::cout << " ["; - details::write_duration(std::cout, elapsed_); + if (saved_start_time) + details::write_duration(std::cout, elapsed_); + else + std::cout << "00:00s"; } if (get_value()) { @@ -236,10 +241,16 @@ private: std::cout << "<"; else std::cout << " ["; - auto eta = std::chrono::nanoseconds( - progress_ > 0 ? static_cast(elapsed_.count() * 100 / progress_) : 0); - auto remaining = eta > elapsed_ ? (eta - elapsed_) : (elapsed_ - eta); - details::write_duration(std::cout, remaining); + + if (saved_start_time) { + auto eta = std::chrono::nanoseconds( + progress_ > 0 ? static_cast(elapsed_.count() * 100 / progress_) : 0); + auto remaining = eta > elapsed_ ? (eta - elapsed_) : (elapsed_ - eta); + details::write_duration(std::cout, remaining); + } else { + std::cout << "00:00s"; + } + std::cout << "]"; } else { if (get_value())