node_launchpad/components/
utils.rs1use crate::system;
10use ant_node_manager::config::get_service_log_dir_path;
11use ant_releases::ReleaseType;
12use color_eyre::eyre::{self};
13use ratatui::prelude::*;
14
15pub fn centered_rect(percent_x: u16, percent_y: u16, r: Rect) -> Rect {
17 let popup_layout = Layout::vertical([
18 Constraint::Percentage((100 - percent_y) / 2),
19 Constraint::Percentage(percent_y),
20 Constraint::Percentage((100 - percent_y) / 2),
21 ])
22 .split(r);
23
24 Layout::horizontal([
25 Constraint::Percentage((100 - percent_x) / 2),
26 Constraint::Percentage(percent_x),
27 Constraint::Percentage((100 - percent_x) / 2),
28 ])
29 .split(popup_layout[1])[1]
30}
31
32pub fn centered_rect_fixed(x: u16, y: u16, r: Rect) -> Rect {
34 let popup_layout = Layout::vertical([
35 Constraint::Fill(1),
36 Constraint::Length(y),
37 Constraint::Fill(1),
38 ])
39 .split(r);
40
41 Layout::horizontal([
42 Constraint::Fill(1),
43 Constraint::Length(x),
44 Constraint::Fill(1),
45 ])
46 .split(popup_layout[1])[1]
47}
48
49pub fn open_logs(node_name: Option<String>) -> Result<(), eyre::Report> {
59 let service_path = get_service_log_dir_path(ReleaseType::NodeLaunchpad, None, None)?
60 .to_string_lossy()
61 .into_owned();
62
63 let folder = if let Some(node_name) = node_name {
64 format!("{}/{}", service_path, node_name)
65 } else {
66 service_path.to_string()
67 };
68 if let Err(e) = system::open_folder(&folder) {
69 error!("Failed to open folder: {}", e);
70 }
71 Ok(())
72}