summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClementTsang <cjhtsang@uwaterloo.ca>2022-01-04 01:30:58 -0500
committerClementTsang <cjhtsang@uwaterloo.ca>2022-01-04 01:32:28 -0500
commitd0a0cc5e8c4b028ea5de3118985b71bd74b15be6 (patch)
tree6130f6b1e4edd9998fa4acb22d4b671aae1c6d1a
parent11a4d24d524cecdb18e60da896fd16e1173ecfa9 (diff)
Time graph
-rw-r--r--src/app/layout_manager.rs20
-rw-r--r--src/tuine/component/base/time_graph.rs52
-rw-r--r--src/tuine/component/mod.rs2
-rw-r--r--src/tuine/component/widget/battery_table.rs2
-rw-r--r--src/tuine/component/widget/cpu_graph.rs2
-rw-r--r--src/tuine/component/widget/cpu_simple.rs2
-rw-r--r--src/tuine/component/widget/disk_table.rs2
-rw-r--r--src/tuine/component/widget/mem_graph.rs2
-rw-r--r--src/tuine/component/widget/mem_simple.rs2
-rw-r--r--src/tuine/component/widget/mod.rs2
-rw-r--r--src/tuine/component/widget/net_graph.rs2
-rw-r--r--src/tuine/component/widget/net_simple.rs2
-rw-r--r--src/tuine/component/widget/process_table.rs2
-rw-r--r--src/tuine/component/widget/temp_table.rs2
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<Cow<'static, str>>,
+ 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<TimeGraphData>,
+ y_bounds: [f64; 2],
+ y_bound_labels: Vec<Cow<'static, str>>,
+ reverse_order: bool,
+}
+
+impl TimeGraph {}
+
+impl<Message> TmpComponent<Message> for TimeGraph {
+ fn draw<Backend>(
+ &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<Message>,
+ ) -> 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<Message> {
impl<Message> DiskTable<Message> {}
impl<Message> AppWidget for DiskTable<Message> {
- 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<Message> {
impl<Message> TempTable<Message> {}
impl<Message> AppWidget for TempTable<Message> {
- fn build(
+ fn build_widget(
ctx: &mut BuildContext<'_>, painter: &Painter, config: &AppConfig,
data: &mut ConvertedData<'_>,
) -> Self {