From 9a783ec8aa1d1e96ef27ac6075b084ed47f52ddc Mon Sep 17 00:00:00 2001 From: jze9 Date: Mon, 13 Jul 2026 16:51:52 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=B0=D1=88=D0=B1=D0=BE=D1=80=D0=B4:=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BB=D0=BE=D0=BD=D0=BA=D0=B0=20=C2=AB=D0=9A=D0=BE?= =?UTF-8?q?=D0=B3=D0=B4=D0=B0=20=D0=BD=D0=B0=D0=B9=D0=B4=D0=B5=D0=BD=C2=BB?= =?UTF-8?q?=20=D0=B2=20=D1=82=D0=BE=D0=BF=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Без времени находки обновление топа было невидимо: новая строка-рекорд 13.63% глазом неотличима от старой 13.44%, и пользователю казалось, что таблица застыла («тир-лист не обновлялся давно» при живом конвейере). Свежие записи (моложе часа) подсвечиваются зелёным. --- src/gausse/web/page.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gausse/web/page.py b/src/gausse/web/page.py index 4891dec..3c8d8ce 100644 --- a/src/gausse/web/page.py +++ b/src/gausse/web/page.py @@ -72,7 +72,7 @@ PAGE_HTML = r""" - +
КПДСкор., м/сСтуп.Цена, ₽Режим
КПДСкор., м/сСтуп.Цена, ₽РежимКогда найден

Клик по строке — полная детализация прогона (расстояния, номиналы, физика).

@@ -109,13 +109,23 @@ function setRank(m){ rankMode=m; if(lastOverview) renderTop(lastOverview); document.getElementById('tab-eff').classList.toggle('active', m==='eff'); document.getElementById('tab-vel').classList.toggle('active', m==='vel'); } +// «Когда найден»: без этой колонки обновление топа было НЕВИДИМО — новая +// строка 13.63% глазом неотличима от старой 13.44%, и казалось, что таблица +// застыла. Свежие записи (< 1 часа) подсвечиваются. +const fmtWhen = ts => { + if(!ts) return "—"; + const d = new Date(ts), ageMs = Date.now()-d.getTime(); + const t = d.toLocaleString([], {day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}); + return ageMs < 3600e3 ? `${t}` : t; +}; function renderTop(o){ const rows = rankMode==='vel' ? (o.top_by_velocity||[]) : (o.top||[]); const top = document.getElementById('top'); top.innerHTML=''; rows.forEach(t=>{ const tr=document.createElement('tr'); tr.className='clk'; tr.innerHTML=`${fmtPct(t.efficiency)}${fmt(t.exit_velocity_mps,1)}`+ - `${t.n_stages??'—'}${fmt(t.cost_rub,0)}${t.search_mode}`; + `${t.n_stages??'—'}${fmt(t.cost_rub,0)}${t.search_mode}`+ + `${fmtWhen(t.timestamp)}`; tr.onclick=()=>showDetail(t.run_id); top.appendChild(tr); });