leaderboard-raderna i overlay är tätare igen

This commit is contained in:
larssand
2026-03-15 15:23:41 +01:00
parent 604ec28030
commit a13a649267
2 changed files with 79 additions and 61 deletions

View File

@@ -1083,6 +1083,7 @@ let selectedTeamEditId = null;
let quickAddDraft = null;
let overlaySyncTimer = null;
let overlayRotationTimer = null;
let overlayLiveRefreshTimer = null;
let overlayRotationIndex = 0;
let overlayEvents = [];
let lastOverlayLeaderKeyBySession = {};
@@ -1131,6 +1132,7 @@ async function init() {
if (overlayMode) {
startOverlaySync();
startOverlayRotation();
startOverlayLiveRefresh();
if (state.settings.wsUrl) {
connectDecoder();
}
@@ -1704,6 +1706,15 @@ function startOverlayRotation() {
}, 8000);
}
function startOverlayLiveRefresh() {
clearInterval(overlayLiveRefreshTimer);
overlayLiveRefreshTimer = setInterval(() => {
if (currentView === "overlay" && ["leaderboard", "tv", "team"].includes(overlayViewMode)) {
renderOverlay();
}
}, 250);
}
function renderNav() {
if (overlayMode) {
dom.nav.innerHTML = "";
@@ -5679,16 +5690,20 @@ function buildLeaderboard(session) {
const distanceToTargetMs = Math.abs(targetMs - totalElapsedMs);
const seedMetric = getCompetitorSeedMetric(session, row);
const passings = getCompetitorPassings(session, row);
const latestPassing = passings.length ? passings[passings.length - 1] : null;
const previousLapMs = passings.length >= 2 ? Number(passings[passings.length - 2].lapMs || 0) : null;
const lastLapMs = latestPassing ? Number(latestPassing.lapMs || 0) : Number(row.lastLapMs || 0) || 0;
const bestLapMs = Number(row.bestLapMs || 0) || 0;
const lastPassingTs = latestPassing ? Number(latestPassing.timestamp || 0) : Number(row.lastTimestamp || 0) || 0;
const lapDeltaMs =
row.lastLapMs && previousLapMs && row.lastLapMs > 0 && previousLapMs > 0 ? row.lastLapMs - previousLapMs : null;
lastLapMs && previousLapMs && lastLapMs > 0 && previousLapMs > 0 ? lastLapMs - previousLapMs : null;
const predictionBaseMs =
Number(row.lastLapMs || 0) > 0
? Number(row.lastLapMs)
: Number(row.bestLapMs || 0) > 0
? Number(row.bestLapMs)
lastLapMs > 0
? lastLapMs
: bestLapMs > 0
? bestLapMs
: null;
const currentLapElapsedMs = row.lastTimestamp ? Math.max(0, nowTs - row.lastTimestamp) : 0;
const currentLapElapsedMs = lastPassingTs ? Math.max(0, nowTs - lastPassingTs) : 0;
const predictedRemainingMs = predictionBaseMs ? Math.max(0, predictionBaseMs - currentLapElapsedMs) : null;
const predictedProgress = predictionBaseMs ? Math.min(1.25, currentLapElapsedMs / predictionBaseMs) : 0;
const predictionTone =
@@ -5699,6 +5714,9 @@ function buildLeaderboard(session) {
: "late";
return {
...row,
lastLapMs,
bestLapMs,
lastTimestamp: lastPassingTs || row.lastTimestamp,
totalElapsedMs,
distanceToTargetMs,
seedMetric,