use crate::dcl::Pan;
use crate::dcl::PeaAssVar;
use askama::Template;
use askama_web::WebTemplate;
use serde::Deserialize;
#[derive(Debug, Deserialize, Default)]
pub struct Param {
pub sbid: Option<String>,
}
use crate::dcl::DNM;
use crate::dcl::VarType;
use crate::p08::ld_sub_info;
use crate::p08::SubInfo;
use std::collections::HashMap;
const FLD_LIST: [(VarType, &str); 14] = [
(VarType::SmallSellTr, ""),
(VarType::HmChgEvTr, "/tr01"),
(VarType::CntLvPowSatTr, ""),
(VarType::ChgStnCap, ""),
(VarType::ChgStnSell, ""),
(VarType::MvPowSatTr, ""),
(VarType::PowSolar, ""),
(VarType::ZoneTr, "/tr02"),
(VarType::PopTr, "/tr02"),
(VarType::MvVspp, ""),
(VarType::HvSpp, ""),
(VarType::UnbalPow, ""),
(VarType::CntUnbalPow, ""),
(VarType::Uc1Val, ""),
];
#[derive(Template, WebTemplate, Debug, Default)]
#[template(path = "sb01.html")]
pub struct WebTemp {
name: String,
assv: Vec<PeaAssVar>,
sbif: HashMap<String, SubInfo>,
flds: Vec<(VarType, &'static str)>,
}
pub async fn sb01() -> WebTemp {
println!("sb 01");
let Ok(buf) = std::fs::read(format!("{DNM}/000-sbrw.bin")) else {
println!("NO rw3.bin file:");
return WebTemp::default();
};
println!("sb 02");
let Ok((assv, _)): Result<(Vec<PeaAssVar>, usize), _> =
bincode::decode_from_slice(&buf[..], bincode::config::standard())
else {
println!("Failed to decode rw3:");
return WebTemp::default();
};
println!("sb 03");
let sbif = ld_sub_info();
println!("sb 04");
WebTemp {
name: "Substation - sb01 (sort by sub)".to_string(),
assv,
sbif: sbif.clone(),
flds: FLD_LIST.to_vec(),
}
}