frappe.ready(() => { localStorage.removeItem($("#quiz-title").text()); fetch_assignments(); save_current_lesson(); $(".option").click((e) => { enable_check(e); }) $(".mark-progress").click((e) => { mark_progress(e); }); $(".next").click((e) => { mark_progress(e); }); $("#summary").click((e) => { quiz_summary(e); }); $("#check").click((e) => { check_answer(e); }); $("#next").click((e) => { mark_active_question(e); }); $("#try-again").click((e) => { try_quiz_again(e); }); $("#certification").click((e) => { create_certificate(e); }); $(".submit-work").click((e) => { attach_work(e); }); $(".clear-work").click((e) => { clear_work(e); }) }); const save_current_lesson = () => { if ($(".title").hasClass("is-member")) { frappe.call("school.lms.api.save_current_lesson", { course_name: $(".title").attr("data-course"), lesson_name: $(".title").attr("data-lesson") }) } }; const enable_check = (e) => { if ($(".option:checked").length && $("#check").attr("disabled")) { $("#check").removeAttr("disabled"); } }; const mark_active_question = (e = undefined) => { var current_index; var next_index = 1; if (e) { e.preventDefault(); current_index = $(".active-question").attr("data-qt-index"); next_index = parseInt(current_index) + 1; } $(".question").addClass("hide").removeClass("active-question"); $(`.question[data-qt-index='${next_index}']`).removeClass("hide").addClass("active-question"); $(".current-question").text(`${next_index}`); $("#check").removeClass("hide").attr("disabled", true); $("#next").addClass("hide"); $(".explanation").addClass("hide"); }; const mark_progress = (e) => { /* Prevent default only for Next button anchor tag and not for progress checkbox */ if ($(e.currentTarget).prop("nodeName") != "INPUT") e.preventDefault(); else return const target = $(e.currentTarget).attr("data-progress") ? $(e.currentTarget) : $("input.mark-progress"); const current_status = $(".lesson-progress").hasClass("hide") ? "Incomplete": "Complete"; let status = "Incomplete"; if (target.prop("nodeName") == "INPUT" && target.prop("checked")) { status = "Complete"; } if (status != current_status) { frappe.call({ method: "school.lms.doctype.course_lesson.course_lesson.save_progress", args: { lesson: $(".title").attr("data-lesson"), course: $(".title").attr("data-course"), status: status }, callback: (data) => { change_progress_indicators(status, e); show_certificate_if_course_completed(data); move_to_next_lesson(status, e); } }); } else move_to_next_lesson(e); }; const change_progress_indicators = (status, e) => { if (status == "Complete") { $(".lesson-progress").removeClass("hide"); $(".active-lesson .lesson-progress-tick").removeClass("hide"); } else { $(".lesson-progress").addClass("hide"); $(".active-lesson .lesson-progress-tick").addClass("hide"); } if (status == "Incomplete" && !$(e.currentTarget).hasClass("next")) { $(e.currentTarget).addClass("hide"); $("input.mark-progress").prop("checked", false).closest(".custom-checkbox").removeClass("hide"); } }; const show_certificate_if_course_completed = (data) => { if (data.message == 100 && !$(".next").attr("data-next") && $("#certification").hasClass("hide")) { $("#certification").removeClass("hide"); $(".next").addClass("hide"); } }; const move_to_next_lesson = (status, e) => { if ($(e.currentTarget).hasClass("next") && $(e.currentTarget).attr("data-href")) { window.location.href = $(e.currentTarget).attr("data-href"); } else if (status == "Complete") { $("input.mark-progress").closest(".custom-checkbox").addClass("hide"); $("div.mark-progress").removeClass("hide"); $(".next").addClass("hide"); } else { $("input.mark-progress").closest(".custom-checkbox").removeClass("hide"); $("div.mark-progress").addClass("hide"); $(".next").removeClass("hide"); } }; const quiz_summary = (e) => { e.preventDefault(); var quiz_name = $("#quiz-title").text(); var total_questions = $(".question").length; frappe.call({ method: "school.lms.doctype.lms_quiz.lms_quiz.quiz_summary", args: { "quiz": quiz_name, "results": localStorage.getItem(quiz_name) }, callback: (data) => { var message = data.message == total_questions ? "Excellent Work" : "You were almost there." $(".question").addClass("hide"); $(".quiz-footer").addClass("hide"); $("#quiz-form").parent().prepend( `