switch to boolean evaluation on boolean signals

This commit is contained in:
Joeri Exelmans 2025-11-05 23:19:24 +01:00
parent b9f104f877
commit a4491b3433
2 changed files with 8 additions and 8 deletions

Binary file not shown.

View file

@ -19,7 +19,7 @@ use std::time::Duration;
use web_sys::console;
struct TraceMap<'a> {
traces: HashMap<&'a str, Signal<f64>>,
traces: HashMap<&'a str, Signal<bool>>,
}
impl<'a> Trace for TraceMap<'a> {
@ -40,7 +40,7 @@ impl<'a> Trace for TraceMap<'a> {
#[derive(Serialize, Deserialize)]
pub struct StateBuddyTraceEntry {
simtime: f64,
state: HashMap<String, f64>,
state: HashMap<String, bool>,
// inputEvent: String,
// outputEvents: Vec<String>,
}
@ -57,14 +57,14 @@ pub fn eval_boolean(s: &str, js_trace: JsValue) -> JsValue {
Ok(trace) => trace,
Err(e) => return JsValue::from_str(("failed to parse JSON: ".to_owned() + &e.to_string()).as_str()),
};
let mut traceMap = HashMap::<&str, Signal<f64>>::new();
let mut traceMap = HashMap::<&str, Signal<bool>>::new();
for entry in &trace.entries {
for (prop, val) in &entry.state {
let signal = traceMap.entry(prop.as_str()).or_insert_with(|| Signal::<f64>::Sampled {
let signal: &mut Signal<bool> = traceMap.entry(prop.as_str()).or_insert_with(|| Signal::<bool>::Sampled {
values: vec![],
time_points: vec![],
});
if let Signal::<f64>::Sampled { values, time_points } = signal {
if let Signal::<bool>::Sampled { values, time_points } = signal {
values.push(*val);
time_points.push(Duration::from_secs(entry.simtime as u64));
}
@ -76,12 +76,12 @@ pub fn eval_boolean(s: &str, js_trace: JsValue) -> JsValue {
let m = TraceMap{traces: traceMap};
for name in m.signal_names() {
console::debug_2(&JsValue::from_str("signal name:"), &JsValue::from_str(name));
let signal: &Signal<f64> = m.get(name).expect("bla");
if let Signal::<f64>::Sampled { values, time_points } = signal {
let signal: &Signal<bool> = m.get(name).expect("bla");
if let Signal::<bool>::Sampled { values, time_points } = signal {
for i in 0..(values.len()) {
console::debug_2(
&JsValue::from_f64(time_points[i].as_millis() as f64),
&JsValue::from_f64(values[i]));
&JsValue::from_bool(values[i]));
}
}
}