this.lastAnsweredQuestion = questionIndex;
this.answers[questionIndex] = answers;
this.updateScore();
+ return {ok: this.questionStatus[questionIndex].ok, status: this.questionStatus};
},
checkQuestion: function (questionIndex) {
let answersStatus = [];
let userAnswers = this.answers[questionIndex];
-
- let $this = this;
- if (question.type === 'multiple') {
- // Le score de la question
- let min_score = this.getMinScore(question);
- let this_score = 0;
- $.each(question.answers, function (answerIndex, answer) {
- let checkedByUser = userAnswers.indexOf(answerIndex) >= 0;
- if (answer.correct === 1) {
- if (checkedByUser) {
- // C'est une bonne réponse et elle a été cochée par l'utilisateur
- this_score += answer.score;
- answersStatus[answerIndex] = 'ok';
- } else {
- // C'est une bonne réponse mais elle n'a pas été cochée par l'utilisateur
- answersStatus[answerIndex] = 'missed';
- }
- } else {
- if (checkedByUser) {
- // C'est une mauvaise réponse et elle a été cochée par l'utilisateur
- this_score -= answer.score;
- answersStatus[answerIndex] = 'nok';
+ if (userAnswers === undefined || userAnswers === null) {
+ ok = null;
+ } else {
+ let $this = this;
+ if (question.type === 'multiple') {
+ // Le score de la question
+ let min_score = this.getMinScore(question);
+ let this_score = 0;
+ for (const answerIndex in question.answers) {
+ const answer = question.answers[answerIndex];
+ let checkedByUser = userAnswers.indexOf(answerIndex) >= 0;
+ if (answer.correct === 1) {
+ if (checkedByUser) {
+ // C'est une bonne réponse et elle a été cochée par l'utilisateur
+ this_score += answer.score;
+ answersStatus[answerIndex] = 'ok';
+ } else {
+ // C'est une bonne réponse mais elle n'a pas été cochée par l'utilisateur
+ answersStatus[answerIndex] = 'missed';
+ }
} else {
- // C'est une bonne réponse et elle n'a pas été cochée par l'utilisateur
- answersStatus[answerIndex] = 'neutral';
+ if (checkedByUser) {
+ // C'est une mauvaise réponse et elle a été cochée par l'utilisateur
+ this_score -= answer.score;
+ answersStatus[answerIndex] = 'nok';
+
+ } else {
+ // C'est une bonne réponse et elle n'a pas été cochée par l'utilisateur
+ answersStatus[answerIndex] = 'neutral';
+ }
}
}
- });
- ok = this_score >= min_score;
+ ok = this_score >= min_score;
- log.answer = a;
- } else {
- log.answer = $(this).find('input,textarea,select').val();
- }
+ log.answer = a;
+ } else {
+ log.answer = $(this).find('input,textarea,select').val();
+ }
- if (!count) {
- ok = null;
+ if (!count) {
+ ok = null;
+ }
}
this.questionStatus[questionIndex] = {'status': ok, 'answers': answersStatus};
let min_score = parseInt(question.min_score);
if (min_score === 0) {
min_score = 0;
- $.each(question.answers, function (answerIndex, answer) {
+ for (const answerIndex in question.answers) {
+ let answer = question.answers[answerIndex];
if (answer.correct) {
min_score += answer.score;
}
- });
+ }
}
return min_score;
},
this.score = 0;
this.logQuestions = [];
- let $this = this;
-
- $.each(this.quiz.questions, function (qn, question) {
- $this.checkQuestion(qn);
- });
+ for (const qn in this.quiz.questions) {
+ this.checkQuestion(qn);
+ }
let state = {
q: this.lastAnsweredQuestion + 1, a: this.answers