From d0a0cc5e8c4b028ea5de3118985b71bd74b15be6 Mon Sep 17 00:00:00 2001 From: ClementTsang Date: Tue, 4 Jan 2022 01:30:58 -0500 Subject: Time graph --- src/app/layout_manager.rs | 20 +++++------ src/tuine/component/base/time_graph.rs | 52 ++++++++++++++++++++++++++++- src/tuine/component/mod.rs | 2 +- src/tuine/component/widget/battery_table.rs | 2 +- src/tuine/component/widget/cpu_graph.rs | 2 +- src/tuine/component/widget/cpu_simple.rs | 2 +- src/tuine/component/widget/disk_table.rs | 2 +- src/tuine/component/widget/mem_graph.rs | 2 +- src/tuine/component/widget/mem_simple.rs | 2 +- src/tuine/component/widget/mod.rs | 2 +- src/tuine/component/widget/net_graph.rs | 2 +- src/tuine/component/widget/net_simple.rs | 2 +- src/tuine/component/widget/process_table.rs | 2 +- src/tuine/component/widget/temp_table.rs | 2 +- 14 files changed, 73 insertions(+), 23 deletions(-) diff --git a/src/app/layout_manager.rs b/src/app/layout_manager.rs index b7348d35..370e96c5 100644 --- a/src/app/layout_manager.rs +++ b/src/app/layout_manager.rs @@ -239,16 +239,16 @@ impl WidgetLayoutNode { match widget_type { BottomWidgetType::Empty => Empty::default().into(), - BottomWidgetType::Cpu => CpuGraph::build(ctx, painter, config, data).into(), - BottomWidgetType::Mem => MemGraph::build(ctx, painter, config, data).into(), - BottomWidgetType::Net => NetGraph::build(ctx, painter, config, data).into(), - BottomWidgetType::Proc => ProcessTable::build(ctx, painter, config, data).into(), - BottomWidgetType::Temp => TempTable::build(ctx, painter, config, data).into(), - BottomWidgetType::Disk => DiskTable::build(ctx, painter, config, data).into(), - BottomWidgetType::BasicCpu => CpuSimple::build(ctx, painter, config, data).into(), - BottomWidgetType::BasicMem => MemSimple::build(ctx, painter, config, data).into(), - BottomWidgetType::BasicNet => NetSimple::build(ctx, painter, config, data).into(), - BottomWidgetType::Battery => BatteryTable::build(ctx, painter, config, data).into(), + BottomWidgetType::Cpu => CpuGraph::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::Mem => MemGraph::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::Net => NetGraph::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::Proc => ProcessTable::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::Temp => TempTable::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::Disk => DiskTable::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::BasicCpu => CpuSimple::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::BasicMem => MemSimple::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::BasicNet => NetSimple::build_widget(ctx, painter, config, data).into(), + BottomWidgetType::Battery => BatteryTable::build_widget(ctx, painter, config, data).into(), } } diff --git a/src/tuine/component/base/time_graph.rs b/src/tuine/component/base/time_graph.rs index cf8f29e2..6059dce7 100644 --- a/src/tuine/component/base/time_graph.rs +++ b/src/tuine/component/base/time_graph.rs @@ -1,4 +1,54 @@ +use std::borrow::Cow; + +use tui::{style::Style, Frame}; + +use crate::tuine::{Bounds, DrawContext, Event, LayoutNode, StateContext, Status, TmpComponent}; + +pub struct TimeGraphData { + pub data: Vec<(f64, f64)>, + pub label: Option>, + pub style: Style, +} + /// A [`TimeGraph`] is a component that indicates data in a graph form with the time being /// the x-axis. It displays the most recent data at the right, with the recent data /// being at the left. -pub struct TimeGraph {} +pub struct TimeGraph { + display_time: u64, + default_time: u64, + min_duration: u64, + max_duration: u64, + time_interval: u64, + use_dot: bool, + data: Vec, + y_bounds: [f64; 2], + y_bound_labels: Vec>, + reverse_order: bool, +} + +impl TimeGraph {} + +impl TmpComponent for TimeGraph { + fn draw( + &mut self, state_ctx: &mut StateContext<'_>, draw_ctx: &DrawContext<'_>, + frame: &mut Frame<'_, Backend>, + ) where + Backend: tui::backend::Backend, + { + todo!() + } + + fn on_event( + &mut self, state_ctx: &mut StateContext<'_>, draw_ctx: &DrawContext<'_>, event: Event, + messages: &mut Vec, + ) -> Status { + Status::Ignored + } + + fn layout(&self, bounds: Bounds, node: &mut LayoutNode) -> crate::tuine::Size { + crate::tuine::Size { + width: bounds.max_width, + height: bounds.max_height, + } + } +} diff --git a/src/tuine/component/mod.rs b/src/tuine/component/mod.rs index 74946505..aaea0f32 100644 --- a/src/tuine/component/mod.rs +++ b/src/tuine/component/mod.rs @@ -16,7 +16,7 @@ pub use banner::*; use enum_dispatch::enum_dispatch; use tui::Frame; -use super::{Bounds, DrawContext, Element, Event, LayoutNode, Size, StateContext, Status}; +use super::{Bounds, DrawContext, Event, LayoutNode, Size, StateContext, Status}; /// A component displays information and can be interacted with. #[allow(unused_variables)] diff --git a/src/tuine/component/widget/battery_table.rs b/src/tuine/component/widget/battery_table.rs index 35b488a9..f4dad8f8 100644 --- a/src/tuine/component/widget/battery_table.rs +++ b/src/tuine/component/widget/battery_table.rs @@ -6,7 +6,7 @@ use crate::tuine::{DrawContext, StateContext, TmpComponent}; pub struct BatteryTable {} impl super::AppWidget for BatteryTable { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/cpu_graph.rs b/src/tuine/component/widget/cpu_graph.rs index 35003d6d..0892e863 100644 --- a/src/tuine/component/widget/cpu_graph.rs +++ b/src/tuine/component/widget/cpu_graph.rs @@ -7,7 +7,7 @@ use crate::tuine::{DrawContext, StateContext, TmpComponent}; pub struct CpuGraph {} impl super::AppWidget for CpuGraph { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/cpu_simple.rs b/src/tuine/component/widget/cpu_simple.rs index 1ab4ed2c..17d727bf 100644 --- a/src/tuine/component/widget/cpu_simple.rs +++ b/src/tuine/component/widget/cpu_simple.rs @@ -8,7 +8,7 @@ use crate::tuine::{Bounds, DrawContext, LayoutNode, Size, StateContext, TmpCompo pub struct CpuSimple {} impl super::AppWidget for CpuSimple { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/disk_table.rs b/src/tuine/component/widget/disk_table.rs index a71ff938..aa2424c0 100644 --- a/src/tuine/component/widget/disk_table.rs +++ b/src/tuine/component/widget/disk_table.rs @@ -20,7 +20,7 @@ pub struct DiskTable { impl DiskTable {} impl AppWidget for DiskTable { - fn build( + fn build_widget( ctx: &mut BuildContext<'_>, painter: &Painter, config: &AppConfig, data: &mut ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/mem_graph.rs b/src/tuine/component/widget/mem_graph.rs index a25c87da..98bbe40c 100644 --- a/src/tuine/component/widget/mem_graph.rs +++ b/src/tuine/component/widget/mem_graph.rs @@ -6,7 +6,7 @@ use crate::tuine::{DrawContext, StateContext, TmpComponent}; pub struct MemGraph {} impl super::AppWidget for MemGraph { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/mem_simple.rs b/src/tuine/component/widget/mem_simple.rs index 1100318c..645fb06c 100644 --- a/src/tuine/component/widget/mem_simple.rs +++ b/src/tuine/component/widget/mem_simple.rs @@ -8,7 +8,7 @@ use crate::tuine::{Bounds, DrawContext, LayoutNode, Size, StateContext, TmpCompo pub struct MemSimple {} impl super::AppWidget for MemSimple { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/mod.rs b/src/tuine/component/widget/mod.rs index 399ef15d..612b38ff 100644 --- a/src/tuine/component/widget/mod.rs +++ b/src/tuine/component/widget/mod.rs @@ -34,7 +34,7 @@ pub use net_simple::*; use crate::{app::AppConfig, canvas::Painter, data_conversion::ConvertedData, tuine::BuildContext}; pub trait AppWidget { - fn build( + fn build_widget( ctx: &mut BuildContext<'_>, painter: &Painter, config: &AppConfig, data: &mut ConvertedData<'_>, ) -> Self; diff --git a/src/tuine/component/widget/net_graph.rs b/src/tuine/component/widget/net_graph.rs index e97a09f7..703bdb84 100644 --- a/src/tuine/component/widget/net_graph.rs +++ b/src/tuine/component/widget/net_graph.rs @@ -6,7 +6,7 @@ use crate::tuine::{DrawContext, StateContext, TmpComponent}; pub struct NetGraph {} impl super::AppWidget for NetGraph { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/net_simple.rs b/src/tuine/component/widget/net_simple.rs index 85f4153c..db252a83 100644 --- a/src/tuine/component/widget/net_simple.rs +++ b/src/tuine/component/widget/net_simple.rs @@ -8,7 +8,7 @@ use crate::tuine::{Bounds, DrawContext, LayoutNode, Size, StateContext, TmpCompo pub struct NetSimple {} impl super::AppWidget for NetSimple { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/process_table.rs b/src/tuine/component/widget/process_table.rs index 0dbe0c5d..b7960c09 100644 --- a/src/tuine/component/widget/process_table.rs +++ b/src/tuine/component/widget/process_table.rs @@ -6,7 +6,7 @@ use crate::tuine::{DrawContext, StateContext, TmpComponent}; pub struct ProcessTable {} impl super::AppWidget for ProcessTable { - fn build( + fn build_widget( ctx: &mut crate::tuine::BuildContext<'_>, painter: &crate::canvas::Painter, config: &crate::app::AppConfig, data: &mut crate::data_conversion::ConvertedData<'_>, ) -> Self { diff --git a/src/tuine/component/widget/temp_table.rs b/src/tuine/component/widget/temp_table.rs index 4d2eeb49..7e6440a4 100644 --- a/src/tuine/component/widget/temp_table.rs +++ b/src/tuine/component/widget/temp_table.rs @@ -20,7 +20,7 @@ pub struct TempTable { impl TempTable {} impl AppWidget for TempTable { - fn build( + fn build_widget( ctx: &mut BuildContext<'_>, painter: &Painter, config: &AppConfig, data: &mut ConvertedData<'_>, ) -> Self { -- cgit v1.2.3