adguardian/widgets/
gauge.rs

1use tui::{
2  style::{Color, Style, Modifier},
3  widgets::{Block, Borders, Gauge},
4  text::{Span},
5};
6
7use crate::fetch::fetch_stats::StatsResponse;
8
9pub fn make_gauge(stats: &StatsResponse) -> Gauge {
10
11  let total_blocked = stats.num_blocked_filtering
12    + stats.num_replaced_parental
13    + stats.num_replaced_safebrowsing
14    + stats.num_replaced_safesearch;
15
16  let percent = (total_blocked as f64 / stats.num_dns_queries as f64 * 100.0) as u16;
17
18  let label = format!("Blocked {} out of {} ({}%)", total_blocked, stats.num_dns_queries, percent);
19
20  Gauge::default()
21      .block(
22        Block::default()
23        .title(Span::styled(
24          "Block Percentage",
25          Style::default().add_modifier(Modifier::BOLD),
26        ))
27        .borders(Borders::ALL)
28    )
29    .gauge_style(Style::default().fg(Color::Red).bg(Color::Green))
30    .percent(percent)
31    .label(label)
32}