frappe.ready(() => { this.marked_as_complete = false; this.quiz_submitted = false; this.file_type; let self = this; localStorage.removeItem($("#quiz-title").data("name")); fetch_assignments(); save_current_lesson(); set_file_type(); $(".option").click((e) => { enable_check(e); }); $(window).scroll(() => { let self = this; if ( !$("#status-indicator").length && !self.marked_as_complete && $(".title").hasClass("is-member") ) { self.marked_as_complete = true; mark_progress(); } }); $("#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); }); $(".btn-lesson").click((e) => { save_lesson(e); }); $(".add-attachment").click((e) => { show_upload_modal(); }); $(".btn-start-quiz").click((e) => { $("#start-banner").addClass("hide"); $("#quiz-form").removeClass("hide"); mark_active_question(); }); $(".btn-edit").click((e) => { window.location.href = `${window.location.href}?edit=1`; }); $(".btn-back").click((e) => { window.location.href = window.location.href.split("?")[0]; }); $(document).on("click", ".copy-link", (e) => { frappe.utils.copy_to_clipboard($(e.currentTarget).data("link")); $(".attachments").collapse("hide"); }); if ($("#quiz-title").data("max-attempts")) { window.addEventListener("beforeunload", (e) => { e.returnValue = ""; if ($(".active-question").length && !self.quiz_submitted) { quiz_summary(); } }); } if ($("#body").length) { make_editor(); } $("#file-type").change((e) => { $("#file-type option:selected").each(function () { self.file_type = $(this).val(); }); }); }); const save_current_lesson = () => { if ($(".title").hasClass("is-member")) { frappe.call("lms.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").removeAttr("disabled"); $(".custom-checkbox").removeClass("active-option"); $(".option:checked") .closest(".custom-checkbox") .addClass("active-option"); } }; const mark_active_question = (e = undefined) => { $(".timer").addClass("hide"); calculate_and_display_time(100); $(".timer").removeClass("hide"); let current_index = $(".active-question").attr("data-qt-index") || 0; let 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"); initialize_timer(); }; const mark_progress = () => { let status = "Complete"; frappe.call({ method: "lms.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(); show_certificate_if_course_completed(data); }, }); }; const change_progress_indicators = () => { $(".active-lesson .lesson-progress-tick").removeClass("hide"); }; const show_certificate_if_course_completed = (data) => { if ( data.message == 100 && !$(".next").length && $("#certification").hasClass("hide") ) { $("#certification").removeClass("hide"); } }; const quiz_summary = (e = undefined) => { e && e.preventDefault(); let quiz_name = $("#quiz-title").data("name"); let total_questions = $(".question").length; let self = this; frappe.call({ method: "lms.lms.doctype.lms_quiz.lms_quiz.quiz_summary", args: { quiz: quiz_name, results: localStorage.getItem(quiz_name), }, callback: (data) => { let message = data.message == total_questions ? __("Excellent Work 👏") : __("Better luck next time"); $(".question").addClass("hide"); $("#summary").addClass("hide"); $("#quiz-form") .parent() .prepend( `