webui: fix relative timestamps (seconds, not milliseconds)
f.date/f.ago assumed JS milliseconds, but the backend emits Unix epoch seconds everywhere (created_at, feed lastUpdate, rule lastMatch, …), so every real timestamp rendered as ~20607 days ago (now - ~1.78e9 ms). Treat the formatter input as seconds. Search results show the indexer's pubDate string directly rather than mis-parsing it. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
2df3f11cf4
commit
d1b90cfdcb
2 changed files with 8 additions and 7 deletions
|
|
@ -1426,7 +1426,7 @@ function searchTable(rows) {
|
||||||
${rows.map((r, i) => `<tr>
|
${rows.map((r, i) => `<tr>
|
||||||
<td>${f.esc(r.name)}</td><td class="num">${f.bytes(r.size)}</td>
|
<td>${f.esc(r.name)}</td><td class="num">${f.bytes(r.size)}</td>
|
||||||
<td class="num" style="color:var(--up)">${r.seeds}</td><td class="num dim">${r.leeches}</td>
|
<td class="num" style="color:var(--up)">${r.seeds}</td><td class="num dim">${r.leeches}</td>
|
||||||
<td class="dim">${f.esc(r.engine)}</td><td class="num dim">${f.ago(r.pubDate)}</td>
|
<td class="dim">${f.esc(r.engine)}</td><td class="num dim">${r.pubDate ? f.esc(r.pubDate) : '–'}</td>
|
||||||
<td><button class="btn" data-sr="${i}">+ Add</button></td></tr>`).join('')}
|
<td><button class="btn" data-sr="${i}">+ Add</button></td></tr>`).join('')}
|
||||||
</tbody></table>`;
|
</tbody></table>`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,15 +44,16 @@ export function ratio(r) {
|
||||||
return r.toFixed(2);
|
return r.toFixed(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function date(ms) {
|
// Timestamps from the backend are Unix epoch SECONDS; 0/negative means "unset".
|
||||||
if (!ms || ms < 0) return '–';
|
export function date(sec) {
|
||||||
const d = new Date(ms);
|
if (!sec || sec < 0) return '–';
|
||||||
|
const d = new Date(sec * 1000);
|
||||||
return d.toLocaleString(undefined, { year: '2-digit', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' });
|
return d.toLocaleString(undefined, { year: '2-digit', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' });
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ago(ms) {
|
export function ago(sec) {
|
||||||
if (!ms || ms < 0) return '–';
|
if (!sec || sec < 0) return '–';
|
||||||
const s = (Date.now() - ms) / 1000;
|
const s = Date.now() / 1000 - sec;
|
||||||
if (s < 60) return 'just now';
|
if (s < 60) return 'just now';
|
||||||
if (s < 3600) return `${Math.floor(s / 60)}m ago`;
|
if (s < 3600) return `${Math.floor(s / 60)}m ago`;
|
||||||
if (s < 86400) return `${Math.floor(s / 3600)}h ago`;
|
if (s < 86400) return `${Math.floor(s / 3600)}h ago`;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue