From ce797d2025da869637c99ced8517dae2bb60f387 Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Tue, 24 Sep 2024 15:16:16 +0200 Subject: [PATCH] WIP --- .../binning/timeweight/timeweight_events.rs | 3 +- crates/items_2/src/binning/valuetype.rs | 9 +++-- crates/items_2/src/vecpreview.rs | 35 ++++++++++++++++--- 3 files changed, 38 insertions(+), 9 deletions(-) diff --git a/crates/items_2/src/binning/timeweight/timeweight_events.rs b/crates/items_2/src/binning/timeweight/timeweight_events.rs index 39db0d9..9dcd7df 100644 --- a/crates/items_2/src/binning/timeweight/timeweight_events.rs +++ b/crates/items_2/src/binning/timeweight/timeweight_events.rs @@ -407,8 +407,6 @@ where { // TODO push bin to output. let res = b.agg.result_and_reset_for_new_bin(); - let cnt = b.cnt; - b.cnt = 0; self.out.push_back( b.active_beg, b.active_end, @@ -426,6 +424,7 @@ where b.active_beg = ts1; b.active_end = ts1.add_dt_nano(b.active_len); b.filled_until = ts1; + b.cnt = 0; self.inner_a.minmax = Some((lst.clone(), lst.clone())); } else { self.inner_a.inner_b.fill_until(ts, LstRef(lst)); diff --git a/crates/items_2/src/binning/valuetype.rs b/crates/items_2/src/binning/valuetype.rs index c15af30..f6f25cb 100644 --- a/crates/items_2/src/binning/valuetype.rs +++ b/crates/items_2/src/binning/valuetype.rs @@ -3,6 +3,7 @@ use super::binnedvaluetype::BinnedNumericValue; use super::container_events::Container; use super::container_events::EventValueType; use crate::vecpreview::PreviewRange; +use core::fmt; use netpod::DtNano; use netpod::EnumVariant; use serde::Deserialize; @@ -16,8 +17,12 @@ pub struct EnumVariantContainer { } impl PreviewRange for EnumVariantContainer { - fn preview(&self) -> &dyn core::fmt::Debug { - todo!() + fn preview<'a>(&'a self) -> Box { + let ret = crate::vecpreview::PreviewCell { + a: self.ixs.front(), + b: self.ixs.back(), + }; + Box::new(ret) } } diff --git a/crates/items_2/src/vecpreview.rs b/crates/items_2/src/vecpreview.rs index b3f85bd..74f23ec 100644 --- a/crates/items_2/src/vecpreview.rs +++ b/crates/items_2/src/vecpreview.rs @@ -1,13 +1,38 @@ use core::fmt; use std::collections::VecDeque; -pub trait PreviewRange { - fn preview(&self) -> &dyn fmt::Debug; +pub struct PreviewCell<'a, T> { + pub a: Option<&'a T>, + pub b: Option<&'a T>, } -impl PreviewRange for VecDeque { - fn preview(&self) -> &dyn fmt::Debug { - todo!() +impl<'a, T> fmt::Debug for PreviewCell<'a, T> +where + T: fmt::Debug, +{ + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + match (self.a.as_ref(), self.b.as_ref()) { + (Some(a), Some(b)) => write!(fmt, "{:?} .. {:?}", a, b), + (Some(a), None) => write!(fmt, "{:?}", a), + _ => write!(fmt, "(empty)"), + } + } +} + +pub trait PreviewRange { + fn preview<'a>(&'a self) -> Box; +} + +impl PreviewRange for VecDeque +where + T: fmt::Debug, +{ + fn preview<'a>(&'a self) -> Box { + let ret = PreviewCell { + a: self.front(), + b: if self.len() <= 1 { None } else { self.back() }, + }; + Box::new(ret) } }