pub mod controls;
pub mod investigations;
pub mod jobs;
pub mod kql_highlight;
pub mod packs;
pub mod popup;
pub mod query;
pub mod session;
pub mod settings;
pub mod syntax_textarea;
pub mod tabs;
pub mod workspaces;
use crate::tui::message::Tab;
use crate::tui::model::Model;
use ratatui::{
layout::{Constraint, Direction, Layout},
Frame,
};
pub fn ui(f: &mut Frame, model: &mut Model) {
let size = f.area();
let chunks = Layout::default()
.direction(Direction::Vertical)
.constraints([
Constraint::Length(3), Constraint::Min(0), Constraint::Length(3), ])
.split(size);
tabs::render(
f,
model.current_tab,
model.init_state,
model.spinner_frame,
chunks[0],
);
match model.current_tab {
Tab::Settings => settings::render(f, &mut model.settings, chunks[1]),
Tab::Workspaces => workspaces::render(f, &mut model.workspaces, chunks[1]),
Tab::Query => query::render(f, &model.query, &model.jobs, chunks[1]),
Tab::Jobs => jobs::render(f, &mut model.jobs, chunks[1]),
Tab::Sessions => session::render(f, model, chunks[1]),
Tab::Packs => packs::render(f, model, chunks[1]),
Tab::Investigations => investigations::render(f, model, chunks[1]),
}
controls::render(f, model.current_tab, chunks[2]);
if let Some(ref popup) = model.popup {
popup::render(f, popup, model);
}
}