help controls
This commit is contained in:
45
src/ui.rs
45
src/ui.rs
@@ -535,14 +535,45 @@ fn centered_rect(width: u16, height: u16, area: Rect) -> Rect {
|
||||
// ── Status bar ────────────────────────────────────────────────────────────────
|
||||
|
||||
fn draw_status_bar(f: &mut Frame, app: &App, area: Rect) {
|
||||
let msg = if app.selected == SMART_IDX && app.smart_permission_error {
|
||||
" ZFS Stats [!] SMART needs root — press p to enter sudo password q Quit"
|
||||
let key = |s: &'static str| Span::styled(s, Style::default().fg(Color::Yellow).add_modifier(Modifier::BOLD));
|
||||
let sep = |s: &'static str| Span::styled(s, Style::default().fg(Color::White));
|
||||
let desc = |s: &'static str| Span::styled(s, Style::default().fg(Color::Gray));
|
||||
let err = |s: &'static str| Span::styled(s, Style::default().fg(Color::Red).add_modifier(Modifier::BOLD));
|
||||
let divider = || sep(" ");
|
||||
|
||||
let mut spans: Vec<Span> = vec![
|
||||
sep(" "),
|
||||
// Navigation
|
||||
key("[↑/↓]"), sep(" "), desc("or"), sep(" "), key("[j/k]"), sep(" "), desc("Navigate"),
|
||||
divider(),
|
||||
// Quit
|
||||
key("[q/Esc]"), sep(" "), desc("Quit"),
|
||||
];
|
||||
|
||||
// Context-sensitive: sudo password on SMART panel
|
||||
if app.selected == SMART_IDX {
|
||||
spans.push(divider());
|
||||
spans.push(key("[p]"));
|
||||
spans.push(sep(" "));
|
||||
spans.push(desc("sudo password"));
|
||||
}
|
||||
|
||||
// Error indicators
|
||||
if app.selected == SMART_IDX && app.smart_permission_error {
|
||||
spans.push(divider());
|
||||
spans.push(err("[!]"));
|
||||
spans.push(sep(" "));
|
||||
spans.push(Span::styled("SMART needs root", Style::default().fg(Color::Red)));
|
||||
} else if app.error.is_some() || app.pool_error.is_some() {
|
||||
" ZFS Stats [!] Some stats unavailable ↑/↓ or j/k Navigate q Quit"
|
||||
} else {
|
||||
" ZFS Stats ↑/↓ or j/k Navigate q Quit"
|
||||
};
|
||||
f.render_widget(Paragraph::new(msg).style(Style::default().bg(Color::DarkGray).fg(Color::White)), area);
|
||||
spans.push(divider());
|
||||
spans.push(err("[!]"));
|
||||
spans.push(sep(" "));
|
||||
spans.push(Span::styled("Some stats unavailable", Style::default().fg(Color::Red)));
|
||||
}
|
||||
|
||||
let bar = Paragraph::new(Line::from(spans))
|
||||
.style(Style::default().bg(Color::DarkGray));
|
||||
f.render_widget(bar, area);
|
||||
}
|
||||
|
||||
// ── Shared chart renderer ─────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user