var ctoken : string;
var uo_map : { [k: string]: UoRecord | null } = Object.create(null);
var keyops_local : { [opname: string]: (uo: UoRecord) => void } = Object();
+var last_log_ts: wasm_bindgen.TimestampAbbreviator;
var svg_ns : string;
var space : SVGGraphicsElement;
add_thing('td', 'logmsg', msg_html);
add_thing('td', 'logts', ts_html);
} else if (layout == 'Landscape') {
+ ts_html = last_log_ts.update(ts_html);
ne = document.createElement('div');
add_thing('span', 'logts', ts_html);
ne.appendChild(document.createElement('br'));
redisplay_ancillaries(piece,p);
}
+ let lastlogent_s = '';
+ if (layout == 'Landscape') {
+ let lastent = log_elem.lastElementChild;
+ if (lastent !== null) {
+ lastlogent_s = lastent.firstElementChild!.innerHTML;
+ }
+ }
+ last_log_ts = wasm_bindgen.timestamp_abbreviator(lastlogent_s);
+
var es = new EventSource(
sse_url_prefix + "/_/updates?ctoken="+ctoken+'&gen='+gen
);
}
#[wasm_bindgen]
-pub fn timestring_abbreviate(base: &str, now: &str) -> JsString {
- zcoord::misc::timestring_abbreviate(base,now).0.into()
+pub struct TimestampAbbreviator {
+ last: String,
+}
+
+#[wasm_bindgen]
+pub fn timestamp_abbreviator(j: JsString) -> TimestampAbbreviator {
+ TimestampAbbreviator { last: j.into() }
+}
+
+#[wasm_bindgen]
+impl TimestampAbbreviator {
+ pub fn update(&mut self, now: &JsString) -> JsString {
+ let now: String = now.into();
+ let (abbrev, _) = zcoord::misc::timestring_abbreviate(&self.last, &now);
+ let abbrev = abbrev.into();
+ self.last = now;
+ abbrev
+ }
}
#[wasm_bindgen]