const empiredropJsonUrl = "../empiredrop.json";
const dateJsonUrl = "../date_2.json";
const prizeJsonUrl = "../prize.json";
async function fetchPrizeData() {
try {
const response = await fetch(prizeJsonUrl);
return await response.json();
} catch (error) {
console.error("❌ Failed to fetch Prize data:", error);
return null;
}
}
async function fetchEmpiredropData() {
try {
const response = await fetch(empiredropJsonUrl);
const data = await response.json();
const prizeData = await fetchPrizeData();
if (!prizeData) {
console.error("⚠️ No prize data available");
return;
}
updateLeaderboard(data.ranking || [], prizeData);
} catch (error) {
console.error("❌ Failed to fetch Empiredrop data:", error);
}
}
async function updateLeaderboard(rankingData, prizeData) {
const titleElement = document.querySelector(".leaderboard-title");
if (titleElement) {
titleElement.textContent = prizeData.title || "EmpireDrop Leaderboard";
}
if (!rankingData.length) {
console.warn("⚠️ No leaderboard data available. Using placeholders.");
rankingData = Array(10).fill(null).map((_, index) => ({
rank: index + 1,
total: 0,
user: {
name: "Unknown Player",
avatar: "/assets/images/Default_pfp.png"
}
}));
}
rankingData.sort((a, b) => b.total - a.total);
const topThree = rankingData.slice(0, 3);
const rest = rankingData.slice(3, 10);
// Swap 1st and 2nd place in the topThree array
[topThree[0], topThree[1]] = [topThree[1], topThree[0]];
const rankContainers = document.querySelectorAll(".rank-container");
rankContainers.forEach((container, index) => {
if (!container) return;
const player = topThree[index] || { total: 0, user: { name: "-", avatar: "/assets/images/Default_pfp.png" } };
const wagerAmount = (player.total / 100).toFixed(2);
container.querySelector(".wagered-amount").innerHTML = `$${wagerAmount}`;
container.querySelector(".player-name").textContent = player.user.name;
container.querySelector(".profile-picture").src = player.user.avatar;
// Swap prize values for 1st and 2nd places
let prizeAmount;
if (index === 0) {
prizeAmount = prizeData.second_place; // 1st place gets 2nd place prize
} else if (index === 1) {
prizeAmount = prizeData.first_place; // 2nd place gets 1st place prize
} else {
prizeAmount = prizeData.third_place;
}
container.querySelector(".prize-amount").innerHTML = `
${prizeAmount || 0}`;
});
const barEntries = document.querySelectorAll(".bar-entry");
barEntries.forEach((barEntry, index) => {
if (!barEntry) return;
const player = rest[index] || { total: 0, user: { name: "-", avatar: "/assets/images/Default_pfp.png" } };
const wagerAmount = (player.total / 100).toFixed(2);
barEntry.querySelector(".position").textContent = index + 4;
barEntry.querySelector(".username").textContent = player.user.name;
barEntry.querySelector(".wager").innerHTML = `$${wagerAmount}`;
barEntry.querySelector(".bar-avatar").src = player.user.avatar;
const prizeKey = `position_${index + 4}`;
const prizeAmount = prizeData[prizeKey] || 0;
barEntry.querySelector(".prize").innerHTML = `
${prizeAmount}`;
});
}
// Function to handle the countdown based on dates in date.json
async function startCountdown() {
const dates = await fetchDates();
if (!dates) return;
const endingDate = new Date(dates.ending_date).getTime();
const countdownElement = document.querySelector('.leaderboard-time');
function updateCountdown() {
const now = new Date().getTime();
const timeLeft = endingDate - now;
if (timeLeft <= 0) {
countdownElement.innerHTML = "Ends In: End";
clearInterval(interval);
return;
}
const days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));
const hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
countdownElement.innerHTML = `Ends In: ${days}d ${hours}h ${minutes}m ${seconds}s`;
}
const interval = setInterval(updateCountdown, 1000);
updateCountdown();
}
// Fetch start and end dates from date.json
async function fetchDates() {
try {
const response = await fetch(dateJsonUrl);
const data = await response.json();
return data;
} catch (error) {
console.error("❌ Failed to fetch date data:", error);
return null;
}
}
fetchEmpiredropData();
startCountdown();