From 1b04d627911863f9b2f433e7fe3d7bc340108bcc Mon Sep 17 00:00:00 2001 From: Jorge Leitao Date: Sun, 28 Jan 2024 20:02:32 +0100 Subject: [PATCH] Added export of legs for QA/audit --- examples/country.rs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/examples/country.rs b/examples/country.rs index 36f1b80..7e7a7d6 100644 --- a/examples/country.rs +++ b/examples/country.rs @@ -27,6 +27,21 @@ fn render(context: &Context) -> Result<(), Box> { Ok(()) } +#[derive(serde::Serialize)] +struct LegOut { + tail_number: String, + model: String, + start: String, + end: String, + duration: String, + from_lat: f64, + from_lon: f64, + to_lat: f64, + to_lon: f64, + commercial_emissions_kg: usize, + emissions_kg: usize, +} + #[derive(serde::Serialize)] pub struct CountryContext { pub name: String, @@ -311,6 +326,32 @@ async fn main() -> Result<(), Box> { .try_collect::>() .await?; + let mut wtr = csv::Writer::from_writer(vec![]); + for ((tail_number, model), legs) in legs.iter() { + for leg in legs { + wtr.serialize(LegOut { + tail_number: tail_number.to_string(), + model: model.to_string(), + start: leg.from().datetime().to_string(), + end: leg.to().datetime().to_string(), + duration: leg.duration().to_string(), + from_lat: leg.from().latitude(), + from_lon: leg.from().longitude(), + to_lat: leg.to().latitude(), + to_lon: leg.to().longitude(), + commercial_emissions_kg: emissions(leg.from().pos(), leg.to().pos(), Class::First) + as usize, + emissions_kg: leg_co2_kg( + consumptions.get(model).expect(model).gph as f64, + leg.duration(), + ) as usize, + }) + .unwrap() + } + } + let data_csv = wtr.into_inner().unwrap(); + std::fs::write("data.csv", data_csv)?; + let number_of_private_jets = Fact { claim: legs.iter().filter(|x| x.1.len() > 0).count().to_formatted_string(&Locale::en), source: format!(