use super::super::App;
use crate::tui::state::{OptimizeSuggestionItem, PopupKind, PopupState};
impl App {
pub(crate) fn try_open_optimize_popup(&mut self) -> bool {
let bench_path = crate::config::bench_log_path();
let model = &self.state.model_name;
if let Some(result) = crate::optimizer::advisor::advise(&bench_path, model, &self.config) {
if result.suggestions.is_empty() {
return false;
}
let items: Vec<OptimizeSuggestionItem> = result
.suggestions
.iter()
.map(|s| OptimizeSuggestionItem {
key: s.key.clone(),
label: s.label.clone(),
current: s.current.clone(),
suggested: s.suggested.clone(),
reason: s.reason.clone(),
confidence: s.confidence,
apply: true,
})
.collect();
self.state.popup = Some(PopupState {
title: format!(
"Optimize: {} ({} sessions)",
result.model, result.session_count
),
content: String::new(),
scroll: 0,
kind: PopupKind::OptimizeSuggestion {
model: result.model,
session_count: result.session_count,
items,
selected: 0,
action: 0,
},
saved_theme: None,
select_prefix: None,
search: String::new(),
});
true
} else {
false
}
}
}