fix: match attestation columns to lab result styling

- use the same header order and compact action row as lab columns
- show attestation results as centered text-like selects instead of boxed inputs
- keep column widths and separators aligned with lab columns
- send the selected value with the inline attestation request
This commit is contained in:
2026-10-26 17:30:55 +03:00
parent fb9511280a
commit f5ba21b5f5
4 changed files with 37 additions and 14 deletions

View File

@@ -75,7 +75,12 @@
</th>
<th class="text-center average-col" title="Средний балл по выставленным оценкам">Средний балл</th>
<th th:each="att : ${attestations}" class="text-center attestation-col" data-nosort>
<div class="attestation-head">
<div class="lab-col-head">
<div class="attestation-title">
<span class="attestation-kind" th:text="${att.kindLabel}">Аттестация</span>
<span class="badge badge-warn js-att-hidden" th:hidden="${att.published}">скрыто</span>
</div>
<span class="lab-col-title" th:text="'Семестр ' + ${att.semester}">Семестр 1</span>
<div class="lab-head-actions">
<form class="inline-form js-att-pub-form" method="post"
th:action="@{/admin/groups/{gid}/attestations/{aid}/publication(gid=${group.id}, aid=${att.id})}">
@@ -99,9 +104,6 @@
</button>
</form>
</div>
<span class="attestation-kind" th:text="${att.kindLabel}">Аттестация</span>
<span class="lab-col-title" th:text="'Семестр ' + ${att.semester}">Семестр 1</span>
<span class="badge badge-warn js-att-hidden" th:hidden="${att.published}">скрыто</span>
</div>
</th>
<th data-nosort>Пароль</th>
@@ -162,8 +164,9 @@
<input type="hidden" name="_csrf" th:value="${csrfToken}">
<input type="hidden" name="attestationId" th:value="${att.id}">
<input type="hidden" name="studentId" th:value="${row.studentId}">
<select class="input attestation-select" name="value" data-auto-submit
th:attr="data-student-name=${row.fullName},data-attestation-label=${att.kindLabel}">
<select class="attestation-select" name="value" data-auto-submit
th:classappend="${row.attestations[att.id] == null} ? 'none' : ''"
th:title="${row.fullName} + ' — ' + ${att.kindLabel} + ' (' + 'Семестр ' + ${att.semester} + ')'">
<option value="" th:selected="${row.attestations[att.id] == null}">—</option>
<option th:each="opt : ${att.options}" th:value="${opt.value}" th:text="${opt.label}"
th:selected="${row.attestations[att.id]?.value == opt.value}"></option>
@@ -431,7 +434,7 @@
<div class="dlg-body" id="assign-modal-body"></div>
</dialog>
<script th:src="@{/js/admin-group.js(v='41')}" defer></script>
<script th:src="@{/js/admin-group.js(v='42')}" defer></script>
</div>
</body>
</html>

View File

@@ -17,7 +17,7 @@
<!-- v=37: сброс кэша стилей после изменения геометрии; при изменении css поднимать версию -->
<link rel="stylesheet" th:href="@{/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/bootstrap-icons.min.css}">
<link rel="stylesheet" th:href="@{/css/app.css(v='39')}">
<link rel="stylesheet" th:href="@{/css/app.css(v='41')}">
<link id="hljs-light" rel="stylesheet" th:href="@{/css/hljs-github.css(v='36')}">
<link id="hljs-dark" rel="stylesheet" th:href="@{/css/hljs-github-dark.css(v='36')}" disabled>
<script th:src="@{/js/highlight.min.js(v='36')}" defer></script>