From ceeba2edeb3b4c0a4f7d11eec3e66d46aa191866 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 28 Jul 2023 18:11:07 +0200 Subject: [PATCH] wip #6184 @0:25 --- resources/quizv2/js/quiz.score.js | 35 +++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/resources/quizv2/js/quiz.score.js b/resources/quizv2/js/quiz.score.js index b06e28a89..2120abe95 100644 --- a/resources/quizv2/js/quiz.score.js +++ b/resources/quizv2/js/quiz.score.js @@ -3,6 +3,7 @@ const $ = require("cash-dom"); function QuizScore(quiz) { this.quiz = quiz; this.logQuestions = []; + // Le score global du quiz this.score = 0; this.questionStatus = []; this.answers = []; @@ -19,7 +20,6 @@ QuizScore.prototype = { this.lastAnsweredQuestion = questionIndex; this.answers[questionIndex] = answers; this.updateScore(); - return this.questionStatus }, checkQuestion: function (questionIndex) { @@ -32,10 +32,37 @@ QuizScore.prototype = { '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; @@ -47,7 +74,7 @@ QuizScore.prototype = { ok = null; } - this.questionStatus[questionIndex] = {'status':ok,'answers':answersStatus}; + this.questionStatus[questionIndex] = {'status': ok, 'answers': answersStatus}; if (ok && count) { this.score++; -- 2.39.5