fix: page reload condition

This commit is contained in:
Jannat Patel
2022-05-18 10:47:49 +05:30
parent e465ad58ca
commit af21d33165
3 changed files with 11 additions and 12 deletions

View File

@@ -46,13 +46,14 @@ class LMSQuiz(Document):
@frappe.whitelist() @frappe.whitelist()
def quiz_summary(quiz, results): def quiz_summary(quiz, results):
score = 0 score = 0
results = json.loads(results) results = results and json.loads(results)
for result in results: for result in results:
correct = result["is_correct"][0] correct = result["is_correct"][0]
result["question"] = frappe.db.get_value("LMS Quiz Question", result["question"] = frappe.db.get_value("LMS Quiz Question",
{"parent": quiz, "idx": result["question_index"]}, {"parent": quiz,
["question"]) "idx": result["question_index"]},
["question"])
for point in result["is_correct"]: for point in result["is_correct"]:
correct = correct and point correct = correct and point

View File

@@ -2,7 +2,7 @@
<div class="common-card-style text-center p-5" style="flex-direction: column;"> <div class="common-card-style text-center p-5" style="flex-direction: column;">
<div class="font-weight-bold mb-4" style="font-size: var(--text-lg);">{{ quiz.title }}</div> <div class="font-weight-bold mb-4" style="font-size: var(--text-lg);">{{ quiz.title }}</div>
<div> {{ _("You have already exceeded the maximum number of attempts allowed for this quiz.") }} </div> <div> {{ _("You have already exceeded the maximum number of attempts allowed for this quiz.") }} </div>
<div> {{ _("You latest score is {0}.").format(last_attempt_score) }} </div> <div> {{ _("Your latest score is {0}.").format(last_attempt_score) }} </div>
</div> </div>
{% else %} {% else %}
<div id="quiz-title" class="hide" data-max-attempts="{{ quiz.max_attempts }}">{{ quiz.title }}</div> <div id="quiz-title" class="hide" data-max-attempts="{{ quiz.max_attempts }}">{{ quiz.title }}</div>

View File

@@ -51,11 +51,10 @@ frappe.ready(() => {
mark_active_question(); mark_active_question();
}); });
if ($("#quiz-title").data("max-attempts") && $(".active-question").length) { if ($("#quiz-title").data("max-attempts")) {
window.addEventListener("beforeunload", (e) => { window.addEventListener("beforeunload", (e) => {
e.preventDefault(); e.returnValue = "";
quiz_summary(); $(".active-question").length && quiz_summary();
e.returnValue = '';
}); });
} }
}); });
@@ -169,7 +168,6 @@ const quiz_summary = (e=undefined) => {
e && e.preventDefault(); e && e.preventDefault();
var quiz_name = $("#quiz-title").text(); var quiz_name = $("#quiz-title").text();
var total_questions = $(".question").length; var total_questions = $(".question").length;
frappe.call({ frappe.call({
method: "lms.lms.doctype.lms_quiz.lms_quiz.quiz_summary", method: "lms.lms.doctype.lms_quiz.lms_quiz.quiz_summary",
args: { args: {
@@ -177,12 +175,12 @@ const quiz_summary = (e=undefined) => {
"results": localStorage.getItem(quiz_name) "results": localStorage.getItem(quiz_name)
}, },
callback: (data) => { callback: (data) => {
var message = data.message == total_questions ? "Excellent Work" : "You were almost there." var message = data.message == total_questions ? __("Excellent Work 👏") : __("Better luck next time")
$(".question").addClass("hide"); $(".question").addClass("hide");
$("#summary").addClass("hide"); $("#summary").addClass("hide");
$("#quiz-form").parent().prepend( $("#quiz-form").parent().prepend(
`<div class="text-center summary"><h2>${message} 👏 </h2> `<div class="text-center summary"><h2> ${message} </h2>
<div class="font-weight-bold">${data.message}/${total_questions} correct.</div></div>`); <div class="font-weight-bold">${data.message}/${total_questions}</div></div>`);
$("#try-again").removeClass("hide"); $("#try-again").removeClass("hide");
} }
}) })