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