mirror of https://github.com/ospab/ostp.git
40 lines
1.5 KiB
Rust
40 lines
1.5 KiB
Rust
use ratatui::layout::Rect;
|
|
use ratatui::layout::{Constraint, Direction, Layout};
|
|
use ratatui::style::{Color, Style};
|
|
use ratatui::widgets::{Block, Borders, Sparkline};
|
|
use ratatui::Frame;
|
|
|
|
use crate::app::AppState;
|
|
|
|
pub struct TrafficComponent;
|
|
|
|
impl TrafficComponent {
|
|
pub fn render(&self, frame: &mut Frame<'_>, area: Rect, state: &AppState) {
|
|
let rows = Layout::default()
|
|
.direction(Direction::Vertical)
|
|
.constraints([Constraint::Percentage(50), Constraint::Percentage(50)])
|
|
.split(area);
|
|
|
|
let incoming = Sparkline::default()
|
|
.block(Block::default()
|
|
.title(" ▼ INCOMING TRAFFIC DISTRIBUTION ")
|
|
.borders(Borders::ALL)
|
|
.border_type(ratatui::widgets::BorderType::Rounded)
|
|
.border_style(Style::default().fg(Color::Green)))
|
|
.data(&state.incoming_history)
|
|
.style(Style::default().fg(Color::LightGreen));
|
|
|
|
let outgoing = Sparkline::default()
|
|
.block(Block::default()
|
|
.title(" ▲ OUTGOING TRAFFIC DISTRIBUTION ")
|
|
.borders(Borders::ALL)
|
|
.border_type(ratatui::widgets::BorderType::Rounded)
|
|
.border_style(Style::default().fg(Color::Magenta)))
|
|
.data(&state.outgoing_history)
|
|
.style(Style::default().fg(Color::LightMagenta));
|
|
|
|
frame.render_widget(incoming, rows[0]);
|
|
frame.render_widget(outgoing, rows[1]);
|
|
}
|
|
}
|