From 0ab23958058f33071056e576d9a5333d63587e93 Mon Sep 17 00:00:00 2001 From: Doloro1978 Date: Wed, 18 Mar 2026 23:30:20 +0000 Subject: [PATCH] wip --- src/tui/data_graph.rs | 20 ++++++++++++++++---- src/tui/main.rs | 44 +++++++++++++++++++++---------------------- 2 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/tui/data_graph.rs b/src/tui/data_graph.rs index 04ff452..d559af0 100644 --- a/src/tui/data_graph.rs +++ b/src/tui/data_graph.rs @@ -3,15 +3,27 @@ use ratatui::widgets::Dataset; use data::DataChunk; trait Graphable { - fn as_dataset(&self) -> Dataset<'_>; + fn timeframe(&self, start: u64, end: u64) -> Vec<(f64, f64)>; } impl Graphable for SplitData { - fn as_dataset(&self) -> Dataset<'_> { - unimplemented!(""); + fn timeframe(&self, start: u64, end: u64) -> Vec<(f64, f64)> { + let mut data: Vec<(f64, f64)> = Vec::new(); + let filtered: Vec<(f64, f64)> = self + .chunks + .iter() + .filter_map(|x| { + if x.timestamp >= start && x.timestamp <= end { + Some((x.timestamp as f64, x.battery.charge as f64)) + } else { + None + } + }) + .collect(); + data } } struct SplitData { - chunks: DataChunk, + chunks: Vec, } diff --git a/src/tui/main.rs b/src/tui/main.rs index 36c5eab..5b91d6e 100644 --- a/src/tui/main.rs +++ b/src/tui/main.rs @@ -8,28 +8,26 @@ use ratatui::{ mod data_graph; fn main() -> Result<(), Box> { - ratatui::run(|terminal| { - loop { - terminal.draw(|frame| { - let layout = frame.area().layout_vec(&Layout::vertical([ - Constraint::Percentage(33), - Constraint::Percentage(33), - Constraint::Percentage(33), - ])); - let middle = layout[1].layout_vec(&Layout::horizontal([ - Constraint::Percentage(33), - Constraint::Percentage(33), - Constraint::Percentage(33), - ])); - let widget = Block::new() - .border_type(ratatui::widgets::BorderType::Rounded) - .borders(Borders::ALL) - .title("Mroew"); - frame.render_widget(widget, middle[1]); - })?; - if crossterm::event::read().unwrap().is_key_press() { - break Ok(()); - }; - } + ratatui::run(|terminal| loop { + terminal.draw(|frame| { + let layout = frame.area().layout_vec(&Layout::vertical([ + Constraint::Percentage(33), + Constraint::Percentage(33), + Constraint::Percentage(33), + ])); + let middle = layout[1].layout_vec(&Layout::horizontal([ + Constraint::Percentage(33), + Constraint::Percentage(33), + Constraint::Percentage(33), + ])); + let widget = Block::new() + .border_type(ratatui::widgets::BorderType::Rounded) + .borders(Borders::ALL) + .title("Mroew"); + frame.render_widget(widget, middle[1]); + })?; + if crossterm::event::read().unwrap().is_key_press() { + break Ok(()); + }; }) }