237 lines
9.2 KiB
HTML
237 lines
9.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Pool Oscars - Mes choix</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<link href="./css/app.css" rel="stylesheet">
|
|
<link rel="preload" as="image" href="img/logo_w.png">
|
|
<script src="./js/app_header_boot.js" defer></script>
|
|
<style>
|
|
.navbar-custom {
|
|
background-color: black;
|
|
color: white;
|
|
}
|
|
.navbar-custom .navbar-brand,
|
|
.navbar-custom .nav-link {
|
|
color: white;
|
|
}
|
|
.navbar-custom .nav-link:hover {
|
|
color: #ddd;
|
|
}
|
|
.navbar-toggler {
|
|
border-color: white;
|
|
}
|
|
.navbar-toggler-icon {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='white' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
|
|
}
|
|
.category-card {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
.nominee-option {
|
|
cursor: pointer;
|
|
transition: background-color 0.2s;
|
|
}
|
|
.nominee-option:hover {
|
|
background-color: #f8f9fa;
|
|
}
|
|
.nominee-option.selected {
|
|
background-color: #0d6efd;
|
|
color: white;
|
|
}
|
|
.nominee-option.selected:hover {
|
|
background-color: #0b5ed7;
|
|
}
|
|
.user-picks-card {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
.pick-item {
|
|
padding: 0.5rem;
|
|
border-bottom: 1px solid #dee2e6;
|
|
}
|
|
.pick-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
.correct-pick {
|
|
background-color: #d1e7dd;
|
|
}
|
|
.incorrect-pick {
|
|
background-color: #f8d7da;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="bg-light">
|
|
|
|
<nav class="navbar navbar-expand-lg navbar-custom">
|
|
<div class="container">
|
|
<a class="navbar-brand" style="margin-left: -7px;">
|
|
<img src="img/logo_w.png" width="220" height="70" loading="eager" fetchpriority="high" decoding="async" style="max-width: 220px; height: 70px; object-fit: contain;">
|
|
</a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
<div class="navbar-nav">
|
|
<a href="movies.html" class="nav-link btn btn-outline-light me-2">Films</a>
|
|
<a href="checklist.html" class="nav-link btn btn-outline-light me-2">Checklist</a>
|
|
<a href="user-stat.html" class="nav-link btn btn-outline-light me-2">Statistiques</a>
|
|
<a href="picks.html" class="nav-link btn btn-outline-light me-2">Mes choix</a>
|
|
<a id="admin-control-link" href="control.html" class="nav-link btn btn-warning me-2 d-none">Admin</a>
|
|
</div>
|
|
<div class="d-flex ms-auto mt-2 mt-lg-0 align-items-center">
|
|
<span id="user-name" class="navbar-text me-3"></span>
|
|
<button id="log-off" class="btn btn-danger">Déconnexion</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container mt-5 pb-5">
|
|
<h2>Mes choix Oscars</h2>
|
|
|
|
<div id="alert-container"></div>
|
|
|
|
<!-- Tabs -->
|
|
<ul class="nav nav-tabs mt-3" id="picksTabs" role="tablist">
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link active" id="tab-my-picks" data-bs-toggle="tab" data-bs-target="#pane-my-picks" type="button" role="tab" aria-controls="pane-my-picks" aria-selected="true">
|
|
Mes choix
|
|
</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link d-none" id="tab-all-picks" data-bs-toggle="tab" data-bs-target="#pane-all-picks" type="button" role="tab" aria-controls="pane-all-picks" aria-selected="false">
|
|
Voir tous les choix
|
|
<span class="badge bg-warning text-dark ms-1">Admin</span>
|
|
</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link d-none" id="tab-winners" data-bs-toggle="tab" data-bs-target="#pane-winners" type="button" role="tab" aria-controls="pane-winners" aria-selected="false">
|
|
Gagnants & Scores
|
|
<span class="badge bg-warning text-dark ms-1">Admin</span>
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
|
|
<div class="tab-content pt-3" id="picksTabsContent">
|
|
<!-- My Picks Tab -->
|
|
<div class="tab-pane fade show active" id="pane-my-picks" role="tabpanel" aria-labelledby="tab-my-picks" tabindex="0">
|
|
<div class="card shadow-sm mb-4">
|
|
<div class="card-body">
|
|
<div class="d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-2">
|
|
<div>
|
|
<div class="fw-semibold">Année: <span id="current-year">—</span></div>
|
|
<div class="text-muted small">Sélectionne tes choix pour chaque catégorie</div>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" id="load-my-picks" class="btn btn-outline-secondary">Recharger mes choix</button>
|
|
<button type="button" id="submit-picks" class="btn btn-primary">Enregistrer mes choix</button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-3">
|
|
<div class="text-muted small">
|
|
Progression: <span id="picks-progress">0 / 0</span> catégories complétées
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="categories-container">
|
|
<div class="text-center py-4 text-muted">Chargement des catégories…</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- All Picks Tab (Admin only) -->
|
|
<div class="tab-pane fade" id="pane-all-picks" role="tabpanel" aria-labelledby="tab-all-picks" tabindex="0">
|
|
<div class="card shadow-sm mb-4">
|
|
<div class="card-body">
|
|
<div class="d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-2">
|
|
<div>
|
|
<div class="fw-semibold">Année: <span id="all-picks-year">—</span></div>
|
|
<div class="text-muted small">Vue d'ensemble de tous les choix des utilisateurs</div>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" id="refresh-all-picks" class="btn btn-outline-secondary">Rafraîchir</button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-3">
|
|
<div class="text-muted small">
|
|
<span id="users-count">0</span> utilisateur(s) ont soumis leurs choix
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="all-picks-container">
|
|
<div class="text-center py-4 text-muted">Chargement des choix…</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Winners & Scores Tab (Admin only) -->
|
|
<div class="tab-pane fade" id="pane-winners" role="tabpanel" aria-labelledby="tab-winners" tabindex="0">
|
|
<div class="card shadow-sm mb-4">
|
|
<div class="card-body">
|
|
<div class="d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-2">
|
|
<div>
|
|
<div class="fw-semibold">Année: <span id="winners-year">—</span></div>
|
|
<div class="text-muted small">Marquez les gagnants et calculez les scores</div>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" id="calculate-scores" class="btn btn-success">Calculer les scores</button>
|
|
<button type="button" id="refresh-winners" class="btn btn-outline-secondary">Rafraîchir</button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-3">
|
|
<div class="text-muted small">
|
|
<span id="winners-progress">0 / 0</span> catégories avec gagnants marqués
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="winners-container">
|
|
<div class="text-center py-4 text-muted">Chargement des catégories…</div>
|
|
</div>
|
|
|
|
<!-- Scores Table -->
|
|
<div class="card shadow-sm mt-4">
|
|
<div class="card-header">
|
|
<h5 class="mb-0">Scores des utilisateurs</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div id="scores-container">
|
|
<div class="text-center py-4 text-muted">Les scores seront calculés après avoir marqué les gagnants.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal for user picks comparison -->
|
|
<div class="modal fade" id="userPicksModal" tabindex="-1" aria-labelledby="userPicksModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg modal-dialog-scrollable">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="userPicksModalLabel">Détails des choix</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div id="user-picks-modal-content">
|
|
<div class="text-center py-4 text-muted">Chargement...</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.js"></script>
|
|
<script src="./js/app_picks.js"></script>
|
|
|
|
</body>
|
|
</html>
|
|
|