chiark / gitweb /
abbrev timestamps of added messages
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 26 Nov 2020 21:59:20 +0000 (21:59 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 26 Nov 2020 21:59:20 +0000 (21:59 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
templates/script.ts
wasm/wasm.rs

index ff73a4413300ed162f0b45838835401088e78a38..974bbac1fa562f31e13637a9d9c165133a067032 100644 (file)
@@ -104,6 +104,7 @@ var cseq : ClientSeq = 0;
 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;
@@ -854,6 +855,7 @@ function add_timestamped_log_message(ts_html: string, msg_html: string) {
     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'));
@@ -1112,6 +1114,15 @@ function startup() {
     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
   );
index f7e03a9ae50e2b4b801f7081eabe9ae8d5d5e226..b28b933dada2158d2c0fe2aa5662f05cee43034f 100644 (file)
@@ -90,8 +90,24 @@ impl ZCoordIterator {
 }
 
 #[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]