Skip to content

Commit 5134179

Browse files
committed
Allow unselecting choice on second click
1 parent 3c8e385 commit 5134179

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

lms/static/checker.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
function trackFinished(exerciseId, solutionId, element) {
22
element.addEventListener('click', () => {
33
const assessment = document.querySelector('input[name="assessment"]:checked');
4-
const assessmentValue = assessment.value;
4+
const assessmentValue = (assessment !== null) ? assessment.value : null;
55
const xhr = new XMLHttpRequest();
66
xhr.open('POST', `/checked/${exerciseId}/${solutionId}`, true);
77
xhr.setRequestHeader('Content-Type', 'application/json');
@@ -26,6 +26,23 @@ function trackFinished(exerciseId, solutionId, element) {
2626
});
2727
}
2828

29+
function trackAssessmentButtons() {
30+
assessmentGroup = document.getElementById('solution-assessment');
31+
assessmentElements = document.querySelectorAll('input[name="assessment"]');
32+
Array.from(assessmentElements).forEach((item) => {
33+
item.addEventListener('click', () => {
34+
if (item.value == assessmentGroup.dataset.checkedid) {
35+
item.removeAttribute('checked');
36+
item.checked = false;
37+
assessmentGroup.dataset.checkedid = 'None';
38+
} else {
39+
assessmentGroup.dataset.checkedid = item.value;
40+
}
41+
}, true);
42+
});
43+
}
44+
2945
window.addEventListener('lines-numbered', () => {
3046
trackFinished(window.exerciseId, window.solutionId, document.getElementById('save-check'));
47+
trackAssessmentButtons();
3148
});

lms/templates/view.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ <h5 class="test-name">
110110
<div id="popular-comments">
111111
<div id="exercise-assessment" class="{{ direction }}">
112112
<h2>{{ _('Assessment') }}</h2>
113-
<div class="btn-group-vertical" id="solution-assessment" role="group" aria-label="assessments radio toggle button group">
113+
<div class="btn-group-vertical" id="solution-assessment" role="group" aria-label="assessments radio toggle button group" data-checkedid="{{ solution.assessment.id }}">
114114
{% for assessment in assessments %}
115-
<input type="radio" class="btn-check" name="assessment" id="btnradio{{ loop.index }}" autocomplete="off" value="{{ assessment.id }}"{% if solution.assessment.name == assessment.name or loop.first %} checked{% endif %}>
115+
<input type="radio" class="btn-check" name="assessment" id="btnradio{{ loop.index }}" autocomplete="off" value="{{ assessment.id }}"{% if solution.assessment.name == assessment.name %} checked{% endif %}>
116116
<label class="btn btn-outline" style="--color: {{ assessment.color }}; --active-color: {{ assessment.active_color }};" for="btnradio{{ loop.index }}">
117117
{% if assessment.icon %}
118118
<i class="fa fa-{{ assessment.icon }}"> </i>

0 commit comments

Comments
 (0)