learndash-exam.min.js 6.27 KB
const LearnDash_Exam={exam_el:null,exam_section_results:null,exam_section_header:null,exam_section_questions:null,exam_section_footer:null,exam_list_questions:null,exam_progress:null,exam_button_start:null,exam_button_next:null,exam_button_submit:null,exam_button_results:null,exam_current_question_idx:0,init(element){return void 0===element?null:element.classList.contains("ld-exam-content")?(this.exam_el=element,this.exam_section_results=this.exam_el.getElementsByClassName("ld-exam-result-message")[0],void 0===this.exam_section_results?(console.debug("this.exam_section_results is undefined"),null):(this.exam_section_header=this.exam_el.getElementsByClassName("ld-exam-header")[0],void 0===this.exam_section_header?(console.debug("this.exam_section_header is undefined"),null):(this.exam_section_questions=this.exam_el.getElementsByClassName("ld-exam-questions")[0],void 0===this.exam_section_questions?(console.debug("this.exam_section_questions is undefined"),null):(this.exam_section_footer=this.exam_el.getElementsByClassName("ld-exam-footer")[0],void 0===this.exam_section_footer?(console.debug("this.exam_section_footer is undefined"),null):(this.exam_list_questions=this.exam_section_questions.querySelectorAll("li.ld-exam-question"),void 0===this.exam_list_questions?(console.debug("this.exam_list_questions collection is undefined"),null):this.exam_list_questions.length<1?(console.log("DEBUG: this.exam_list_questions collection is empty [%o]",this.exam_list_questions.length),null):(this.exam_progress=this.exam_el.getElementsByClassName("ld-exam-progress")[0],this.exam_button_start=this.exam_el.querySelectorAll('button[class="ld-exam-button-start"]')[0],void 0===this.exam_button_start?(console.debug("this.exam_button_start is undefined"),null):(this.exam_button_next=this.exam_el.querySelectorAll('button[class="ld-exam-button-next"]')[0],void 0===this.exam_button_next?(console.debug("this.exam_button_next) is undefined"),null):(this.exam_button_results=this.exam_el.querySelectorAll('button[class="ld-exam-button-results"]')[0],void 0===this.exam_button_results?(console.debug("this.exam_button_results is undefined"),null):(this.exam_button_submit=this.exam_el.querySelectorAll('button[class="ld-exam-button-submit"]')[0],void 0===this.exam_button_submit?(console.debug("this.exam_button_submit is undefined"),null):void(this.is_exam_graded()?this.init_graded():this.init_started())))))))))):null},init_graded(){this.exam_show_el(this.exam_section_questions,!1),this.exam_show_el(this.exam_section_footer,!1),this.exam_show_el(this.exam_button_start,!1),this.exam_show_el(this.exam_progress,!1),this.exam_button_results.addEventListener("click",(event=>{this.button_click_results(event)}),!1)},init_started(){this.exam_show_el(this.exam_section_header,!0),this.exam_show_el(this.exam_progress,!1),this.exam_show_el(this.exam_section_questions,!1),this.exam_show_el(this.exam_section_footer,!1),this.exam_show_el(this.exam_button_results,!1),this.exam_show_el(this.exam_button_next,!1),this.exam_show_el(this.exam_button_submit,!1),this.exam_show_el(this.exam_button_start,!0),this.exam_button_start.addEventListener("click",(event=>{this.button_click_start(event)}),!1),this.exam_button_next.addEventListener("click",(event=>{this.button_click_next(event)}),!1)},button_click_start(event){return event.preventDefault(),this.set_form_start_time(),this.exam_show_el(this.exam_button_start,!1),this.exam_list_questions.length>0&&this.exam_show_el(this.exam_progress,!0),this.exam_current_question_idx=0,this.exam_question_show_by_idx(this.exam_current_question_idx),this.exam_show_el(this.exam_section_questions,!0),this.exam_show_el(this.exam_section_footer,!0),!1},button_click_next(event){return event.preventDefault(),this.exam_current_question_idx+=1,this.exam_question_show_by_idx(this.exam_current_question_idx),!1},button_click_results(event){if(event.preventDefault(),this.exam_list_questions.length>0){const this_el=this;Array.from(this.exam_list_questions).forEach((function(question_element,index,array){this_el.exam_show_el(question_element,!0)}))}return"none"==this.exam_section_questions.style.display?this.exam_show_el(this.exam_section_questions,!0):this.exam_show_el(this.exam_section_questions,!1),!1},exam_question_show_by_idx(question_idx){if(this.exam_list_questions.length>0){const this_el=this;Array.from(this.exam_list_questions).forEach((function(question_element,index,array){index===question_idx?this_el.exam_show_el(question_element,!0):this_el.exam_show_el(question_element,!1)}));question_idx+1<this.exam_list_questions.length?(this.exam_show_el(this.exam_button_next,!0),this.exam_show_el(this.exam_button_submit,!1)):(this.exam_show_el(this.exam_button_next,!1),this.exam_show_el(this.exam_button_submit,!0)),this.exam_update_progress()}},exam_update_progress(){if(void 0!==this.exam_progress){let question_idx_local=this.exam_current_question_idx;const exam_progress_text_current=this.exam_progress.getElementsByClassName("ld-exam-progress-text-current")[0];void 0!==exam_progress_text_current&&(exam_progress_text_current.innerHTML=question_idx_local+1);const exam_progress_text_total=this.exam_progress.getElementsByClassName("ld-exam-progress-text-total")[0];void 0!==exam_progress_text_total&&(exam_progress_text_total.innerHTML=this.exam_list_questions.length);const exam_progress_text_percentage=this.exam_progress.getElementsByClassName("ld-exam-progress-text-percentage")[0];if(this.exam_list_questions.length>0&&void 0!==exam_progress_text_percentage){const progress_percent=(question_idx_local/this.exam_list_questions.length*100).toFixed(0);exam_progress_text_percentage.innerHTML=progress_percent;const exam_progress_bar_fill=this.exam_progress.getElementsByClassName("ld-exam-progress-bar-fill")[0];void 0!==exam_progress_bar_fill&&(exam_progress_bar_fill.style.width=progress_percent+"%")}}},is_exam_graded(){return!!this.exam_el.classList.contains("ld-exam-graded")},exam_show_el(el,show){if(void 0===el)return null;el.style.display=!0===show?"block":"none"},set_form_start_time(){let start_time=+new Date;const form_started=document.getElementById("ld-form-exam-started");void 0!==form_started&&(form_started.value=start_time)}},learndash_exams=[];Array.from(document.getElementsByClassName("ld-exam-content")).forEach((function(element,index,array){learndash_exams[index]=Object.create(LearnDash_Exam),learndash_exams[index].init(element)}));