Fausto Busuito
commited on
Commit
•
90e32d4
1
Parent(s):
69a841f
Application changes
Browse files- app/static/script.js +82 -8
- app/static/style.css +31 -0
app/static/script.js
CHANGED
@@ -91,18 +91,92 @@ document.getElementById('prev').addEventListener('click', () => {
|
|
91 |
displayQuestion();
|
92 |
});
|
93 |
|
94 |
-
document.getElementById('end-session').addEventListener('click',
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
});
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
document.getElementById('quiz-container').style.display = 'none';
|
102 |
-
|
103 |
-
document.getElementById('score').innerText = `Your score: ${result.score.toFixed(2)}%`;
|
104 |
});
|
105 |
|
|
|
106 |
document.getElementById('restart').addEventListener('click', () => {
|
107 |
document.getElementById('results-container').style.display = 'none';
|
108 |
document.getElementById('file-selection').style.display = 'block';
|
|
|
91 |
displayQuestion();
|
92 |
});
|
93 |
|
94 |
+
document.getElementById('end-session').addEventListener('click', () => {
|
95 |
+
let correctCount = 0;
|
96 |
+
|
97 |
+
const resultsTable = document.createElement('table');
|
98 |
+
resultsTable.style.width = '100%';
|
99 |
+
resultsTable.style.borderCollapse = 'collapse';
|
100 |
+
|
101 |
+
// Crea l'intestazione della tabella
|
102 |
+
const headerRow = document.createElement('tr');
|
103 |
+
['Question', 'Your Answer', 'Correct Answer', 'Status'].forEach(header => {
|
104 |
+
const th = document.createElement('th');
|
105 |
+
th.innerText = header;
|
106 |
+
th.style.border = '1px solid #ddd';
|
107 |
+
th.style.padding = '10px';
|
108 |
+
th.style.backgroundColor = '#f4f4f4';
|
109 |
+
headerRow.appendChild(th);
|
110 |
});
|
111 |
+
resultsTable.appendChild(headerRow);
|
112 |
+
|
113 |
+
questions.forEach((question, index) => {
|
114 |
+
const row = document.createElement('tr');
|
115 |
+
|
116 |
+
// Colonna domanda
|
117 |
+
const questionCell = document.createElement('td');
|
118 |
+
questionCell.innerText = question.question;
|
119 |
+
questionCell.style.border = '1px solid #ddd';
|
120 |
+
questionCell.style.padding = '10px';
|
121 |
+
row.appendChild(questionCell);
|
122 |
+
|
123 |
+
// Colonna risposta dell'utente
|
124 |
+
const userAnswerCell = document.createElement('td');
|
125 |
+
const userAnswersText = userAnswers[index].length
|
126 |
+
? userAnswers[index].map(ansIndex => question.options[ansIndex]).join(', ')
|
127 |
+
: 'No answer';
|
128 |
+
userAnswerCell.innerText = userAnswersText;
|
129 |
+
userAnswerCell.style.border = '1px solid #ddd';
|
130 |
+
userAnswerCell.style.padding = '10px';
|
131 |
+
row.appendChild(userAnswerCell);
|
132 |
+
|
133 |
+
// Colonna risposta corretta
|
134 |
+
const correctAnswerCell = document.createElement('td');
|
135 |
+
const correctAnswersText = question.correct.map(ansIndex => question.options[ansIndex]).join(', ');
|
136 |
+
correctAnswerCell.innerText = correctAnswersText;
|
137 |
+
correctAnswerCell.style.border = '1px solid #ddd';
|
138 |
+
correctAnswerCell.style.padding = '10px';
|
139 |
+
correctAnswerCell.style.backgroundColor = '#d4edda'; // Verde chiaro per evidenziare la risposta corretta
|
140 |
+
row.appendChild(correctAnswerCell);
|
141 |
+
|
142 |
+
// Colonna stato
|
143 |
+
const statusCell = document.createElement('td');
|
144 |
+
if (userAnswers[index].length === 0) {
|
145 |
+
statusCell.innerText = 'Not answered';
|
146 |
+
statusCell.style.color = 'orange';
|
147 |
+
} else if (
|
148 |
+
JSON.stringify(userAnswers[index].sort()) === JSON.stringify(question.correct.sort())
|
149 |
+
) {
|
150 |
+
statusCell.innerText = 'Correct';
|
151 |
+
statusCell.style.color = 'green';
|
152 |
+
correctCount++;
|
153 |
+
} else {
|
154 |
+
statusCell.innerText = 'Incorrect';
|
155 |
+
statusCell.style.color = 'red';
|
156 |
+
}
|
157 |
+
statusCell.style.border = '1px solid #ddd';
|
158 |
+
statusCell.style.padding = '10px';
|
159 |
+
row.appendChild(statusCell);
|
160 |
+
|
161 |
+
resultsTable.appendChild(row);
|
162 |
+
});
|
163 |
+
|
164 |
+
// Calcola lo score
|
165 |
+
const score = (correctCount / questions.length) * 100;
|
166 |
+
|
167 |
+
// Mostra il punteggio
|
168 |
+
document.getElementById('score').innerText = `Your score: ${score.toFixed(2)}%`;
|
169 |
+
|
170 |
+
// Aggiungi la tabella ai risultati
|
171 |
+
const resultsContainer = document.getElementById('results-container');
|
172 |
+
resultsContainer.appendChild(resultsTable);
|
173 |
+
|
174 |
+
// Mostra il contenitore dei risultati e nascondi il quiz
|
175 |
document.getElementById('quiz-container').style.display = 'none';
|
176 |
+
resultsContainer.style.display = 'block';
|
|
|
177 |
});
|
178 |
|
179 |
+
|
180 |
document.getElementById('restart').addEventListener('click', () => {
|
181 |
document.getElementById('results-container').style.display = 'none';
|
182 |
document.getElementById('file-selection').style.display = 'block';
|
app/static/style.css
CHANGED
@@ -79,3 +79,34 @@ button#restart {
|
|
79 |
button#restart:hover {
|
80 |
background-color: #218838;
|
81 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
button#restart:hover {
|
80 |
background-color: #218838;
|
81 |
}
|
82 |
+
|
83 |
+
table {
|
84 |
+
width: 100%;
|
85 |
+
border-collapse: collapse;
|
86 |
+
margin-top: 20px;
|
87 |
+
}
|
88 |
+
|
89 |
+
th, td {
|
90 |
+
border: 1px solid #ddd;
|
91 |
+
padding: 10px;
|
92 |
+
text-align: left;
|
93 |
+
}
|
94 |
+
|
95 |
+
th {
|
96 |
+
background-color: #f4f4f4;
|
97 |
+
}
|
98 |
+
|
99 |
+
td.correct {
|
100 |
+
background-color: #d4edda;
|
101 |
+
color: #155724;
|
102 |
+
}
|
103 |
+
|
104 |
+
td.incorrect {
|
105 |
+
background-color: #f8d7da;
|
106 |
+
color: #721c24;
|
107 |
+
}
|
108 |
+
|
109 |
+
td.not-answered {
|
110 |
+
background-color: #fff3cd;
|
111 |
+
color: #856404;
|
112 |
+
}
|