49 lines
3.0 KiB
HTML
49 lines
3.0 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 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>
|
|
</div>
|
|
</div>
|
|
<div th:if="${#lists.isEmpty(cards)}" class="card card-body text-muted">Лабораторных пока нет.</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|