From b19eeb6c96f330174340bca41599d125db8fef81 Mon Sep 17 00:00:00 2001 From: brotoskyj Date: Thu, 4 Dec 2025 11:57:49 -0500 Subject: [PATCH] Fixed Progress Bar Changed date math so that the last date from the first response from the API is the minimum value for the progress bar. This gives true progress percentages from the first date to the last date on the last request. #36 --- airlock_libs/Cargo.lock | 2 +- airlock_libs/Cargo.toml | 2 +- airlock_libs/pyproject.toml | 2 +- airlock_libs/src/services.rs | 19 +++++++++++++------ requirements.txt | 2 +- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/airlock_libs/Cargo.lock b/airlock_libs/Cargo.lock index ca2d548..719ddba 100644 --- a/airlock_libs/Cargo.lock +++ b/airlock_libs/Cargo.lock @@ -26,7 +26,7 @@ dependencies = [ [[package]] name = "airlock_libs" -version = "5.1.0" +version = "5.1.1" dependencies = [ "chrono", "crossbeam", diff --git a/airlock_libs/Cargo.toml b/airlock_libs/Cargo.toml index 36647a0..02c54b3 100644 --- a/airlock_libs/Cargo.toml +++ b/airlock_libs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "airlock_libs" -version = "5.1.0" +version = "5.1.1" edition = "2024" [lib] diff --git a/airlock_libs/pyproject.toml b/airlock_libs/pyproject.toml index 02f03a9..7083989 100644 --- a/airlock_libs/pyproject.toml +++ b/airlock_libs/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "airlock_libs" -version = "5.1.0" +version = "5.1.1" description = "Airlock Digital API Wrapper" readme = "README.md" license = { text = "AGPL-3.0-only" } diff --git a/airlock_libs/src/services.rs b/airlock_libs/src/services.rs index ce95090..aee1edd 100644 --- a/airlock_libs/src/services.rs +++ b/airlock_libs/src/services.rs @@ -75,7 +75,7 @@ pub fn pull_policy_exec_histories( } let mut checkpoint_number: String = SkipBack::find_checkpoint(days).to_string(); let multi_progress = MultiProgress::new(); - multi_progress.set_draw_target(ProgressDrawTarget::stdout()); + multi_progress.set_draw_target(ProgressDrawTarget::stderr()); let progress_bar = multi_progress.add(ProgressBar::new(100)); progress_bar.set_style( ProgressStyle::default_bar() @@ -178,6 +178,7 @@ pub fn pull_policy_exec_histories( } } }); + let mut first_date: Option = None; tracer.in_span("Airlock Data Retreival", |cx| { let span = cx.span(); span.set_attribute(Key::new("Days").string(days.to_string())); @@ -209,11 +210,17 @@ pub fn pull_policy_exec_histories( "%Y-%m-%dT%H:%M:%SZ", ) { - let date_diff = Local::now().naive_local().date() - last_date; - let percentage_diff = - ((days - date_diff.num_days()) as f64 / days as f64 * 100.0).round() as u64; - progress_bar.set_position(percentage_diff); - progress_bar.set_message("Total Percent Complete"); + if first_date.is_none() { + first_date = Some(last_date); + } + if let Some(base_date) = first_date { + let date_diff = last_date - base_date; + let total_span = (Local::now().naive_local().date() - base_date).num_days(); + let percentage = ((date_diff.num_days() as f64 / total_span as f64) * 100.0) + .clamp(0.0, 100.0) + .round() as u64; + progress_bar.set_position(percentage); + } } } }); diff --git a/requirements.txt b/requirements.txt index 94ee402..ea2bce2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,4 @@ urllib3==2.5.0 pyperclip==1.11.0 --extra-index-url https://git.racooncity.org/api/packages/brotoskyj/pypi/simple/ -airlock_libs==5.1.0 \ No newline at end of file +airlock_libs==5.1.1 \ No newline at end of file