use crate::ui::enhanced_tui::EnhancedTuiApp;
impl EnhancedTuiApp {
pub fn generate_registry_debug_info(&mut self) -> String {
self.register_debug_providers();
let mut debug_report = self.debug_registry.generate_debug_report();
if let Some(buffer) = self.state_container().current_buffer() {
let query = buffer.input_manager.get_text();
if !query.is_empty() {
let parser_info = self.debug_generate_parser_info(&query);
debug_report.insert_str(0, &parser_info);
}
}
if !self.navigation_timings.is_empty() {
debug_report.push_str("\n========== NAVIGATION TIMING ==========\n");
debug_report.push_str(&format!(
"Last {} navigation timings:\n",
self.navigation_timings.len()
));
for timing in &self.navigation_timings {
debug_report.push_str(&format!(" {timing}\n"));
}
if !self.navigation_timings.is_empty() {
let total_ms: f64 = self
.navigation_timings
.iter()
.filter_map(|s| self.debug_extract_timing(s))
.sum();
let avg_ms = total_ms / self.navigation_timings.len() as f64;
debug_report.push_str(&format!("Average navigation time: {avg_ms:.3}ms\n"));
}
}
if !self.render_timings.is_empty() {
debug_report.push_str("\n========== RENDER TIMING ==========\n");
debug_report.push_str(&format!(
"Last {} render timings:\n",
self.render_timings.len()
));
for timing in &self.render_timings {
debug_report.push_str(&format!(" {timing}\n"));
}
if !self.render_timings.is_empty() {
let total_ms: f64 = self
.render_timings
.iter()
.filter_map(|s| self.debug_extract_timing(s))
.sum();
let avg_ms = total_ms / self.render_timings.len() as f64;
debug_report.push_str(&format!("Average render time: {avg_ms:.3}ms\n"));
}
}
debug_report.push_str(&self.debug_generate_trace_logs());
debug_report.push_str(&self.debug_generate_state_logs());
debug_report
}
pub fn toggle_debug_mode_with_registry(&mut self, use_registry: bool) {
if use_registry {
let should_exit_debug = {
if let Some(buffer) = self.state_container().current_buffer() {
buffer.mode == crate::buffer::AppMode::Debug
} else {
false
}
};
if should_exit_debug {
if let Some(buffer) = self.state_container_mut().current_buffer_mut() {
buffer.mode = crate::buffer::AppMode::Command;
}
} else {
if let Some(buffer) = self.state_container_mut().current_buffer_mut() {
buffer.mode = crate::buffer::AppMode::Debug;
}
let debug_info = self.generate_registry_debug_info();
self.debug_widget.set_content(debug_info);
}
} else {
self.toggle_debug_mode();
}
}
pub fn should_use_registry_debug(&self) -> bool {
false
}
}