diff --git a/static/js/app.js b/static/js/app.js new file mode 100644 index 0000000..e29d5b2 --- /dev/null +++ b/static/js/app.js @@ -0,0 +1,79 @@ +document.addEventListener("DOMContentLoaded", () => { + 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 = `Last Update: ${player.timestamp}
`; + html += `Points: ${town.points} | Population: ${town.population}
`; + html += `