diff --git a/exam b/exam index cf4e57d..d190774 100755 --- a/exam +++ b/exam @@ -181,7 +181,7 @@ def remaining(st: dict[str, Any] | None) -> float: def set_paused(st: dict[str, Any], on: bool) -> None: if on and not st.get("paused_at"): - st["paused_at"] = time.time(); st["pauses"] = int(st.get("pauses", 0)) + 1 + st["paused_at"] = time.time() elif not on and st.get("paused_at"): st["paused_total"] = float(st.get("paused_total", 0)) + (time.time() - float(st["paused_at"])); st["paused_at"] = None save_state(st) @@ -297,7 +297,6 @@ def record_attempt(st): entry = {"at": datetime.now().isoformat(timespec="minutes"), "mode": st.get("mode", "exam"), "hard": st.get("hard", False), "ids": [q["id"] for q in session_questions(st)], "score_pct": pct, "earned": earned, "total": total, "time_used": int(st["ended_at"] - st["started_at"] - paused_total(st)), - "pauses": st.get("pauses", 0), "paused_seconds": int(paused_total(st)), "results": {k: {"pass": v["pass"], "earned": v["earned"], "total": v["total"], "failed": [ch["name"] for ch in v["checks"] if not ch["pass"]]} for k, v in st["results"].items()}} @@ -1178,7 +1177,7 @@ class Api(http.server.BaseHTTPRequestHandler): payload["session"] = {"mode": st.get("mode"), "hard": st.get("hard", False), "started_at": st["started_at"], "duration": st.get("duration", EXAM_SECONDS), "ends_at": st["started_at"] + st.get("duration", EXAM_SECONDS), "ended_at": st.get("ended_at"), "over_time": st.get("over_time", False), "flags": st.get("flags", []), - "paused": bool(st.get("paused_at")), "paused_total": paused_total(st), "pauses": st.get("pauses", 0), + "paused": bool(st.get("paused_at")), "paused_total": paused_total(st), "untimed": untimed(st), "notes": st.get("notes", ""), "results": st["results"], "score": {"earned": earned, "total": total, "pct": pct, "pass_pct": PASS_PCT}, "domains": self.domain_scores(st), "server_time": time.time()} diff --git a/web/index.html b/web/index.html index 8263338..18323f0 100644 --- a/web/index.html +++ b/web/index.html @@ -422,7 +422,7 @@ function showResults() { const s = S.session, sc = s.score; $('#results').dataset.shown = 1; - $('#resSub').textContent = `${s.mode === 'drill' ? 'Drill' : 'Full exam'} · ${fmt(s.ended_at - s.started_at - s.paused_total)} used${s.over_time ? ' (over time)' : ''}${s.pauses ? ` · paused ${s.pauses}× (${fmt(s.paused_total)})` : ''}`; + $('#resSub').textContent = `${s.mode === 'drill' ? 'Drill' : 'Full exam'} · ${fmt(s.ended_at - s.started_at - s.paused_total)} used${s.over_time ? ' (over time)' : ''}`; $('#resScore').innerHTML = `${sc.pct}% ${sc.earned} / ${sc.total} points`; const v = $('#resVerdict'); v.textContent = sc.pct >= sc.pass_pct ? 'Pass' : 'Fail'; v.className = 'verdict ' + (sc.pct >= sc.pass_pct ? 'pass' : 'fail'); $('#resDomains').innerHTML = Object.entries(s.domains).map(([d, x]) =>