fix(diarization-ui): treat stored timestamps as UTC in jobs elapsed counter
This commit is contained in:
30
app.py
30
app.py
@@ -728,12 +728,26 @@ def prompt_delete(prompt_id: int):
|
|||||||
return HTMLResponse("<meta http-equiv='refresh' content='0; url=/prompts'>")
|
return HTMLResponse("<meta http-equiv='refresh' content='0; url=/prompts'>")
|
||||||
|
|
||||||
|
|
||||||
|
def _parse_utcish(ts: Optional[str]) -> Optional[datetime]:
|
||||||
|
if not ts:
|
||||||
|
return None
|
||||||
|
try:
|
||||||
|
return datetime.fromisoformat(str(ts).replace("Z", "+00:00")).replace(tzinfo=None)
|
||||||
|
except Exception:
|
||||||
|
try:
|
||||||
|
return datetime.fromisoformat(str(ts))
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _fmt_elapsed(start_iso: Optional[str], end_iso: Optional[str] = None) -> str:
|
def _fmt_elapsed(start_iso: Optional[str], end_iso: Optional[str] = None) -> str:
|
||||||
if not start_iso:
|
s = _parse_utcish(start_iso)
|
||||||
|
if not s:
|
||||||
return "-"
|
return "-"
|
||||||
try:
|
try:
|
||||||
s = datetime.fromisoformat(start_iso)
|
e = _parse_utcish(end_iso) if end_iso else datetime.utcnow()
|
||||||
e = datetime.fromisoformat(end_iso) if end_iso else datetime.now()
|
if not e:
|
||||||
|
e = datetime.utcnow()
|
||||||
sec = max(0, int((e - s).total_seconds()))
|
sec = max(0, int((e - s).total_seconds()))
|
||||||
if sec < 60:
|
if sec < 60:
|
||||||
return f"{sec}s"
|
return f"{sec}s"
|
||||||
@@ -834,10 +848,16 @@ def jobs_page(queued: Optional[int] = None):
|
|||||||
<div id='jobs-status' class='hint'>Live-Update aktiv …</div>
|
<div id='jobs-status' class='hint'>Live-Update aktiv …</div>
|
||||||
<div id='jobs-root'>{pre}</div>
|
<div id='jobs-root'>{pre}</div>
|
||||||
<script>
|
<script>
|
||||||
|
function parseUtcish(ts) {{
|
||||||
|
if(!ts) return NaN;
|
||||||
|
const hasZone = /Z$|[+-]\d\d:\d\d$/.test(ts);
|
||||||
|
return Date.parse(hasZone ? ts : (ts + 'Z')); // DB stores UTC without suffix
|
||||||
|
}}
|
||||||
function since(ts, endTs=null) {{
|
function since(ts, endTs=null) {{
|
||||||
if(!ts) return '-';
|
if(!ts) return '-';
|
||||||
const end = endTs ? Date.parse(endTs) : Date.now();
|
const startMs = parseUtcish(ts);
|
||||||
const s = Math.max(0, Math.floor((end-Date.parse(ts))/1000));
|
const end = endTs ? parseUtcish(endTs) : Date.now();
|
||||||
|
const s = Math.max(0, Math.floor((end-startMs)/1000));
|
||||||
if (s<60) return s+'s';
|
if (s<60) return s+'s';
|
||||||
const m = Math.floor(s/60); if (m<60) return m+'m '+(s%60)+'s';
|
const m = Math.floor(s/60); if (m<60) return m+'m '+(s%60)+'s';
|
||||||
const h = Math.floor(m/60); return h+'h '+(m%60)+'m';
|
const h = Math.floor(m/60); return h+'h '+(m%60)+'m';
|
||||||
|
|||||||
Reference in New Issue
Block a user