54 lines
1.5 KiB
JavaScript
Raw Permalink Normal View History

let refreshInterval;
let countdownInterval;
let seconds = 30;
function updateLastUpdateTime() {
const el = document.getElementById('last-update-time');
if (el) {
const now = new Date();
el.textContent = `最后更新: ${now.toLocaleTimeString('zh-CN', { hour12: false })}`;
}
}
function updateCountdown() {
const el = document.getElementById('refresh-indicator');
if (el) el.textContent = `${seconds}s`;
}
function startCountdown() {
seconds = 30;
updateCountdown();
if (countdownInterval) clearInterval(countdownInterval);
countdownInterval = setInterval(() => {
seconds--;
if (seconds <= 0) seconds = 30;
updateCountdown();
}, 1000);
}
async function refreshAllData() {
const devs = await getDevStatus();
const stats = await getAllStats();
if (typeof renderStats === 'function') renderStats(stats);
if (typeof renderDevCards === 'function') renderDevCards(devs);
if (typeof renderRanking === 'function') renderRanking(devs);
updateLastUpdateTime();
}
async function initApp() {
await initBoard();
await initRanking();
initRadar();
await refreshAllData();
startCountdown();
if (refreshInterval) clearInterval(refreshInterval);
refreshInterval = setInterval(refreshAllData, 30000);
}
document.addEventListener('DOMContentLoaded', initApp);
window.addEventListener('beforeunload', () => {
if (refreshInterval) clearInterval(refreshInterval);
if (countdownInterval) clearInterval(countdownInterval);
});