fix: Quiz timer (#25983)
* fix: quiz timer
* fix: pass time bound parameter
* fix: sider
diff --git a/erpnext/education/doctype/course_enrollment/course_enrollment.py b/erpnext/education/doctype/course_enrollment/course_enrollment.py
index 2b3acf1..ce88990 100644
--- a/erpnext/education/doctype/course_enrollment/course_enrollment.py
+++ b/erpnext/education/doctype/course_enrollment/course_enrollment.py
@@ -91,4 +91,4 @@
if activity:
return activity[0].name
else:
- return None
\ No newline at end of file
+ return None
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index 8f51fef..819106b 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -219,7 +219,6 @@
try:
quiz = frappe.get_doc("Quiz", quiz_name)
questions = quiz.get_questions()
- duration = quiz.duration
except:
frappe.throw(_("Quiz {0} does not exist").format(quiz_name), frappe.DoesNotExistError)
return None
@@ -236,15 +235,17 @@
return {
'questions': questions,
'activity': None,
- 'duration':duration
+ 'is_time_bound': quiz.is_time_bound,
+ 'duration':quiz.duration
}
student = get_current_student()
course_enrollment = get_enrollment("course", course, student.name)
status, score, result, time_taken = check_quiz_completion(quiz, course_enrollment)
return {
- 'questions': questions,
+ 'questions': questions,
'activity': {'is_complete': status, 'score': score, 'result': result, 'time_taken': time_taken},
+ 'is_time_bound': quiz.is_time_bound,
'duration': quiz.duration
}
@@ -372,9 +373,9 @@
def check_quiz_completion(quiz, enrollment_name):
attempts = frappe.get_all("Quiz Activity",
filters={
- 'enrollment': enrollment_name,
+ 'enrollment': enrollment_name,
'quiz': quiz.name
- },
+ },
fields=["name", "activity_date", "score", "status", "time_taken"]
)
status = False if quiz.max_attempts == 0 else bool(len(attempts) >= quiz.max_attempts)
@@ -389,4 +390,4 @@
time_taken = attempts[0]['time_taken']
if result == 'Pass':
status = True
- return status, score, result, time_taken
\ No newline at end of file
+ return status, score, result, time_taken
diff --git a/erpnext/public/js/education/lms/quiz.js b/erpnext/public/js/education/lms/quiz.js
index 5683f73..66160a7 100644
--- a/erpnext/public/js/education/lms/quiz.js
+++ b/erpnext/public/js/education/lms/quiz.js
@@ -20,10 +20,8 @@
}
make(data) {
- if (data.duration) {
- const timer_display = document.createElement("div");
- timer_display.classList.add("lms-timer", "float-right", "font-weight-bold");
- document.getElementsByClassName("lms-title")[0].appendChild(timer_display);
+ if (data.is_time_bound) {
+ $(".lms-timer").removeClass("hide");
if (!data.activity || (data.activity && !data.activity.is_complete)) {
this.initialiseTimer(data.duration);
this.is_time_bound = true;
@@ -237,4 +235,4 @@
this.options = option_list
this.wrapper.appendChild(options_wrapper)
}
-}
\ No newline at end of file
+}
diff --git a/erpnext/www/lms/content.html b/erpnext/www/lms/content.html
index 15afb09..d22ef66 100644
--- a/erpnext/www/lms/content.html
+++ b/erpnext/www/lms/content.html
@@ -64,6 +64,7 @@
</div>
<div class="lms-title">
<h2>{{ content.name }} <span class="small text-muted">({{ position + 1 }}/{{length}})</span></h2>
+ <div class="lms-timer float-right fond-weight-bold hide"></div>
</div>
{% endmacro %}