From c7a541a9e38d241ba587afedc2fde8e57627e62e Mon Sep 17 00:00:00 2001 From: inportb Date: Tue, 16 May 2023 23:27:13 -0400 Subject: [PATCH] Fix timestamp inconsistency --- htdocs/vistax.mjs | 7 ++++--- main.py | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/htdocs/vistax.mjs b/htdocs/vistax.mjs index d1e36fa..59db99c 100644 --- a/htdocs/vistax.mjs +++ b/htdocs/vistax.mjs @@ -27,6 +27,7 @@ export const d_unwrap = data => { if(data.error) throw new RPCError(data.error.type, ...data.error.args); if(data.ts) try { data.result._ts = data.ts; + if(data.cached) data.result._cached = data.cached; } catch(ex) {} return data.result; }; @@ -172,18 +173,18 @@ export const d_parse_notifications_fastuser = data => d_split(data, '^', 'info', export const d_parse_multireport = data => { if(data.length < 1) return []; - var brk, max = 0, grp; + var brk, max = 0, grp, _ts = data._ts; for(var i = 0; i < data.length; ++i) { brk = (grp = data[i]).indexOf('^'); if(brk >= 0) { grp = +grp.substring(0, brk); if(grp >= max) max = grp; else break; - } else return [data]; + } else return (data = [data], data._ts = _ts, data); } var res = [], data = data.slice(), max = max + '^', grp = x => x.startsWith(max); while(((brk = data.findIndex(grp)) >= 0) || (brk = data.length)) res.push(data.splice(0, brk + 1)); - return res; + return (res._ts = _ts, res); }; export const d_parse_tiudocumentlist = data => d_split(data, '^', 'IEN', 'title', 'time', 'patient', 'author', 'location', 'status', 'visit').map(row => { diff --git a/main.py b/main.py index da2222a..02ebda9 100644 --- a/main.py +++ b/main.py @@ -3,6 +3,7 @@ import json import secrets import string +import time from flask import Flask, request, send_from_directory from flask.json import jsonify from flask.json.provider import DefaultJSONProvider @@ -39,7 +40,7 @@ class CacheProxyRPC(util.CacheProxy): self._cache(('SDEC_RESOURCE', 'ORWU1_NEWLOC', 'ORWLRR_ALLTESTS_ALL', 'ORWORDG_ALLTREE', 'ORWORDG_REVSTS', 'ORWDX_DGNM', 'ORWDX_ORDITM'), persistent, prefix=prefix, ttl=float('inf')) def jsonify_result(value, id=None): - return jsonify({ 'result': value._base, 'error': None, 'id': request.json.get('id'), 'ts': value._ts } if isinstance(value, util.Cached) else { 'result': value, 'error': None, 'id': request.json.get('id') }) + return jsonify({ 'result': value._base, 'error': None, 'id': request.json.get('id'), 'ts': value._ts, 'cached': True } if isinstance(value, util.Cached) else { 'result': value, 'error': None, 'id': request.json.get('id'), 'ts': time.time() }) def jsonify_error(ex, id=None): return jsonify({ 'result': None, 'error': { 'type': ex.__class__.__name__, 'args': ex.args }, 'id': id })