feat: add sorting to exam user statuses and improve history log filtering

This commit is contained in:
Ross
2026-06-29 12:23:20 +01:00
parent 1296089607
commit a60982c30a
2 changed files with 33 additions and 23 deletions
+3 -3
View File
@@ -2661,13 +2661,13 @@ class ExamViews(View, LoginRequiredMixin):
pass pass
if cid is not None: if cid is not None:
statuses = exam.exam_user_status.filter(cid_user_exam__cid_user__cid=cid) statuses = exam.exam_user_status.filter(cid_user_exam__cid_user__cid=cid).order_by("datetime")
elif user_id is not None: elif user_id is not None:
statuses = exam.exam_user_status.filter( statuses = exam.exam_user_status.filter(
cid_user_exam__user_user__id=user_id cid_user_exam__user_user__id=user_id
) ).order_by("datetime")
else: else:
statuses = exam.exam_user_status.all() statuses = exam.exam_user_status.all().order_by("datetime")
return render( return render(
request, "exam_user_status.html", {"exam": exam, "statuses": statuses} request, "exam_user_status.html", {"exam": exam, "statuses": statuses}
+25 -15
View File
@@ -1,23 +1,33 @@
<div class="mb-3">
<input type="text" id="history-filter" class="form-control form-control-sm" placeholder="Filter history logs..." onkeyup="filterHistoryLogs()">
</div>
{% if statuses %} {% if statuses %}
<ul> <ul id="history-log-list" class="list-unstyled mb-0">
{% for status in statuses %} {% for status in statuses %}
<li> <li class="history-log-item py-1 border-bottom small">
{% comment %} {{status.datetime|date:"SHORT_DATETIME_FORMAT"}}:
{% if status.user_user %}
{{status.user_user}}
{% endif %}
{% if status.cid_user %}
{{status.cid_user}}
{% endif %}
{{status.status}}
{{status.extra}} {% endcomment %}
{{ status }} {{ status }}
</li> </li>
{% endfor %} {% endfor %}
</ul> </ul>
{% else %} {% else %}
Nil recorded. <div class="text-muted small">Nil recorded.</div>
{% endif %} {% endif %}
<script>
function filterHistoryLogs() {
var input = document.getElementById('history-filter');
var filter = input.value.toLowerCase();
var list = document.getElementById('history-log-list');
if (!list) return;
var items = list.getElementsByClassName('history-log-item');
for (var i = 0; i < items.length; i++) {
var text = items[i].textContent || items[i].innerText;
if (text.toLowerCase().indexOf(filter) > -1) {
items[i].classList.remove("d-none");
} else {
items[i].classList.add("d-none");
}
}
}
</script>