171 lines
7.0 KiB
HTML
171 lines
7.0 KiB
HTML
<!doctype html>
|
||
<html lang="fr">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<link rel="stylesheet" href="/static/style.css" />
|
||
<title>Mes Notes - EduGrade</title>
|
||
</head>
|
||
<body>
|
||
<div class="dashboard-wrapper">
|
||
<nav class="navbar">
|
||
<div class="nav-brand">
|
||
<svg
|
||
width="35"
|
||
height="35"
|
||
viewBox="0 0 60 60"
|
||
fill="none"
|
||
xmlns="http://www.w3.org/2000/svg"
|
||
>
|
||
<rect
|
||
width="60"
|
||
height="60"
|
||
rx="15"
|
||
fill="white"
|
||
fill-opacity="0.2"
|
||
/>
|
||
<path
|
||
d="M30 15L40 25L30 35L20 25L30 15Z"
|
||
fill="white"
|
||
/>
|
||
<path
|
||
d="M30 25L40 35L30 45L20 35L30 25Z"
|
||
fill="white"
|
||
fill-opacity="0.7"
|
||
/>
|
||
</svg>
|
||
<span>EduGrade</span>
|
||
</div>
|
||
<div class="nav-user">
|
||
<span class="user-name"
|
||
>{{ user.prenom }} {{ user.nom }}</span
|
||
>
|
||
<a href="/logout" class="btn-logout">
|
||
<svg
|
||
width="18"
|
||
height="18"
|
||
viewBox="0 0 20 20"
|
||
fill="currentColor"
|
||
>
|
||
<path
|
||
d="M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z"
|
||
/>
|
||
</svg>
|
||
Déconnexion
|
||
</a>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="content-wrapper">
|
||
<div class="page-header">
|
||
<h1>
|
||
<svg
|
||
width="30"
|
||
height="30"
|
||
viewBox="0 0 24 24"
|
||
fill="currentColor"
|
||
>
|
||
<path
|
||
d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z"
|
||
/>
|
||
</svg>
|
||
Mes Notes
|
||
</h1>
|
||
</div>
|
||
|
||
{% if moyennes_ue %}
|
||
<section class="stats-section">
|
||
<h2>Moyennes par UE</h2>
|
||
<div class="stats-grid">
|
||
{% for code, data in moyennes_ue.items() %}
|
||
<div class="stat-card">
|
||
<div class="stat-header">
|
||
<span class="stat-code">{{ code }}</span>
|
||
<span class="stat-badge"
|
||
>{{ data.nb_notes }} note(s)</span
|
||
>
|
||
</div>
|
||
<h3>{{ data.nom }}</h3>
|
||
<div class="stat-moyenne">
|
||
<span class="moyenne-value"
|
||
>{{ data.moyenne }}</span
|
||
>
|
||
<span class="moyenne-max">/20</span>
|
||
</div>
|
||
<div class="progress-bar">
|
||
<div
|
||
class="progress-fill"
|
||
style="width: {{ (data.moyenne / 20 * 100)|round }}%"
|
||
></div>
|
||
</div>
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
</section>
|
||
{% else %}
|
||
<div class="empty-state">
|
||
<svg
|
||
width="80"
|
||
height="80"
|
||
viewBox="0 0 24 24"
|
||
fill="currentColor"
|
||
opacity="0.3"
|
||
>
|
||
<path
|
||
d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z"
|
||
/>
|
||
</svg>
|
||
<h3>Aucune note pour le moment</h3>
|
||
<p>
|
||
Vos notes apparaîtront ici une fois qu'elles seront
|
||
saisies
|
||
</p>
|
||
</div>
|
||
{% endif %} {% if notes %}
|
||
<section class="details-section">
|
||
<h2>Détail des notes</h2>
|
||
<div class="table-container">
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>UE</th>
|
||
<th>Matière</th>
|
||
<th>Coefficient</th>
|
||
<th>Note</th>
|
||
<th>Date</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for note in notes %}
|
||
<tr>
|
||
<td>
|
||
<span class="badge-ue"
|
||
>{{ note.ue_code }}</span
|
||
>
|
||
</td>
|
||
<td><strong>{{ note.matiere }}</strong></td>
|
||
<td>
|
||
<span class="coef-badge"
|
||
>×{{ note.coefficient }}</span
|
||
>
|
||
</td>
|
||
<td>
|
||
<span
|
||
class="note-value {% if note.note >= 10 %}note-success{% else %}note-danger{% endif %}"
|
||
>
|
||
{{ note.note }}/20
|
||
</span>
|
||
</td>
|
||
<td class="date-cell">{{ note.date }}</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|