From 4501c407bab73552c846df236a6c361a2e1b88a8 Mon Sep 17 00:00:00 2001 From: sijanec Date: Thu, 4 Jun 2020 14:42:13 +0200 Subject: this MAY fix the grades problem; not tested yet, DNM --- dist/js/grades.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'dist/js/grades.js') diff --git a/dist/js/grades.js b/dist/js/grades.js index dceb911..b1bfb3d 100644 --- a/dist/js/grades.js +++ b/dist/js/grades.js @@ -2,12 +2,14 @@ let checkbox_state=false;var grades;async function checkLogin(){localforage.getItem("logged_in").then((value)=>{if(value!==true){window.location.replace("/index.html");}}).catch((err)=>{console.log(err);});} function setLoading(state){if(state){$("#loading-bar").removeClass("hidden");}else{$("#loading-bar").addClass("hidden");}} async function loadGrades(force_refresh=false){setLoading(true);let promises_to_run=[localforage.getItem("username").then((value)=>{username=value;}),localforage.getItem("password").then((value)=>{password=value;}),localforage.getItem("grades").then((value)=>{grades=value;})];await Promise.all(promises_to_run);if(grades==null||grades==[]||force_refresh){try{let gsecInstance=new gsec();await gsecInstance.login(username,password);gsecInstance.fetchGrades().then((value)=>{grades=value;localforage.setItem("grades",value).then(()=>{displayGrades();setLoading(false);});setLoading(false);}).catch((err)=>{gsecErrorHandlerUI(err);setLoading(false);});}catch(err){gsecErrorHandlerUI(err);setLoading(false);}}else{displayGrades();setLoading(false);}} -function displayGrades(){let grades_by_subject={};grades.forEach((grade,index)=>{if(!(grade["subject"]in grades_by_subject)){grades_by_subject[grade["subject"]]=[];} +function displayGrades(){let grades_by_subject={};let zakljucne_grades_by_subject={};grades.forEach((grade,index)=>{if(grade["gradeType"]!=GSEC_NORMAL_GRADE){zakljucne_grades_by_subject[grade["subject"]]=grade["grade"];break;} +if(!(grade["subject"]in grades_by_subject)){grades_by_subject[grade["subject"]]=[];} let grade_object={date:dateString.longFormatted(grade["date"]),teacher:grade["teacher"],subject:grade["subject"],title:grade["name"][0],type:grade["name"][1],term:grade["name"][2],grade:grade["grade"],temporary:grade["temporary"],index:index} grades_by_subject[grade["subject"]].push(grade_object);});let root_element=document.getElementById("grades-collapsible");Object.keys(grades_by_subject).forEach((subject)=>{let subject_entry=document.createElement("li");let subject_header=document.createElement("div");subject_header.classList.add("collapsible-header");subject_header.classList.add("collapsible-header-root");let subject_header_text=document.createElement("span");subject_header_text.innerText=subject;let subject_body=document.createElement("div");subject_body.className="collapsible-body";let subject_body_root=document.createElement("ul");subject_body_root.className="collection";let grade_sum=0;let grade_tot=0;grades_by_subject[subject].forEach((grade)=>{let grade_node=document.createElement("li");grade_node.className="collection-item";grade_node.classList.add("collection-item") grade_node.classList.add("grade-node");grade_node.dataset["index"]=grade["index"];let grade_node_div=document.createElement("div");let grade_text=document.createElement("span");let grade_number=document.createElement("div");grade_number.className="secondary-content";if(grade["temporary"]){let grade_text_italic=document.createElement("i");grade_text_italic.innerText=grade["date"]+" - "+grade["title"];grade_text.appendChild(grade_text_italic);let grade_number_italic=document.createElement("i");grade_number_italic.innerText=grade["grade"].toString();grade_number.appendChild(grade_number_italic);}else{grade_text.innerText=grade["date"]+" - "+grade["title"];grade_number.innerText=grade["grade"].toString();} grade_node_div.appendChild(grade_text);grade_node_div.appendChild(grade_number);grade_node.appendChild(grade_node_div);if(!grade["temporary"]||!checkbox_state){grade_sum+=grade["grade"];grade_tot+=1;} -subject_body_root.appendChild(grade_node);});let grade_average=(grade_tot===0)?"N/A":(Math.round(((grade_sum/grade_tot)+Number.EPSILON)*100)/100);let subject_header_average=document.createElement("div");subject_header_average.className="collapsible-header-right";subject_header_average.innerText=grade_average.toString();subject_header.appendChild(subject_header_text);subject_header.appendChild(subject_header_average);subject_body.append(subject_body_root);subject_entry.append(subject_header);subject_entry.append(subject_body);root_element.append(subject_entry);});$("#grades-collapsible").append(root_element);refreshClickHandlers();} +subject_body_root.appendChild(grade_node);});let grade_average=(grade_tot===0)?"N/A":(Math.round(((grade_sum/grade_tot)+Number.EPSILON)*100)/100);let subject_header_average=document.createElement("div");subject_header_average.className="collapsible-header-right";if(subject in zakljucne_grades_by_subject){subject_header_average.innerText=zakljucne_grades_by_subject[subject];subject_header_average.classList.add="zakljucna-grade";}else{subject_header_average.innerText=grade_average.toString();} +subject_header.appendChild(subject_header_text);subject_header.appendChild(subject_header_average);subject_body.append(subject_body_root);subject_entry.append(subject_header);subject_entry.append(subject_body);root_element.append(subject_entry);});$("#grades-collapsible").append(root_element);refreshClickHandlers();} function clearGrades(){const table=document.getElementById("grades-collapsible");while(table.firstChild){table.removeChild(table.firstChild);}} function refreshGrades(force){clearGrades();loadGrades(force);} function refreshClickHandlers(){$("#grades-collapsible").find(".collection-item.grade-node").click(function(){let grade_obj=grades[parseInt(this.dataset["index"])];document.getElementById("grade-header").innerText=grade_obj["subject"]+": "+grade_obj["grade"];document.getElementById("grade-date").innerText=dateString.longFormatted(grade_obj["date"]);document.getElementById("grade-title").innerText=grade_obj["name"][0];document.getElementById("grade-type").innerText=S("type")+": "+grade_obj["name"][1];let term_element=document.getElementById("grade-term");if(grade_obj["name"][2]!==""){term_element.innerText=S("term")+": "+grade_obj["name"][2];term_element.style["display"]="";}else{term_element.style["display"]="none";} -- cgit v1.2.3