use super::templates::get_template_by_id;
pub fn get_template_defaults(template_id: &Option<String>, available_ids: &[String]) -> Vec<bool> {
let mut defaults = vec![false; available_ids.len()];
let template_id_str = template_id.as_deref().unwrap_or("basic");
let Some(template) = get_template_by_id(template_id_str) else {
return get_basic_defaults(available_ids);
};
for (i, node_id) in available_ids.iter().enumerate() {
if template.default_nodes.iter().any(|n| n == node_id) {
defaults[i] = true;
}
}
defaults
}
fn get_basic_defaults(available_ids: &[String]) -> Vec<bool> {
let basic_nodes = [
"speaker".to_string(),
"listener".to_string(),
"motor".to_string(),
"imu".to_string(),
"teleop".to_string(),
"simulation-bridge".to_string(),
"diagnostics-node".to_string(),
"websocket-bridge".to_string(),
"image-classifier".to_string(),
"object-detector".to_string(),
"llm-command".to_string(),
"behavior-executor".to_string(),
];
available_ids.iter().map(|id| basic_nodes.contains(id)).collect()
}
#[allow(dead_code)] pub fn template_has_node(template_id: &str, node_id: &str) -> bool {
get_template_by_id(template_id)
.map(|t| t.default_nodes.iter().any(|n| n == node_id))
.unwrap_or(false)
}