fix: flow UI and quiz progress

This commit is contained in:
Jannat Patel
2023-08-07 21:17:23 +05:30
parent 845b906851
commit 47e254ed9b
11 changed files with 182 additions and 86 deletions

View File

@@ -39,8 +39,8 @@
{% endif %}
<div class="course-details-outline">
{% set from_class = True if class_info else False %}
{{ widgets.CourseOutline(course=course, membership=membership, lesson_page=True, from_class=from_class) }}
{% set classname = class_info.name if class_info else False %}
{{ widgets.CourseOutline(course=course, membership=membership, lesson_page=True, classname=classname) }}
</div>
</div>
<div class="lesson-parent">

View File

@@ -15,7 +15,6 @@ frappe.ready(() => {
!self.marked_as_complete &&
$(".title").hasClass("is-member")
) {
self.marked_as_complete = true;
mark_progress();
}
});
@@ -61,8 +60,11 @@ const mark_progress = () => {
status: status,
},
callback: (data) => {
change_progress_indicators();
show_certificate_if_course_completed(data);
if (data.message) {
change_progress_indicators();
show_certificate_if_course_completed(data);
self.marked_as_complete = true;
}
},
});
};

View File

@@ -10,7 +10,7 @@
{{ BreadCrumb(class_info) }}
<div class="">
{{ ClassDetails(class_info) }}
{{ ClassSections(class_info, class_courses, class_students, published_courses, flow) }}
{{ ClassSections(class_info, class_courses, class_students, flow) }}
</div>
</div>
</div>
@@ -82,7 +82,7 @@
<!-- Class Sections -->
{% macro ClassSections(class_info, class_courses, class_students, published_courses, flow) %}
{% macro ClassSections(class_info, class_courses, class_students, flow) %}
<div class="mt-4">
{% if is_moderator %}
@@ -150,7 +150,7 @@
<div class="tab-content">
<div class="tab-pane active" id="courses" role="tabpanel" aria-labelledby="courses">
{{ CoursesSection(class_info, class_courses, published_courses) }}
{{ CoursesSection(class_info, class_courses) }}
</div>
{% if flow | length %}
@@ -180,7 +180,7 @@
{% endmacro %}
{% macro CoursesSection(class_info, class_courses, published_courses) %}
{% macro CoursesSection(class_info, class_courses) %}
<article>
<header class="mb-5">
<div class="edit-header">
@@ -476,20 +476,64 @@
{{ _("Schedule") }}
</div>
</header>
<div class="form-grid">
<div class="grid-body">
<div class="rows">
{% for lesson in flow %}
<div class="grid-row">
<div class="row data-row">
<a class="col grid-static-col clickable" href="{{ lesson.url }}">
{{ lesson.title }}
</a>
<div>
{% for chapter in flow %}
<div class="chapter-parent">
<div class="chapter-title" data-toggle="collapse" data-target="#{{ get_slugified_chapter_title(chapter.chapter_title) }}">
<img class="chapter-icon" src="/assets/lms/icons/chevron-right.svg">
<div class="chapter-title-main">
{{ chapter.chapter_title }}
</div>
</div>
<div class="chapter-content lessons collapse navbar-collapse" id="{{ get_slugified_chapter_title(chapter.chapter_title) }}">
<div class="schedule-header">
<div class="w-50">
{{ _("Lesson") }}
</div>
<div class="w-25">
{{ _("Date") }}
</div>
<div class="w-25 text-center">
{{ _("Start Time") }}
</div>
<div class="w-25 text-center">
{{ _("End Time") }}
</div>
</div>
{% endfor %}
{% for lesson in chapter.lessons %}
<div class="lesson-info flex align-center">
<a class="lesson-links w-50" href="{{ lesson.url }}">
<svg class="icon icon-sm mr-2">
<use class="" href="#{{ lesson.icon }}">
</svg>
{{ lesson.title }}
</a>
<div class="w-25">
{{ frappe.utils.format_date(lesson.date, "medium") }}
</div>
<div class="w-25 text-center">
{% if lesson.start_time %}
{{ frappe.utils.format_time(lesson.start_time, "HH:mm a") }}
{% else %}
-
{% endif %}
</div>
<div class="w-25 text-center">
{% if lesson.end_time %}
{{ frappe.utils.format_time(lesson.end_time, "HH:mm a") }}
{% else %}
-
{% endif %}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endfor %}
</div>
</article>
{% endmacro %}

View File

@@ -10,6 +10,7 @@ from lms.lms.utils import (
has_graded_assessment,
get_lesson_index,
get_lesson_url,
get_lesson_icon,
)
@@ -38,10 +39,6 @@ def get_context(context):
as_dict=True,
)
context.published_courses = frappe.get_all(
"LMS Course", {"published": 1}, ["name", "title"]
)
class_courses = frappe.get_all(
"Class Course",
{"parent": class_name},
@@ -56,15 +53,8 @@ def get_context(context):
order_by="creation desc",
)
context.live_classes = frappe.get_all(
"LMS Live Class",
{"class_name": class_name, "date": [">=", getdate()]},
["title", "description", "time", "date", "start_url", "join_url", "owner"],
order_by="date",
)
context.class_courses = get_class_course_details(class_courses)
context.all_courses = frappe.get_list(
context.all_courses = frappe.get_all(
"LMS Course", fields=["name", "title"], limit_page_length=0
)
context.course_name_list = [course.course for course in context.class_courses]
@@ -73,6 +63,17 @@ def get_context(context):
class_students, class_courses, context.assessments
)
context.is_student = is_student(class_students)
if not context.is_student and not context.is_moderator and not context.is_evaluator:
raise frappe.PermissionError(_("You don't have permission to access this page."))
context.live_classes = frappe.get_all(
"LMS Live Class",
{"class_name": class_name, "date": [">=", getdate()]},
["title", "description", "time", "date", "start_url", "join_url", "owner"],
order_by="date",
)
context.all_assignments = get_all_assignments(class_name)
context.all_quizzes = get_all_quizzes(class_name)
context.flow = get_scheduled_flow(class_name)
@@ -191,17 +192,37 @@ def is_student(class_students):
def get_scheduled_flow(class_name):
chapters = []
lessons = frappe.get_all(
"Scheduled Flow", {"parent": class_name}, ["name", "lesson"], order_by="idx"
"Scheduled Flow",
{"parent": class_name},
["name", "lesson", "date", "start_time", "end_time"],
order_by="idx",
)
for lesson in lessons:
lesson.update(
frappe.db.get_value(
"Course Lesson", lesson.lesson, ["title", "body", "course"], as_dict=True
"Course Lesson", lesson.lesson, ["title", "body", "course", "chapter"], as_dict=True
)
)
lesson["index"] = get_lesson_index(lesson.lesson)
lesson["url"] = get_lesson_url(lesson.course, lesson.index) + "?class=" + class_name
lesson.index = get_lesson_index(lesson.lesson)
lesson.url = get_lesson_url(lesson.course, lesson.index) + "?class=" + class_name
lesson.icon = get_lesson_icon(lesson.body)
return lessons
chapter_exists = list(filter(lambda x: x.chapter == lesson.chapter, chapters))
if len(chapter_exists) == 0:
chapters.append(
frappe._dict(
{
"chapter": lesson.chapter,
"chapter_title": frappe.db.get_value("Course Chapter", lesson.chapter, "title"),
"lessons": [lesson],
}
)
)
else:
chapter_exists[0]["lessons"].append(lesson)
return chapters