function QuizScore(quiz) {
this.quiz = quiz;
this.logQuestions = [];
+ // Le score global du quiz
this.score = 0;
this.questionStatus = [];
this.answers = [];
this.lastAnsweredQuestion = questionIndex;
this.answers[questionIndex] = answers;
this.updateScore();
- return this.questionStatus
},
checkQuestion: function (questionIndex) {
'count': count,
};
- let answersStatus=[];
+ let answersStatus = [];
+ let userAnswers = this.answers[questionIndex];
- if (question.multiple) {
+ 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';
+ } 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;
log.answer = a;
ok = null;
}
- this.questionStatus[questionIndex] = {'status':ok,'answers':answersStatus};
+ this.questionStatus[questionIndex] = {'status': ok, 'answers': answersStatus};
if (ok && count) {
this.score++;