NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name PoliTO media // @author neslinesli93 // @namespace https://didattica.polito.it/portal/page/portal/home/Studente // @version 0.2 // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js // @include https://*.* // @grant unsafeWindow // ==/UserScript== $(window).load(function () { var tables, marks_table, marks_array, len_marks, weighted_marks, not_weighted_marks, current_mark, current_credits, weighted_avg, not_weighted_avg, total_credits, skipped_credits, skipped_marks; tables = $("table.RegionBorderMao>tbody>tr>td>table"); marks_table = tables[tables.length - 5].children[0]; marks_array = marks_table.children; len_marks = marks_array.length; weighted_marks = 0; not_weighted_marks = 0; skipped_marks = 0; skipped_credits = 0; for (var i = 1; i < len_marks - 1; i++) { current_credits = parseInt(marks_array[i].children[1].innerHTML); current_mark = marks_array[i].children[2].innerHTML; // Really I don't know if this is different for non-italian students if (isNaN(current_mark)) { if (current_mark === "30 e lode") { current_mark = 31; } else { // Probably a mark that is not used for computing the average (IELTS, ecc) skipped_credits += current_credits; skipped_marks += 1; continue; } } else { current_mark = parseInt(current_mark); } not_weighted_marks += current_mark; weighted_marks += current_mark * current_credits; } total_credits = parseInt(marks_array[len_marks - 1].children[1].children[0].innerHTML); console.log("Total credits: ", total_credits); console.log("Meaningful credits: ", total_credits - skipped_credits); console.log("NWM: ", not_weighted_marks) console.log("WM: ", weighted_marks); console.log("Total subjects: ", len_marks - 1 - 1); console.log("Meaningful subjects: ", len_marks - 1 - 1 - skipped_marks); not_weighted_avg = (not_weighted_marks / (len_marks - 1 - 1 - skipped_marks)).toFixed(2); // Same in the for statement, which starts from 1 and ends at len_marks-1 weighted_avg = (weighted_marks / (total_credits - skipped_credits)).toFixed(2); var tr_non_weigh = "<tr><td class='policorpo' align='right'><b>Media non pesata:</b></td><td class='policorpo' align='center'><b>"+not_weighted_avg+"</b></td><td align='center' colspan='2'> </td></tr>", tr_weigh = "<tr><td class='policorpo' align='right'><b>Media pesata:</b></td><td class='policorpo' align='center'><b>"+weighted_avg+"</b></td><td align='center' colspan='2'> </td></tr>"; $(marks_table).append(tr_non_weigh); $(marks_table).append(tr_weigh); });