This commit is contained in:
2026-03-22 11:16:12 +00:00
parent 0b0ead273d
commit 7e300a5193
2 changed files with 50 additions and 5 deletions
+9 -4
View File
@@ -48,11 +48,15 @@ impl Component for Menu {
.name("Battery") .name("Battery")
.marker(ratatui::symbols::Marker::Dot) .marker(ratatui::symbols::Marker::Dot)
.graph_type(ratatui::widgets::GraphType::Line) .graph_type(ratatui::widgets::GraphType::Line)
.style(Color::Black); .style(Color::White);
let x_axis = Axis::default().title("timeframe"); let x_axis = Axis::default()
.title("timeframe")
.bounds([0., 86400.])
.labels(["00:00", "06:00", "12:00", "18:00", "00:00"]);
let y_axis = Axis::default() let y_axis = Axis::default()
.title("Charge") .title("Charge")
.labels(["0%", "50%", "100%"]); .labels(["0%", "50%", "100%"])
.bounds([0., 100.]);
let graph_widget = Chart::new(vec![data_set]).x_axis(x_axis).y_axis(y_axis); let graph_widget = Chart::new(vec![data_set]).x_axis(x_axis).y_axis(y_axis);
f.render_widget(graph_widget, graph); f.render_widget(graph_widget, graph);
} }
@@ -77,10 +81,11 @@ impl Menu {
// println!("{:#?}", data); // println!("{:#?}", data);
let split_data = SplitData { let split_data = SplitData {
r#static: data.data_static,
chunks: data.data_chunks, chunks: data.data_chunks,
}; };
self.data = split_data.timeframe(0, 9999999999999); self.data = split_data.timeframe(0, 9999999999999);
// println!("{:#?}", self.data); // println!("{:?}", self.data);
} }
} }
+41 -1
View File
@@ -1,3 +1,7 @@
use std::time::SystemTime;
use std::time::UNIX_EPOCH;
use data::BatteryStatic;
use data::DataChunk; use data::DataChunk;
pub trait Graphable { pub trait Graphable {
@@ -18,11 +22,47 @@ impl Graphable for SplitData {
} }
}) })
.collect(); .collect();
filtered return self.normalise_data(&filtered, Calender::Day(1));
}
}
enum Calender {
Day(i32),
}
impl SplitData {
fn normalise_data(&self, data: &[(f64, f64)], metric: Calender) -> Vec<(f64, f64)> {
let mut result = Vec::new();
// Extract the day from the Calender enum
let day = match metric {
Calender::Day(d) => d,
};
let a = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_secs();
let day = a / 86400;
// Calculate the start of the day (00:00:00) in Unix timestamp
let start_of_day = (day as i64 * 86400) as f64;
let end_of_day = start_of_day + 86400.0; // End of the day
// Extract today's data and normalise
for &(timestamp, value) in data {
if timestamp >= start_of_day && timestamp < end_of_day {
let relative_time = timestamp - start_of_day; // Time since start of day
let normalised_value = (value / self.r#static.total_capacity as f64) * 100.0; // Percentage of battery
result.push((relative_time, normalised_value));
}
}
result
} }
} }
#[derive(Debug)] #[derive(Debug)]
pub struct SplitData { pub struct SplitData {
pub r#static: BatteryStatic,
pub chunks: Vec<DataChunk>, pub chunks: Vec<DataChunk>,
} }