NETWORK
Overview Team Socials Partners Creators Birthdays Server Rules Updates Rankings Vote for Us Wiki
Join the Discussion

Kerala's Best Minecraft community platform.

JOIN DISCORD

Averon Network

Network Leaderboard

Loading Champions...

Full Ranking List
; const leaderboardData = JSON.parse(document.getElementById('leaderboard-meta').textContent); let activeServer = ''; let activeMetric = ''; let currentPage = 1; function updateURL(serverId, metricId) { const url = new URL(window.location); if (serverId) url.searchParams.set('server', serverId); if (metricId) url.searchParams.set('metric', metricId); window.history.replaceState({}, '', url); } async function fetchBoardData(serverId, metricId, page = 1) { const podiumContent = document.getElementById('podium-content'); const listContent = document.getElementById('list-content'); const nextBtn = document.getElementById('next-btn'); const prevBtn = document.getElementById('prev-btn'); // Show loading state if (page === 1) { podiumContent.innerHTML = '

Loading Champions...

'; } listContent.innerHTML = '
Loading...
'; try { const response = await fetch(`/api/leaderboard/?server=${serverId}&metric=${metricId}&page=${page}`); const data = await response.json(); if (page === 1) renderPodium(data.entries, serverId, metricId); renderList(data.entries); currentPage = page; prevBtn.disabled = page === 1; nextBtn.disabled = !data.has_more; } catch (err) { console.error("Fetch error:", err); listContent.innerHTML = '
Error loading data.
'; } } function renderPodium(entries, serverId, metricId) { const meta = leaderboardData[serverId].find(b => b.id.toString() === metricId.toString()); const podiumContent = document.getElementById('podium-content'); let html = `

${meta ? meta.title : 'Leaderboard'}

Top Champions

`; const top3 = entries.slice(0, 3); if (top3.length >= 2) { html += `
${top3[1].name}
${top3[1].value}
`; } if (top3.length >= 1) { html += `
${top3[0].name}
${top3[0].value}
`; } if (top3.length >= 3) { html += `
${top3[2].name}
${top3[2].value}
`; } html += '
'; podiumContent.innerHTML = html; } function renderList(entries) { const listContent = document.getElementById('list-content'); if (entries.length === 0) { listContent.innerHTML = '
No further data.
'; return; } let html = ''; entries.forEach(entry => { html += `
#${entry.pos} ${entry.name} ${entry.value}
`; }); listContent.innerHTML = html; document.getElementById('list-viewport').scrollTop = 0; } function changeServer(serverId, targetMetricId = null) { activeServer = serverId; document.querySelectorAll('[data-server-tab]').forEach(tab => { tab.classList.toggle('active', tab.getAttribute('data-server-tab') === serverId); }); const container = document.getElementById('metric-sidebar'); container.innerHTML = ''; const boards = leaderboardData[serverId] || []; boards.forEach(b => { const item = document.createElement('div'); item.className = 'side-item'; item.innerHTML = ` ${b.title}`; item.setAttribute('data-metric-id', b.id); item.onclick = () => selectMetric(b.id); container.appendChild(item); }); if (boards.length > 0) { const saved = localStorage.getItem(`v4_metric_${serverId}`); const target = targetMetricId || (saved && boards.find(b => b.id.toString() === saved.toString()) ? saved : boards[0].id); selectMetric(target); } localStorage.setItem('v4_server', serverId); } function selectMetric(metricId) { activeMetric = metricId; document.querySelectorAll('#metric-sidebar .side-item').forEach(item => { item.classList.toggle('active', item.getAttribute('data-metric-id').toString() === metricId.toString()); }); localStorage.setItem(`v4_metric_${activeServer}`, metricId); updateURL(activeServer, metricId); fetchBoardData(activeServer, metricId, 1); } function changePage(delta) { const newPage = currentPage + delta; if (newPage < 1) return; fetchBoardData(activeServer, activeMetric, newPage); } document.addEventListener('DOMContentLoaded', () => { const urlParams = new URLSearchParams(window.location.search); const urlServer = urlParams.get('server'); const urlMetric = urlParams.get('metric'); const savedSrv = localStorage.getItem('v4_server'); const firstSrv = Object.keys(leaderboardData)[0]; const targetServer = (urlServer && leaderboardData[urlServer]) ? urlServer : ( (savedSrv && leaderboardData[savedSrv]) ? savedSrv : firstSrv ); if (targetServer) { changeServer(targetServer, urlMetric); } });