{source}<h2 id="roundTitle">Stand na ronde ...</h2>
<p id="fileInfo"></p>
<div id="stand"></div>

<!-- Popup -->
<div id="playerModal" style="display: none;">
<div class="modal-content">
<span class="close-button">&times;</span>
<h3 id="playerName"></h3>
<table id="roundResults">
<thead>
<tr>
<th>Ronde</th>
<th>Tegenstander</th>
<th>Rating</th>
<th>Score</th>
<th>Kleur</th>
</tr>
</thead>
<tbody></tbody>
<tfoot>
<tr>
<td colspan="3"><b>Totaalscore:</b></td>
<td id="totalScore"><b>0</b></td>
<td></td>
</tr>
</tfoot>
</table>
</div>
</div>

<style>
table {
border-collapse: collapse;
width: 100%;
margin-bottom: 20px;
}
th, td {
border: 1px solid #555;
text-align: center;
padding: 8px;
}
thead th {
background-color: #d9edf7;
}
tbody tr:nth-child(even) {
background-color: #f2f2f2;
}
td:nth-child(2) {
text-align: left;
}

/* Flags styling */
.flag {
display: inline-block;
padding: 2px 6px;
margin: 0 2px;
border-radius: 4px;
background-color: #eee;
font-weight: bold;
font-size: 12px;
}

/* Popup */
.modal-content {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: white;
border: 1px solid #888;
width: 80%;
padding: 20px;
z-index: 1000;
box-shadow: 0 5px 15px rgba(0,0,0,0.5);
}
.close-button {
float: right;
font-size: 20px;
font-weight: bold;
cursor: pointer;
}
#playerModal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.4);
z-index: 999;
display: none;
}
</style>

<script>
document.addEventListener('DOMContentLoaded', () => {

/* Alleen flags tonen (geen uitleg) */
function formatFlags(flags) {
if (!flags || flags.trim() === "") return "";
return flags
.split("")
.map(f => `<span class="flag">${f}</span>`)
.join(" ");
}

fetch('https://www.sv-spijkenisse.nl/data/toernooi/jeugdtoernooi/2026/catig/SMWSite/data.json')
.then(response => response.json())
.then(data => {

const players = data.players || [];
const rounds = data.rounds || [];

if (players.length === 0 || rounds.length === 0) {
console.error("Geen data gevonden");
return;
}

const lastRoundNumber = rounds.length;
const lastRound = rounds[lastRoundNumber - 1];
const rankings = lastRound.ranking || [];

document.getElementById('roundTitle').textContent =
`Stand na ronde ${lastRoundNumber}`;

const playerMap = {};
players.forEach(p => {
playerMap[p.pairing_number] = p;
});

const standContainer = document.getElementById('stand');

const table = document.createElement('table');
table.innerHTML = `
<thead>
<tr>
<th>Rank</th>
<th>Naam</th>
<th>Cat</th>
<th>Score</th>
<th>WP</th>
<th>SB</th>
<th>Rating</th>
<th>TPR</th>
<th>W-We</th>
</tr>
</thead>
<tbody>
${rankings.map(rank => {
const player = playerMap[rank.player] || {}
;
return `
<tr>
<td>${rank.rank ?? "-"}</td>
<td>
<a href="#" class="player-link" data-id="${rank.player}">
${player.name ?? "Onbekend"}
</a>
</td>
<td>${formatFlags(player.flags)}</td>
<td>${rank.score?.toFixed(1) ?? "-"}</td>
<td>${rank.buchholz?.toFixed(2) ?? "-"}</td>
<td>${rank.sonneborn_berger?.toFixed(2) ?? "-"}</td>
<td>${player.rating ?? "-"}</td>
<td>${rank.tpr ?? "-"}</td>
<td>${rank.w_we?.toFixed(2) ?? "-"}</td>
</tr>
`;
}).join('')}
</tbody>
`;

standContainer.appendChild(table);

/* Datum */
const updatedAt = new Date(data.updated_at);
document.getElementById("fileInfo").textContent =
"Laatst bijgewerkt: " + updatedAt.toLocaleString('nl-NL');

/* Popup */
const modal = document.getElementById('playerModal');
const closeButton = document.querySelector('.close-button');
const playerNameElement = document.getElementById('playerName');
const roundResultsTable = document.querySelector('#roundResults tbody');
const totalScoreElement = document.getElementById('totalScore');

document.querySelectorAll('.player-link').forEach(link => {
link.addEventListener('click', e => {
e.preventDefault();

const playerId = e.target.dataset.id;
const player = playerMap[playerId];
if (!player) return;

playerNameElement.textContent = player.name;

let totalScore = 0;

roundResultsTable.innerHTML = rounds.map((round, i) => {
const pairing = round.pairings.find(p =>
p.white == playerId || p.black == playerId
);

if (!pairing) return '';

const opponentId =
pairing.white == playerId ? pairing.black : pairing.white;

const opponent = playerMap[opponentId];
const isWhite = pairing.white == playerId;
const color = isWhite ? 'w' : 'b';

const score = isWhite
? pairing.white_points
: pairing.black_points;

totalScore += score;

return `
<tr>
<td>${i + 1}</td>
<td>${opponent?.name ?? "-"}</td>
<td>${opponent?.rating ?? "-"}</td>
<td>${score}</td>
<td>${color}</td>
</tr>
`;
}).join('');

totalScoreElement.textContent = totalScore.toFixed(1);
modal.style.display = 'block';
});
});

closeButton.onclick = () => modal.style.display = 'none';

});

});
</script>
{/source}