document.addEventListener("DOMContentLoaded", () => { let buildingNames = {}; let unitNames = {}; // Fetch building names first fetch("/api/buildings") .then(res => res.json()) .then(data => { buildingNames = data; }); // Fetch unit names fetch("/api/units") .then(res => res.json()) .then(data => { unitNames = data; }); fetch("/api/data") .then(res => res.json()) .then(data => { const playerList = document.getElementById("player-list"); const playerDetails = document.getElementById("player-details"); const attacksList = document.getElementById("attacks-list"); // Fill player list Object.keys(data.players).forEach(name => { const div = document.createElement("div"); div.className = "player-item"; div.textContent = name; div.addEventListener("click", () => { showTownSelection(data.players[name]); }); playerList.appendChild(div); }); // Fill incoming attacks panel if (data.attacks.length === 0) { attacksList.innerHTML = "

No incoming attacks

"; } else { data.attacks.forEach(atk => { const div = document.createElement("div"); div.className = "p-2 border-bottom"; div.innerHTML = `${atk.player}: ${atk.target_town} (${atk.units || 'Unknown units'}) ETA: ${atk.eta}`; attacksList.appendChild(div); }); } // Step 1: Show list of towns for selected player function showTownSelection(player) { if (player.error) { playerDetails.innerHTML = `

${player.error}

`; return; } let html = `

${player.player} (${player.player_id})

`; html += `

Last Update: ${player.timestamp}

`; html += `
Select a town:
`; playerDetails.innerHTML = html; // Attach click events for towns document.querySelectorAll(".town-item").forEach(item => { item.addEventListener("click", () => { const townId = parseInt(item.dataset.townid); const selectedTown = player.towns.find(t => t.town_id === townId); showTownMenu(selectedTown); }); }); } // Step 2: Show town menu function showTownMenu(town) { let html = `

${town.town_name}

`; html += `

Select info to view:

`; html += `
`; playerDetails.innerHTML = html; const infoSelect = document.getElementById("town-info-select"); const infoDisplay = document.getElementById("town-info-display"); function renderInfo(option) { let displayHTML = ""; if (option === "main") { displayHTML += `
Main Info
`; displayHTML += ``; displayHTML += `
Buildings
`; } else if (option === "buildingOrder") { displayHTML += `
Building Order
`; } else if (option === "researches") { displayHTML += `
Researches
`; } else if (option === "units") { displayHTML += `
Units
`; } infoDisplay.innerHTML = displayHTML; } // Initial render renderInfo(infoSelect.value); // Update on selection change infoSelect.addEventListener("change", () => { renderInfo(infoSelect.value); }); } }); });