195 lines
7.6 KiB
HTML
195 lines
7.6 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 - Statistiques des utilisateurs</title>
|
||
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
<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;
|
||
}
|
||
.user-table {
|
||
margin-top: 20px;
|
||
}
|
||
.navbar-toggler {
|
||
border-color: white; /* Make the border 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");
|
||
}
|
||
|
||
/* Stats tabs */
|
||
.stats-tabs .nav-link {
|
||
font-weight: 600;
|
||
}
|
||
.stats-tab-panel {
|
||
padding-top: 1rem;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body class="bg-light">
|
||
|
||
<!-- Black banner with buttons and user info -->
|
||
<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" 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 id="admin-control-link" href="control.html" class="nav-link btn btn-warning me-2 d-none">Admin</a>
|
||
</div>
|
||
<!-- Move user info inside collapsible navbar and align it properly -->
|
||
<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">
|
||
<h2>Statistiques des utilisateurs</h2>
|
||
|
||
<!-- Tabs -->
|
||
<ul class="nav nav-tabs stats-tabs mt-3" id="statsTabs" role="tablist">
|
||
<li class="nav-item" role="presentation">
|
||
<button class="nav-link active" id="tab-ranking" data-bs-toggle="tab" data-bs-target="#pane-ranking" type="button" role="tab" aria-controls="pane-ranking" aria-selected="true">
|
||
Classement
|
||
</button>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<button class="nav-link" id="tab-winners" data-bs-toggle="tab" data-bs-target="#pane-winners" type="button" role="tab" aria-controls="pane-winners" aria-selected="false">
|
||
Gagnants
|
||
</button>
|
||
</li>
|
||
<li class="nav-item" role="presentation">
|
||
<button class="nav-link" id="tab-completion" data-bs-toggle="tab" data-bs-target="#pane-completion" type="button" role="tab" aria-controls="pane-completion" aria-selected="false">
|
||
100%
|
||
</button>
|
||
</li>
|
||
</ul>
|
||
|
||
<div class="tab-content stats-tab-panel" id="statsTabsContent">
|
||
<!-- Ranking tab -->
|
||
<div class="tab-pane fade show active" id="pane-ranking" role="tabpanel" aria-labelledby="tab-ranking" tabindex="0">
|
||
<div id="stats-error" class="alert alert-danger d-none" role="alert"></div>
|
||
|
||
<!-- Spinner shown while loading -->
|
||
<div id="loading-spinner" class="d-flex justify-content-center align-items-center my-5" aria-live="polite" aria-busy="true">
|
||
<div class="spinner-border text-secondary" role="status" aria-label="Chargement">
|
||
<span class="visually-hidden">Chargement...</span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Table for users and movies watched -->
|
||
<table class="table table-striped table-hover align-middle user-table d-none">
|
||
<thead>
|
||
<tr>
|
||
<th scope="col">Nom</th>
|
||
<th scope="col">Total des films regardés (pts)</th>
|
||
<th scope="col">Ratio</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="user-table-body">
|
||
<!-- User rows will be inserted here -->
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- Winners tab -->
|
||
<div class="tab-pane fade" id="pane-winners" role="tabpanel" aria-labelledby="tab-winners" tabindex="0">
|
||
<h4 class="mb-2">Gagnants</h4>
|
||
<div class="table-responsive mb-4">
|
||
<table class="table table-sm table-striped align-middle mb-0">
|
||
<thead>
|
||
<tr>
|
||
<th scope="col" style="width: 110px;">Année</th>
|
||
<th scope="col">Gagnant(s)</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="winners-table-body">
|
||
<tr>
|
||
<td colspan="2" class="text-center py-4" aria-live="polite" aria-busy="true">
|
||
<div class="d-inline-flex align-items-center gap-2">
|
||
<div class="spinner-border text-secondary" role="status" aria-label="Chargement">
|
||
<span class="visually-hidden">Chargement...</span>
|
||
</div>
|
||
<span class="text-muted">Chargement…</span>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 100% completers tab -->
|
||
<div class="tab-pane fade" id="pane-completion" role="tabpanel" aria-labelledby="tab-completion" tabindex="0">
|
||
<h4 class="mb-2">Utilisateurs ayant terminé 100% (par année)</h4>
|
||
<div class="text-muted mb-2">Completion = 100% pour l’année (tous les films de l’année vus).</div>
|
||
<div class="table-responsive mb-4">
|
||
<table class="table table-sm table-striped align-middle mb-0">
|
||
<thead>
|
||
<tr>
|
||
<th scope="col" style="width: 110px;">Année</th>
|
||
<th scope="col" style="width: 140px;">Finisseur(s)</th>
|
||
<th scope="col" style="width: 140px;">Total films</th>
|
||
<th scope="col">Noms</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="completers-table-body">
|
||
<tr>
|
||
<td colspan="4" class="text-center py-4" aria-live="polite" aria-busy="true">
|
||
<div class="d-inline-flex align-items-center gap-2">
|
||
<div class="spinner-border text-secondary" role="status" aria-label="Chargement">
|
||
<span class="visually-hidden">Chargement...</span>
|
||
</div>
|
||
<span class="text-muted">Chargement…</span>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Modal for displaying movies watched -->
|
||
<div class="modal fade" id="moviesModal" tabindex="-1" aria-labelledby="moviesModalLabel" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="moviesModalLabel">Films regardés</h5>
|
||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<ul id="movie-list" class="list-group">
|
||
<!-- Movie titles will be inserted here -->
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
||
<script src="./js/app_user-stat.js"></script>
|
||
|
||
</body>
|
||
</html> |