Remove debug prints and unused code
All checks were successful
Build and Release / build-and-release (push) Successful in 1m19s
All checks were successful
Build and Release / build-and-release (push) Successful in 1m19s
- Remove all debug println statements - Remove unused service_tracker module - Remove unused struct fields and methods - Remove empty placeholder files (cpu.rs, memory.rs, defaults.rs) - Fix all compiler warnings - Clean build with zero warnings Version bump to 0.1.159
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "cm-dashboard"
|
||||
version = "0.1.158"
|
||||
version = "0.1.159"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
||||
@@ -20,13 +20,12 @@ pub struct Dashboard {
|
||||
tui_app: Option<TuiApp>,
|
||||
terminal: Option<Terminal<CrosstermBackend<io::Stdout>>>,
|
||||
headless: bool,
|
||||
raw_data: bool,
|
||||
initial_commands_sent: std::collections::HashSet<String>,
|
||||
config: DashboardConfig,
|
||||
}
|
||||
|
||||
impl Dashboard {
|
||||
pub async fn new(config_path: Option<String>, headless: bool, raw_data: bool) -> Result<Self> {
|
||||
pub async fn new(config_path: Option<String>, headless: bool) -> Result<Self> {
|
||||
info!("Initializing dashboard");
|
||||
|
||||
// Load configuration - try default path if not specified
|
||||
@@ -120,7 +119,6 @@ impl Dashboard {
|
||||
tui_app,
|
||||
terminal,
|
||||
headless,
|
||||
raw_data,
|
||||
initial_commands_sent: std::collections::HashSet::new(),
|
||||
config,
|
||||
})
|
||||
@@ -205,13 +203,6 @@ impl Dashboard {
|
||||
.insert(agent_data.hostname.clone());
|
||||
}
|
||||
|
||||
// Show raw data if requested (before processing)
|
||||
if self.raw_data {
|
||||
println!("RAW AGENT DATA FROM {}:", agent_data.hostname);
|
||||
println!("{}", serde_json::to_string_pretty(&agent_data).unwrap_or_else(|e| format!("Serialization error: {}", e)));
|
||||
println!("{}", "─".repeat(80));
|
||||
}
|
||||
|
||||
// Store structured data directly
|
||||
self.metric_store.store_agent_data(agent_data);
|
||||
|
||||
|
||||
@@ -51,10 +51,6 @@ struct Cli {
|
||||
/// Run in headless mode (no TUI, just logging)
|
||||
#[arg(long)]
|
||||
headless: bool,
|
||||
|
||||
/// Show raw agent data in headless mode
|
||||
#[arg(long)]
|
||||
raw_data: bool,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
@@ -90,7 +86,7 @@ async fn main() -> Result<()> {
|
||||
}
|
||||
|
||||
// Create and run dashboard
|
||||
let mut dashboard = Dashboard::new(cli.config, cli.headless, cli.raw_data).await?;
|
||||
let mut dashboard = Dashboard::new(cli.config, cli.headless).await?;
|
||||
|
||||
// Setup graceful shutdown
|
||||
let ctrl_c = async {
|
||||
|
||||
@@ -225,9 +225,6 @@ impl Layout {
|
||||
pub const LEFT_PANEL_WIDTH: u16 = 45;
|
||||
/// Right panel percentage (services)
|
||||
pub const RIGHT_PANEL_WIDTH: u16 = 55;
|
||||
/// System vs backup split (equal)
|
||||
pub const SYSTEM_PANEL_HEIGHT: u16 = 50;
|
||||
pub const BACKUP_PANEL_HEIGHT: u16 = 50;
|
||||
}
|
||||
|
||||
/// Typography system
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
// This file is intentionally left minimal - CPU functionality is handled by the SystemWidget
|
||||
@@ -1 +0,0 @@
|
||||
// This file is intentionally left minimal - Memory functionality is handled by the SystemWidget
|
||||
@@ -1,7 +1,5 @@
|
||||
use cm_dashboard_shared::AgentData;
|
||||
|
||||
pub mod cpu;
|
||||
pub mod memory;
|
||||
pub mod services;
|
||||
pub mod system;
|
||||
|
||||
|
||||
@@ -508,55 +508,6 @@ fn truncate_serial(serial: &str) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
/// Helper function to render a drive in a MergerFS pool
|
||||
fn render_mergerfs_drive<'a>(drive: &StorageDrive, tree_symbol: &'a str, lines: &mut Vec<Line<'a>>) {
|
||||
let mut drive_details = Vec::new();
|
||||
if let Some(temp) = drive.temperature {
|
||||
drive_details.push(format!("T: {}°C", temp as i32));
|
||||
}
|
||||
if let Some(wear) = drive.wear_percent {
|
||||
drive_details.push(format!("W: {}%", wear as i32));
|
||||
}
|
||||
|
||||
let drive_text = if !drive_details.is_empty() {
|
||||
format!("{} {}", drive.name, drive_details.join(" "))
|
||||
} else {
|
||||
drive.name.clone()
|
||||
};
|
||||
|
||||
let mut drive_spans = vec![
|
||||
Span::styled(tree_symbol, Typography::tree()),
|
||||
];
|
||||
drive_spans.extend(StatusIcons::create_status_spans(drive.status.clone(), &drive_text));
|
||||
lines.push(Line::from(drive_spans));
|
||||
}
|
||||
|
||||
/// Helper function to render a drive in a storage pool
|
||||
fn render_pool_drive(drive: &StorageDrive, is_last: bool, lines: &mut Vec<Line<'_>>) {
|
||||
let tree_symbol = if is_last { " └─" } else { " ├─" };
|
||||
|
||||
let mut drive_details = Vec::new();
|
||||
if let Some(temp) = drive.temperature {
|
||||
drive_details.push(format!("T: {}°C", temp as i32));
|
||||
}
|
||||
if let Some(wear) = drive.wear_percent {
|
||||
drive_details.push(format!("W: {}%", wear as i32));
|
||||
}
|
||||
|
||||
let drive_text = if !drive_details.is_empty() {
|
||||
format!("● {} {}", drive.name, drive_details.join(" "))
|
||||
} else {
|
||||
format!("● {}", drive.name)
|
||||
};
|
||||
|
||||
let mut drive_spans = vec![
|
||||
Span::styled(tree_symbol, Typography::tree()),
|
||||
Span::raw(" "),
|
||||
];
|
||||
drive_spans.extend(StatusIcons::create_status_spans(drive.status.clone(), &drive_text));
|
||||
lines.push(Line::from(drive_spans));
|
||||
}
|
||||
|
||||
impl SystemWidget {
|
||||
/// Render backup section for display
|
||||
fn render_backup(&self) -> Vec<Line<'_>> {
|
||||
@@ -622,43 +573,6 @@ impl SystemWidget {
|
||||
lines
|
||||
}
|
||||
|
||||
/// Format time ago from timestamp
|
||||
fn format_time_ago(&self, timestamp: u64) -> String {
|
||||
let now = chrono::Utc::now().timestamp() as u64;
|
||||
let seconds_ago = now.saturating_sub(timestamp);
|
||||
|
||||
let hours = seconds_ago / 3600;
|
||||
let minutes = (seconds_ago % 3600) / 60;
|
||||
|
||||
if hours > 0 {
|
||||
format!("{}h ago", hours)
|
||||
} else if minutes > 0 {
|
||||
format!("{}m ago", minutes)
|
||||
} else {
|
||||
"now".to_string()
|
||||
}
|
||||
}
|
||||
|
||||
/// Format time until from future timestamp
|
||||
fn format_time_until(&self, timestamp: u64) -> String {
|
||||
let now = chrono::Utc::now().timestamp() as u64;
|
||||
if timestamp <= now {
|
||||
return "overdue".to_string();
|
||||
}
|
||||
|
||||
let seconds_until = timestamp - now;
|
||||
let hours = seconds_until / 3600;
|
||||
let minutes = (seconds_until % 3600) / 60;
|
||||
|
||||
if hours > 0 {
|
||||
format!("in {}h", hours)
|
||||
} else if minutes > 0 {
|
||||
format!("in {}m", minutes)
|
||||
} else {
|
||||
"soon".to_string()
|
||||
}
|
||||
}
|
||||
|
||||
/// Render system widget
|
||||
pub fn render(&mut self, frame: &mut Frame, area: Rect, hostname: &str, config: Option<&crate::config::DashboardConfig>) {
|
||||
let mut lines = Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user