diff --git a/frontend/src/components/CourseCardOverlay.vue b/frontend/src/components/CourseCardOverlay.vue index b70b6f25..9f3b87fc 100644 --- a/frontend/src/components/CourseCardOverlay.vue +++ b/frontend/src/components/CourseCardOverlay.vue @@ -88,10 +88,15 @@ {{ __('Get Certificate') }} - \ No newline at end of file + diff --git a/lms/lms/api.py b/lms/lms/api.py index 996b6a70..d12dc507 100644 --- a/lms/lms/api.py +++ b/lms/lms/api.py @@ -1593,11 +1593,16 @@ def track_new_watch_time(lesson, video): doc.member = frappe.session.user doc.save() + @frappe.whitelist() def get_course_progress_distribution(course): - all_progress = frappe.get_all("LMS Enrollment", { - "course": course, - }, pluck="progress") + all_progress = frappe.get_all( + "LMS Enrollment", + { + "course": course, + }, + pluck="progress", + ) average_progress = get_average_course_progress(all_progress) progress_distribution = get_progress_distribution(all_progress) @@ -1614,22 +1619,29 @@ def get_average_course_progress(progress_list): average_progress = sum(progress_list) / len(progress_list) return flt(average_progress, frappe.get_system_settings("float_precision") or 3) -def get_progress_distribution(progressList): - distribution = [{ - "category": "0-20%", - "count": len([p for p in progressList if 0 <= p < 20]), - }, { - "category": "20-40%", - "count": len([p for p in progressList if 20 <= p < 40]), - }, { - "category": "40-60%", - "count": len([p for p in progressList if 40 <= p < 60]), - }, { - "category": "60-80%", - "count": len([p for p in progressList if 60 <= p < 80]), - }, { - "category": "80-100%", - "count": len([p for p in progressList if 80 <= p <= 100]), - }] - return distribution \ No newline at end of file +def get_progress_distribution(progressList): + distribution = [ + { + "category": "0-20%", + "count": len([p for p in progressList if 0 <= p < 20]), + }, + { + "category": "20-40%", + "count": len([p for p in progressList if 20 <= p < 40]), + }, + { + "category": "40-60%", + "count": len([p for p in progressList if 40 <= p < 60]), + }, + { + "category": "60-80%", + "count": len([p for p in progressList if 60 <= p < 80]), + }, + { + "category": "80-100%", + "count": len([p for p in progressList if 80 <= p <= 100]), + }, + ] + + return distribution