switch to boolean evaluation on boolean signals
This commit is contained in:
parent
b9f104f877
commit
a4491b3433
2 changed files with 8 additions and 8 deletions
Binary file not shown.
16
src/lib.rs
16
src/lib.rs
|
|
@ -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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue