- Renamed 'Mes choix' to 'Mes picks' across all pages and JavaScript files - Added visibility toggle in control panel (Réglages > Visibilité) to control: - Display of 'Mes picks' button in navigation - Display of 'Bon picks' column in user statistics - Combined both visibility options into single toggle for simplicity - Added backend API endpoints for visibility configuration - Implemented localStorage caching for instant visibility updates - Fixed flash of content issues when navigating between pages - Updated stats endpoint to calculate correct picks on-the-fly from current winners - Renamed 'Bonnes réponses' to 'Bon picks' in user statistics table
195 lines
7.5 KiB
HTML
195 lines
7.5 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 picks</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");
|
|
}
|
|
.nominee-option {
|
|
cursor: pointer;
|
|
transition: all 0.2s;
|
|
}
|
|
.nominee-option:hover {
|
|
opacity: 0.8;
|
|
transform: scale(1.05);
|
|
}
|
|
.table-sm td {
|
|
padding: 0.5rem;
|
|
vertical-align: middle;
|
|
}
|
|
.table-sm th {
|
|
padding: 0.5rem;
|
|
font-size: 0.875rem;
|
|
}
|
|
.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" id="nav-link-picks" style="display: none;">Mes picks</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 picks 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 picks
|
|
</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="tab-scores" data-bs-toggle="tab" data-bs-target="#pane-scores" type="button" role="tab" aria-controls="pane-scores" aria-selected="false">
|
|
Scores
|
|
</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
|
|
<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="d-flex flex-wrap align-items-center justify-content-between gap-2 mb-3">
|
|
<div>
|
|
<span class="fw-semibold">Année: <span id="current-year">—</span></span>
|
|
<span class="text-muted small ms-2">Progression: <span id="picks-progress">0 / 0</span></span>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" id="load-my-picks" class="btn btn-sm btn-outline-secondary">Recharger</button>
|
|
<button type="button" id="submit-picks" class="btn btn-sm btn-primary">Enregistrer</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="categories-container">
|
|
<div class="text-center py-3 text-muted small">Chargement des catégories…</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Scores Tab -->
|
|
<div class="tab-pane fade" id="pane-scores" role="tabpanel" aria-labelledby="tab-scores" tabindex="0">
|
|
<div class="d-flex flex-wrap align-items-center justify-content-between gap-2 mb-3">
|
|
<div>
|
|
<span class="fw-semibold">Année: <span id="scores-year">—</span></span>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" id="refresh-scores" class="btn btn-sm btn-outline-secondary">Rafraîchir</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="scores-container">
|
|
<div class="text-center py-3 text-muted small">Les scores seront calculés après avoir marqué les gagnants.</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Gagnants Tab (Admin only) -->
|
|
<div class="tab-pane fade" id="pane-winners" role="tabpanel" aria-labelledby="tab-winners" tabindex="0">
|
|
<div class="d-flex flex-wrap align-items-center justify-content-between gap-2 mb-3">
|
|
<div>
|
|
<span class="fw-semibold">Année: <span id="winners-year">—</span></span>
|
|
<span class="text-muted small ms-2"><span id="winners-progress">0 / 0</span> gagnants marqués</span>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" id="calculate-scores" class="btn btn-sm btn-success">Calculer</button>
|
|
<button type="button" id="refresh-winners" class="btn btn-sm btn-outline-secondary">Rafraîchir</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="winners-container">
|
|
<div class="text-center py-3 text-muted small">Chargement des catégories…</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>
|
|
|