75 lines
4.3 KiB
HTML
75 lines
4.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru" xmlns:th="http://www.thymeleaf.org" th:replace="~{fragments/base :: layout(~{::title}, ~{::#content})}">
|
|
<head><title>Кабинет студента — LMS</title></head>
|
|
<body>
|
|
<div id="content">
|
|
<h1 class="page-title">Здравствуйте, <span th:text="${currentUser.name}">студент</span></h1>
|
|
|
|
<div class="row row-cols-1 row-cols-sm-2 row-cols-xl-4 g-3">
|
|
<div class="col"><div class="card card-body h-100"><p class="stat-title">Сдано работ</p>
|
|
<p class="stat-value" th:text="${submittedCount}">0</p></div></div>
|
|
<div class="col"><div class="card card-body h-100"><p class="stat-title">Средний балл</p>
|
|
<p class="stat-value" th:if="${average != null}" th:text="${average}">—</p>
|
|
<p class="stat-value text-muted" th:if="${average == null}">—</p></div></div>
|
|
<div class="col"><div class="card card-body h-100"><p class="stat-title">Лучшая оценка</p>
|
|
<p class="stat-value" th:if="${best != null}" th:text="${best.toPlainString()}">—</p>
|
|
<p class="stat-value text-muted" th:if="${best == null}">—</p></div></div>
|
|
<div class="col"><div class="card card-body h-100"><p class="stat-title">Слабое место</p>
|
|
<p class="stat-value" th:if="${worst != null}" th:text="${worst.toPlainString()}">—</p>
|
|
<p class="stat-value text-muted" th:if="${worst == null}">—</p></div></div>
|
|
</div>
|
|
|
|
<div class="flex flex-wrap gap-2 mt-8">
|
|
<a class="btn btn-primary" th:href="@{/student/labs}">Лабораторные</a>
|
|
<a class="btn btn-secondary" th:href="@{/learn}">Учебные материалы</a>
|
|
</div>
|
|
|
|
<h2 class="section-title mt-8">Аттестации</h2>
|
|
<div th:if="${!#lists.isEmpty(attestations)}" class="card card-flush mb-6">
|
|
<table>
|
|
<thead>
|
|
<tr><th>Форма аттестации</th><th>Семестр</th><th>Результат</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr th:each="a : ${attestations}">
|
|
<td th:text="${a.kindLabel}">—</td>
|
|
<td th:text="'Семестр ' + ${a.semester}">—</td>
|
|
<td>
|
|
<span class="badge"
|
|
th:classappend="${a.positive == true} ? 'badge-ok' : (${a.positive == false} ? 'badge-warn' : '')"
|
|
th:text="${a.valueLabel}">—</span>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div th:if="${#lists.isEmpty(attestations)}" class="card card-body text-muted mb-6">
|
|
Аттестаций пока нет. Преподаватель добавит результаты после их выставления.
|
|
</div>
|
|
|
|
<h2 class="section-title mt-8">Мои лабораторные</h2>
|
|
<div class="row row-cols-1 row-cols-lg-2 g-4">
|
|
<div th:each="c : ${cards}" class="col"><div class="card h-100">
|
|
<div class="card-body">
|
|
<h3 class="section-title">
|
|
<a th:href="@{/student/labs/{id}(id=${c.id})}" th:text="|Лабораторная работа ${c.number}|">ЛР</a>
|
|
</h3>
|
|
<p class="text-sm" th:text="${c.title}">—</p>
|
|
<div class="flex flex-wrap gap-2 mt-2 text-sm">
|
|
<span th:if="${c.variantNumber}" class="badge">вариант <span class="font-mono" th:text="${c.variantNumber}"></span></span>
|
|
<span th:if="${c.submissionSeq}" class="badge badge-ok">сдано (попытка <span th:text="${c.submissionSeq}">1</span>)</span>
|
|
<span th:unless="${c.submissionSeq}" class="badge badge-warn">не сдано</span>
|
|
<span th:if="${c.grade}" class="badge badge-ok">оценка: <span th:text="${c.grade}"></span></span>
|
|
</div>
|
|
<div class="mt-2" th:if="${c.courseNo != null}">
|
|
<a class="text-sm" th:href="@{/learn/course/{no}(no=${c.courseNo})}">Учебные материалы курса</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div th:if="${#lists.isEmpty(cards)}" class="card card-body text-muted">Лабораторных пока нет.</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|