Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I20f205d9e06a93a89e8f4433ed6f80576a6a6964
57 lines
1.4 KiB
Rust
57 lines
1.4 KiB
Rust
use ratatui::{
|
|
Frame,
|
|
layout::Rect,
|
|
style::{Color, Modifier, Style},
|
|
text::{Line, Span},
|
|
widgets::{Block, Borders, Paragraph},
|
|
};
|
|
|
|
use crate::app::AppState;
|
|
|
|
pub fn render(f: &mut Frame, state: &AppState, area: Rect) {
|
|
let label_style = Style::default()
|
|
.fg(Color::Yellow)
|
|
.add_modifier(Modifier::BOLD);
|
|
let value_style = Style::default().fg(Color::White);
|
|
let section_style = Style::default()
|
|
.fg(Color::Cyan)
|
|
.add_modifier(Modifier::BOLD);
|
|
|
|
let pad = " ";
|
|
|
|
let mut lines = vec![
|
|
Line::default(),
|
|
Line::from(Span::styled("--- Database Statistics ---", section_style)),
|
|
];
|
|
|
|
if let Some(ref stats) = state.database_stats {
|
|
for (key, value) in stats {
|
|
lines.push(Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::styled(format!("{key:<20}"), label_style),
|
|
Span::styled(value.clone(), value_style),
|
|
]));
|
|
}
|
|
} else {
|
|
lines.push(Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::raw("Press 'r' to load database statistics"),
|
|
]));
|
|
}
|
|
|
|
lines.push(Line::default());
|
|
lines.push(Line::from(Span::styled("--- Actions ---", section_style)));
|
|
lines.push(Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::raw("v: Vacuum database"),
|
|
]));
|
|
lines.push(Line::from(vec![
|
|
Span::raw(pad),
|
|
Span::raw("Esc: Return to library"),
|
|
]));
|
|
|
|
let paragraph = Paragraph::new(lines)
|
|
.block(Block::default().borders(Borders::ALL).title(" Database "));
|
|
|
|
f.render_widget(paragraph, area);
|
|
}
|