mirror of
https://github.com/MarijnDoeve/TijdVoorDeTest.git
synced 2026-03-05 20:44:19 +01:00
Refactor code for improved readability and consistency; add flash message handling and enhance quiz functionality
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
|
||||
{% block body %}
|
||||
<p>
|
||||
<h2>{{ t('Quiz') }}: {{ quiz.season.name }} - {{ quiz.name }}</h2>
|
||||
<h2>{{ 'Quiz'|trans }}: {{ quiz.season.name }} - {{ quiz.name }}</h2>
|
||||
</p>
|
||||
<div id="questions">
|
||||
<p>
|
||||
<h4>{{ t('Questions') }}</h4>
|
||||
<h4>{{ 'Questions'|trans }}</h4>
|
||||
</p>
|
||||
<div class="accordion">
|
||||
{% for question in quiz.questions %}
|
||||
@@ -17,24 +17,25 @@
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#question-{{ loop.index0 }}"
|
||||
aria-controls="question-{{ loop.index0 }}">
|
||||
{# {% with question_error = question.errors %} #}
|
||||
{# {% if question_error %} #}
|
||||
{# <span data-bs-toggle="tooltip" #}
|
||||
{# title="{{ question_error }}" #}
|
||||
{# class="badge text-bg-danger rounded-pill me-2">!</span> #}
|
||||
{# {% endif %} #}
|
||||
{# {% endwith %} #}
|
||||
{% set questionErrors = question.getErrors %}
|
||||
{% if questionErrors %}
|
||||
<span data-bs-toggle="tooltip"
|
||||
title="{{ questionErrors }}"
|
||||
class="badge text-bg-danger rounded-pill me-2">!</span>
|
||||
{% endif %}
|
||||
{{ loop.index }}. {{ question.question }}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="question-{{ loop.index0 }}"
|
||||
class="accordion-collapse collapse">
|
||||
<div class="accordion-body">
|
||||
{% for answer in question.answers %}
|
||||
<li {% if answer.isRightAnswer %}class="text-decoration-underline"{% endif %}>{{ answer.text }}</li>
|
||||
{% else %}
|
||||
{{ t('There are no answers for this question') }}
|
||||
{% endfor %}
|
||||
<ul>
|
||||
{% for answer in question.answers %}
|
||||
<li {% if answer.isRightAnswer %}class="text-decoration-underline"{% endif %}>{{ answer.text }}</li>
|
||||
{% else %}
|
||||
{{ 'There are no answers for this question'|trans }}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -45,51 +46,54 @@
|
||||
</div>
|
||||
<div class="scores">
|
||||
<p>
|
||||
<h4>{{ t('Score') }}</h4>
|
||||
<h4>{{ 'Score'|trans }}</h4>
|
||||
</p>
|
||||
<div class="btn-toolbar" role="toolbar">
|
||||
<div class="btn-group btn-group-lg me-2">
|
||||
<a class="btn btn-primary">{{ t('Start Elimination') }}</a>
|
||||
<a class="btn btn-primary">{{ 'Start Elimination'|trans }}</a>
|
||||
</div>
|
||||
<div class="btn-group btn-group-lg">
|
||||
<a class="btn btn-secondary">{{ t('Prepare Custom Elimination') }}</a>
|
||||
<a class="btn btn-secondary">{{ t('Load Prepared Elimination') }}</a>
|
||||
<a class="btn btn-secondary">{{ 'Prepare Custom Elimination'|trans }}</a>
|
||||
<a class="btn btn-secondary">{{ 'Load Prepared Elimination'|trans }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<p>{{ t('Number of dropouts:') }} {{ quiz.dropouts }} </p>
|
||||
<p>{{ 'Number of dropouts:'|trans }} {{ quiz.dropouts }} </p>
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{{ t('Candidate') }}</th>
|
||||
<th scope="col">{{ t('Correct Answers') }}</th>
|
||||
<th scope="col">{{ t('Corrections') }}</th>
|
||||
<th scope="col">{{ t('Score') }}</th>
|
||||
<th scope="col">{{ t('Time') }}</th>
|
||||
<th scope="col">{{ 'Candidate'|trans }}</th>
|
||||
<th scope="col">{{ 'Correct Answers'|trans }}</th>
|
||||
<th scope="col">{{ 'Corrections'|trans }}</th>
|
||||
<th scope="col">{{ 'Score'|trans }}</th>
|
||||
<th scope="col">{{ 'Time'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{# {% with result = quiz.get_score %} #}
|
||||
{# {% for candidate in result %} #}
|
||||
{# <tr class="table-{% if forloop.revcounter > quiz.dropouts %}success{% else %}danger{% endif %}"> #}
|
||||
{# <td>{{ candidate.name }}</td> #}
|
||||
{# <td>{{ candidate.correct }}</td> #}
|
||||
{# <td>{{ candidate.corrections }}</td> #}
|
||||
{# <td>{{ candidate.score }}</td> #}
|
||||
{# <td>{{ candidate.time }}</td> #}
|
||||
{# </tr> #}
|
||||
{# {% empty %} #}
|
||||
{# {% endfor %} #}
|
||||
{% for candidate in result %}
|
||||
<tr class="table-{% if loop.revindex > quiz.dropouts %}success{% else %}danger{% endif %}">
|
||||
<td>{{ candidate.0.name }}</td>
|
||||
<td>{{ candidate.correct|default('0') }}</td>
|
||||
<td>{{ candidate.corrections|default('0') }}</td>
|
||||
<td>{{ candidate.score|default('x') }}</td>
|
||||
<td>{{ candidate.time }}</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="5">{{ 'No results'|trans }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{# {% endwith %} #}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block script %}
|
||||
{% block javascripts %}
|
||||
<script>
|
||||
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
|
||||
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
|
||||
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
|
||||
});
|
||||
</script>
|
||||
{% endblock script %}
|
||||
{% endblock javascripts %}
|
||||
{% block title %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user