let subtitle = new SplitType(".score-text .subtitle", {types: 'words, chars'})
gsap.to(".active-screen #progress-circle", {drawSVG: 0, duration: 0})
- gsap.timeline({delay: .4})
- .to(".active-screen .title-header", {
+ let tl = gsap.timeline({delay: .4})
+
+ tl.to(".active-screen .title-header", {
y: 0
})
.to(".active-screen footer", {
.to("#progress-counter", {
scale: 1,
})
- .to(".active-screen #progress-circle", {
- drawSVG: percent+"%",
+ tl.to(".active-screen #progress-circle", {
+ drawSVG: percent + "%",
duration: 1.5,
ease: "power4.easeOut"
}, ">-0.5")
- .to(".score-text", {
- scale: 1,
- },1.3)
+ tl.to(".score-text", {
+ scale: 1,
+ }, 1.3)
.from("#score-counter", {
innerText: 0,
duration: 1.85,
show: function () {
const $this = this
+ let maxScore = this.quiz.score.maxScore,score = this.quiz.score.score
+ let nok = {title: this.quiz.l10n.__("Ooops!"),text: this.quiz.l10n.__("Unfortunately, you did not get enough correct answers (:score out of :maxScore).", {'score':score,'maxScore':maxScore})+" "+this.quiz.l10n.__("Please go back and review the content before retaking the quiz.")}
+ let ok = {title: this.quiz.l10n.__("Congratulation!"),text: this.quiz.l10n.__("You have completed the quiz with :score correct answers out of :maxScore", {'score':score,'maxScore':maxScore})}
+ let counter = $("#container-score")
+ let percent = (score/maxScore) * 100
+
+ if (quiz.score.isPassed()===false) {
+ this.displayResultContent(nok,"nok",counter)
+ } else {
+ this.displayResultContent(ok,"ok",counter)
+ }
- let maxScore = this.quiz.score.maxScore,
- score = this.quiz.score.score
-
- let status = this.quiz.score.questionStatus
- let reviewList = this.quiz.question.getAll();
-
- let absPath = window.location.href
+ //
+ setTimeout(function() {
+ return $this.animeConfetti()
+ }, 2500)
- const counter = $("#progress-counter")
+ $("[id^=score-]").text(score)
+ $("[id^=maxScore-]").text(maxScore)
- //
+ this.animate(score,percent)
+ this.displayReviewList()
this.checkScorm()
+ },
- if (score < (maxScore / 2)) {
- counter.addClass("nok")
- } else if (score >= (maxScore / 2)) {
- counter.addClass("ok")
+ animeConfetti: function() {
+ this.quiz.animations.load("CONFETTI", "#anime-result", '', false);
+ },
- setTimeout(function() {
- return $this.animationOk()
- }, 2700)
+ checkScorm: function() {
+ const $this = this
+ if (this.quiz.scorm.enabled === true) {
+ $(document).on("click", "#leave-quiz", function () {
+ $this.quiz.scorm.quit()
+ })
+ } else {
+ $("#leave-quiz").hide()
}
+ },
- const percent = (score/maxScore) * 100
+ displayResultContent: function(result,status,counter) {
+ $(".score-text h1").text(result.title)
+ $(".score-text p").text(result.text)
+ counter.addClass(status)
+ },
- $("[id^=score-]").text(score)
- this.animate(score,percent)
+ displayReviewList: function() {
+ let $ul = $("#answers-list")
+ let reviewList = this.quiz.question.getAll();
+ let status = this.quiz.score.questionStatus
reviewList = reviewList.map((c, i) => {
return {
'status': status[i].ok
}
})
- let $ul = $("#answers-list")
-
- //$("[id^=score-]").text(score)
- $("[id^=maxScore-]").text(maxScore)
//
// HANDLEBARS TEMPLATING
// mise en place de la scrollbar personnalisé
// https://github.com/Grsmto/simplebar/tree/master/packages/simplebar
const simpleBar = new SimpleBar($ul.get(0))
- },
-
- animationOk: function() {
- this.quiz.animations.load("CONFETTI", "#anime-ok", '', false);
- },
-
- checkScorm: function() {
- const $this = this
- if (this.quiz.scorm.enabled === true) {
- $(document).on("click", "#leave-quiz", function () {
- $this.quiz.scorm.quit()
- })
- } else {
- $("#leave-quiz").hide()
- }
}
};