Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
5f6ae79bf0
|
|||
|
697788c20f
|
|||
|
5c5828cfc1
|
46
index.html
46
index.html
@@ -210,9 +210,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
eventFilters.style.display = "block";
|
eventFilters.style.display = "block";
|
||||||
updateAccountOptions();
|
updateAccountOptionsAndLoadEvents();
|
||||||
// Don't automatically fetch events on page load
|
|
||||||
// Wait for user to explicitly select an account or click fetch
|
|
||||||
} else {
|
} else {
|
||||||
// User is not logged in
|
// User is not logged in
|
||||||
loginView.style.display = "flex";
|
loginView.style.display = "flex";
|
||||||
@@ -255,7 +253,7 @@
|
|||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateAccountOptions() {
|
function updateAccountOptionsAndLoadEvents() {
|
||||||
// Fetch available accounts from the server
|
// Fetch available accounts from the server
|
||||||
fetch(`${apiBaseUrl}/accounts`, {
|
fetch(`${apiBaseUrl}/accounts`, {
|
||||||
headers: { "Authorization": `Bearer ${storedApiKey}` }
|
headers: { "Authorization": `Bearer ${storedApiKey}` }
|
||||||
@@ -306,6 +304,9 @@
|
|||||||
|
|
||||||
// Set the selected account in the dropdown
|
// Set the selected account in the dropdown
|
||||||
accountSelect.value = accountToSelect;
|
accountSelect.value = accountToSelect;
|
||||||
|
|
||||||
|
// Automatically fetch events for the selected account
|
||||||
|
fetchEvents(storedApiKey, accountToSelect);
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
console.error("Erreur lors du chargement des comptes:", error);
|
console.error("Erreur lors du chargement des comptes:", error);
|
||||||
@@ -431,6 +432,7 @@
|
|||||||
<div class="card" style="border-left: 5px solid ${event.color}" data-id="${event.id_event}">
|
<div class="card" style="border-left: 5px solid ${event.color}" data-id="${event.id_event}">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">${event.agegroup} - ${event.name}</h5>
|
<h5 class="card-title">${event.agegroup} - ${event.name}</h5>
|
||||||
|
<p class="card-text">${event.title}</p>
|
||||||
<p class="card-text"><strong>Adversaire:</strong> ${event.opponent}</p>
|
<p class="card-text"><strong>Adversaire:</strong> ${event.opponent}</p>
|
||||||
<p class="card-text"><strong>Lieu:</strong> ${event.place}</p>
|
<p class="card-text"><strong>Lieu:</strong> ${event.place}</p>
|
||||||
<p class="card-text"><strong>Heure:</strong> ${event.start} - ${event.end}</p>
|
<p class="card-text"><strong>Heure:</strong> ${event.start} - ${event.end}</p>
|
||||||
@@ -452,16 +454,46 @@
|
|||||||
const sortedPlayers = data.convocation.available
|
const sortedPlayers = data.convocation.available
|
||||||
.sort((a, b) => (a.number || 0) - (b.number || 0));
|
.sort((a, b) => (a.number || 0) - (b.number || 0));
|
||||||
|
|
||||||
|
// Calculate player statistics
|
||||||
|
const totalPlayers = sortedPlayers.length;
|
||||||
|
const positionCount = {};
|
||||||
|
sortedPlayers.forEach(player => {
|
||||||
|
const position = player.position || "N/A";
|
||||||
|
positionCount[position] = (positionCount[position] || 0) + 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Generate position breakdown
|
||||||
|
const positionBreakdown = Object.entries(positionCount)
|
||||||
|
.map(([position, count]) => `${position}: ${count}`)
|
||||||
|
.join(', ');
|
||||||
|
|
||||||
|
// Sort players by position first, then by number
|
||||||
|
const playersByPosition = [...sortedPlayers].sort((a, b) => {
|
||||||
|
// Sort by position first
|
||||||
|
const positionA = a.position || "ZZZ"; // Put undefined positions at the end
|
||||||
|
const positionB = b.position || "ZZZ";
|
||||||
|
|
||||||
|
if (positionA !== positionB) {
|
||||||
|
return positionA.localeCompare(positionB);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If positions are the same, sort by number
|
||||||
|
const numA = parseInt(a.number) || 0;
|
||||||
|
const numB = parseInt(b.number) || 0;
|
||||||
|
return numA - numB;
|
||||||
|
});
|
||||||
|
|
||||||
eventDetailsContent.innerHTML = `
|
eventDetailsContent.innerHTML = `
|
||||||
<h5>${data.title}</h5>
|
<h5>${data.title}</h5>
|
||||||
<p><strong>Type:</strong> ${data.type}</p>
|
<p><strong>Type:</strong> ${data.type}</p>
|
||||||
<p><strong>Lieu:</strong> ${data.place}</p>
|
<p><strong>Lieu:</strong> ${data.place}</p>
|
||||||
<p><strong>Heure:</strong> ${data.time_start} - ${data.time_end}</p>
|
<p><strong>Heure:</strong> ${data.time_start} - ${data.time_end}</p>
|
||||||
<h6>Joueurs convoqués:</h6>
|
<p><strong>Joueurs convoqués:</strong> ${totalPlayers} joueur${totalPlayers > 1 ? 's' : ''} (${positionBreakdown})</p>
|
||||||
<ul>${sortedPlayers.map(player => {
|
<h6>Liste des joueurs:</h6>
|
||||||
|
<ul>${playersByPosition.map(player => {
|
||||||
let number = player.number ? player.number : "N/A";
|
let number = player.number ? player.number : "N/A";
|
||||||
let position = player.position ? player.position : "N/A";
|
let position = player.position ? player.position : "N/A";
|
||||||
return `<li>${number} - ${player.fname} ${player.lname} (${position}, ${player.dob})</li>`;
|
return `<li>[${position}] ${number} - ${player.fname} ${player.lname} (${player.dob})</li>`;
|
||||||
}).join('')}</ul>
|
}).join('')}</ul>
|
||||||
`;
|
`;
|
||||||
new bootstrap.Modal(document.getElementById('eventDetailsModal')).show();
|
new bootstrap.Modal(document.getElementById('eventDetailsModal')).show();
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "myice"
|
name = "myice"
|
||||||
version = "v0.5.4"
|
version = "v0.5.5"
|
||||||
description = "myice parsing"
|
description = "myice parsing"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Rene Luria", "email" = "<rene@luria.ch>"},
|
{ name = "Rene Luria", "email" = "<rene@luria.ch>"},
|
||||||
|
|||||||
Reference in New Issue
Block a user