fixed hardware_db and improved stability and robustness of generic sal
This commit is contained in:
@@ -5,6 +5,7 @@ use ratatui::{
|
||||
widgets::{Block, Borders, List, ListItem, Paragraph, Chart, Dataset, Axis, BorderType, GraphType},
|
||||
symbols::Marker,
|
||||
Frame,
|
||||
prelude::Stylize,
|
||||
};
|
||||
use crate::mediator::TelemetryState;
|
||||
use crate::ui::theme::*;
|
||||
@@ -83,6 +84,55 @@ pub fn draw_dashboard(
|
||||
draw_freq_graph(f, right_side_chunks[2], state);
|
||||
|
||||
draw_logs(f, chunks[3], ui_state);
|
||||
|
||||
if state.is_emergency {
|
||||
draw_emergency_overlay(f, area, state);
|
||||
}
|
||||
}
|
||||
|
||||
fn draw_emergency_overlay(f: &mut Frame, area: Rect, state: &TelemetryState) {
|
||||
let block = Block::default()
|
||||
.borders(Borders::ALL)
|
||||
.border_type(BorderType::Double)
|
||||
.border_style(Style::default().fg(Color::Red).add_modifier(Modifier::BOLD))
|
||||
.bg(Color::Black)
|
||||
.title(" 🚨 EMERGENCY ABORT 🚨 ");
|
||||
|
||||
let area = centered_rect(60, 20, area);
|
||||
let inner = block.inner(area);
|
||||
f.render_widget(block, area);
|
||||
|
||||
let reason = state.emergency_reason.as_deref().unwrap_or("Unknown safety trigger");
|
||||
let text = vec![
|
||||
Line::from(vec![Span::styled("CRITICAL SAFETY LIMIT TRIGGERED", Style::default().fg(Color::Red).add_modifier(Modifier::BOLD))]),
|
||||
Line::from(""),
|
||||
Line::from(vec![Span::raw("Reason: "), Span::styled(reason, Style::default().fg(Color::Yellow))]),
|
||||
Line::from(""),
|
||||
Line::from("Hardware has been restored to safe defaults."),
|
||||
Line::from("Exiting in 1 second..."),
|
||||
];
|
||||
|
||||
f.render_widget(Paragraph::new(text).alignment(ratatui::layout::Alignment::Center), inner);
|
||||
}
|
||||
|
||||
fn centered_rect(percent_x: u16, percent_y: u16, r: Rect) -> Rect {
|
||||
let popup_layout = Layout::default()
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([
|
||||
Constraint::Percentage((100 - percent_y) / 2),
|
||||
Constraint::Percentage(percent_y),
|
||||
Constraint::Percentage((100 - percent_y) / 2),
|
||||
])
|
||||
.split(r);
|
||||
|
||||
Layout::default()
|
||||
.direction(Direction::Horizontal)
|
||||
.constraints([
|
||||
Constraint::Percentage((100 - percent_x) / 2),
|
||||
Constraint::Percentage(percent_x),
|
||||
Constraint::Percentage((100 - percent_x) / 2),
|
||||
])
|
||||
.split(popup_layout[1])[1]
|
||||
}
|
||||
|
||||
fn draw_header(f: &mut Frame, area: Rect, state: &TelemetryState) {
|
||||
|
||||
Reference in New Issue
Block a user