Newer
Older
teacher-diary / src / main / resources / templates / schedule / view.html
<!DOCTYPE html>
<html lang="ru" xmlns:th="http://www.thymeleaf.org"
      th:replace="~{layout/main :: html(pageTitle='Занятие', activeMenu='schedule', content=~{::content}, scripts=~{})}">
<body>
<th:block th:fragment="content">
    <div th:if="${success}" class="alert alert-success" th:text="${success}"></div>

    <div class="row">
        <div class="col-lg-8">
            <!-- Информация о занятии -->
            <div class="card mb-4">
                <div class="card-header d-flex justify-content-between align-items-center">
                    <div>
                        <span class="badge me-2"
                              th:classappend="${lesson.status.name() == 'COMPLETED'} ? 'bg-success' : (${lesson.status.name() == 'CANCELLED'} ? 'bg-danger' : 'bg-warning')"
                              th:text="${lesson.status.name() == 'COMPLETED'} ? 'Проведено' : (${lesson.status.name() == 'CANCELLED'} ? 'Отменено' : 'Запланировано')"></span>
                        <span class="text-muted" th:text="${#temporals.format(lesson.date, 'd MMMM yyyy, EEEE')}"></span>
                    </div>
                    <a th:href="@{/schedule/{id}/edit(id=${lesson.id})}" class="btn btn-sm btn-outline-primary">
                        <i class="bi bi-pencil"></i> Редактировать
                    </a>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Группа</label>
                            <p class="mb-0">
                                <a th:href="@{/groups/{id}(id=${lesson.group.id})}" th:text="${lesson.group.name}"></a>
                            </p>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Предмет</label>
                            <p class="mb-0">
                                <span class="badge bg-primary" th:text="${lesson.group.subject?.name ?: '—'}"></span>
                            </p>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Время</label>
                            <p class="mb-0 fw-medium" th:text="${#temporals.format(lesson.startTime, 'HH:mm')} + ' — ' + ${#temporals.format(lesson.endTime, 'HH:mm')}"></p>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Учеников в группе</label>
                            <p class="mb-0" th:text="${lesson.group.students.size()}"></p>
                        </div>
                    </div>

                    <div th:if="${lesson.topic}" class="mb-3">
                        <label class="text-muted small">Тема занятия</label>
                        <p class="mb-0" th:text="${lesson.topic}"></p>
                    </div>

                    <div th:if="${lesson.homework}" class="mb-3">
                        <label class="text-muted small">Домашнее задание</label>
                        <p class="mb-0" th:text="${lesson.homework}"></p>
                    </div>

                    <div th:if="${lesson.notes}">
                        <label class="text-muted small">Заметки</label>
                        <p class="mb-0" th:text="${lesson.notes}"></p>
                    </div>
                </div>
            </div>

            <!-- Ученики группы -->
            <div class="card">
                <div class="card-header">
                    <h6 class="mb-0">Ученики</h6>
                </div>
                <ul class="list-group list-group-flush" th:if="${!lesson.group.students.isEmpty()}">
                    <li class="list-group-item d-flex justify-content-between align-items-center" th:each="student : ${lesson.group.students}">
                        <a th:href="@{/students/{id}(id=${student.id})}" th:text="${student.fullName}"></a>
                        <small class="text-muted" th:text="${student.phone}"></small>
                    </li>
                </ul>
                <div class="card-body" th:if="${lesson.group.students.isEmpty()}">
                    <p class="text-muted mb-0">В группе нет учеников</p>
                </div>
            </div>
        </div>

        <div class="col-lg-4">
            <!-- Быстрые действия -->
            <div class="card mb-4">
                <div class="card-header">
                    <h6 class="mb-0">Изменить статус</h6>
                </div>
                <div class="card-body d-grid gap-2">
                    <form th:action="@{/schedule/{id}/status(id=${lesson.id})}" method="post" th:if="${lesson.status.name() != 'COMPLETED'}">
                        <input type="hidden" name="status" value="COMPLETED">
                        <button type="submit" class="btn btn-success w-100">
                            <i class="bi bi-check-circle me-1"></i> Отметить проведённым
                        </button>
                    </form>
                    <form th:action="@{/schedule/{id}/status(id=${lesson.id})}" method="post" th:if="${lesson.status.name() != 'CANCELLED'}">
                        <input type="hidden" name="status" value="CANCELLED">
                        <button type="submit" class="btn btn-outline-warning w-100">
                            <i class="bi bi-x-circle me-1"></i> Отменить занятие
                        </button>
                    </form>
                    <form th:action="@{/schedule/{id}/status(id=${lesson.id})}" method="post" th:if="${lesson.status.name() != 'SCHEDULED'}">
                        <input type="hidden" name="status" value="SCHEDULED">
                        <button type="submit" class="btn btn-outline-secondary w-100">
                            <i class="bi bi-arrow-counterclockwise me-1"></i> Вернуть в запланированные
                        </button>
                    </form>
                </div>
            </div>

            <!-- Удаление -->
            <div class="card border-danger">
                <div class="card-body">
                    <h6 class="text-danger">Удалить занятие</h6>
                    <p class="small text-muted mb-3">Это действие нельзя отменить</p>
                    <form th:action="@{/schedule/{id}/delete(id=${lesson.id})}" method="post">
                        <button type="submit" class="btn btn-danger w-100" onclick="return confirm('Удалить занятие?')">
                            <i class="bi bi-trash me-1"></i> Удалить
                        </button>
                    </form>
                </div>
            </div>
        </div>
    </div>
</th:block>
</body>
</html>