leaderboard-raderna i overlay är tätare igen
This commit is contained in:
30
src/app.js
30
src/app.js
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user