您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
This script calculates and converts your average, it also has visual grade changer
当前为
// ==UserScript== // @name PupilPath Plus // @namespace https://github.com/DeathHackz // @homepageURL https://github.com/DeathHackz/PupilPathPlus // @supportURL https://github.com/DeathHackz/PupilPathPlus/issues // @require https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/fancybox/1.3.4/jquery.fancybox-1.3.4.pack.min.js // @icon https://github.com/DeathHackz/PupilPathPlus/raw/master/icon.png // @icon64 https://github.com/DeathHackz/PupilPathPlus/raw/master/icon.png // @version 3.2 // @description This script calculates and converts your average, it also has visual grade changer // @author DeathHackz // @match https://*.pupilpath.skedula.com/* // @grant GM_xmlhttpRequest // @run-at document-body // ==/UserScript== "use strict"; var version = "3.2"; $("head").append( '<link ' + 'href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css" ' + 'rel="stylesheet" type="text/css">' ); $("head").append( '<link ' + 'href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/1.3.4/jquery.fancybox-1.3.4.css" ' + 'rel="stylesheet" type="text/css">' ); var url = "https://raw.githubusercontent.com/DeathHackz/PupilPathPlus/master/src/PupilPathPlus.meta.js"; $.get(url, function (data) { if (data.indexOf("// @version " + version) != -1) {} else { var pk = data.split("\n"); var results = pk.filter(function (value) { return value.indexOf("// @version") >= 0; }); var ok = results[0].split(" "); var hh = ok.length - 1; var newversion = ok[hh]; if (newversion > version) { toastr.options = { closeButton: true, debug: false, newestOnTop: false, progressBar: true, positionClass: "toast-top-right", preventDuplicates: true, onclick: function () { window.open( "https://raw.githubusercontent.com/DeathHackz/PupilPathPlus/master/src/PupilPathPlus.user.js" ); }, showDuration: "300", hideDuration: "1000", timeOut: 0, extendedTimeOut: 0, showEasing: "swing", hideEasing: "linear", showMethod: "fadeIn", hideMethod: "fadeOut", tapToDismiss: false }; toastr.info("Click Here to Update Now!", "PupilPath Plus v" + newversion + " has been released!"); } } }, "text"); if (localStorage.length === 0) { localStorage.setItem('PupilPath Plus Version', "v" + version); } if (localStorage.getItem("PupilPath Plus Version") !== "v" + version) { toastr.options = { closeButton: true, debug: false, newestOnTop: false, progressBar: true, positionClass: "toast-top-right", preventDuplicates: true, onclick: function () { window.open( "https://github.com/DeathHackz/PupilPathPlus/blob/master/CHANGELOG.md" ); }, showDuration: "300", hideDuration: "1000", timeOut: 0, extendedTimeOut: 0, showEasing: "swing", hideEasing: "linear", showMethod: "fadeIn", hideMethod: "fadeOut", tapToDismiss: false }; toastr.info("View Changelog", "PupilPath Plus Updated to v" + version); localStorage.setItem('PupilPath Plus Version', "v" + version); } function getAverage() { if ($('#progress-card').length === 1) { if ($('#totalaverage').length === 0) { $('.information').prepend("<a href='#ginfo' id='averagep' style='color: #585b66;position: static;float: right;padding-top: 10px;padding-right: 10px;'>Total Average: <img id='avgimg' src='' /><span id='totalaverage'></span></a>"); } $("a#averagep").fancybox({ 'type': 'inline', 'autoScale': true, 'autoDimensions': true, 'overlayOpacity': 0, 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'padding': 20, 'centerOnScroll': true }); var links = document.querySelectorAll('tr[style="cursor: pointer"]'); var One = ""; var Two = ""; var Three = ""; var Four = ""; var Five = ""; var Six = ""; var Seven = ""; var Eight = ""; var Nine = ""; var num = 0; var count = 0; for (var i = 0; i < links.length; i++) { var str = links[i].innerText; One = str.split('MP1: ')[1]; One = parseFloat(One); One = One || 0; if (One === 0) {} else { num += parseFloat(One); count++; } Two = str.split('MP2: ')[1]; Two = parseFloat(Two); Two = Two || 0; if (Two === 0) {} else { num += parseFloat(Two); count++; } Three = str.split('MP3: ')[1]; Three = parseFloat(Three); Three = Three || 0; if (Three === 0) {} else { num += parseFloat(Three); count++; } Four = str.split('MP4: ')[1]; Four = parseFloat(Four); Four = Four || 0; if (Four === 0) {} else { num += parseFloat(Four); count++; } Five = str.split('MP5: ')[1]; Five = parseFloat(Five); Five = Five || 0; if (Five === 0) {} else { num += parseFloat(Five); count++; } Six = str.split('MP6: ')[1]; Six = parseFloat(Six); Six = Six || 0; if (Six === 0) {} else { num += parseFloat(Six); count++; } Seven = str.split('MP7: ')[1]; Seven = parseFloat(Seven); Seven = Seven || 0; if (Seven === 0) {} else { num += parseFloat(Seven); count++; } Eight = str.split('MP8: ')[1]; Eight = parseFloat(Eight); Eight = Eight || 0; if (Eight === 0) {} else { num += parseFloat(Eight); count++; } Nine = str.split('MP9: ')[1]; Nine = parseFloat(Nine); Nine = Nine || 0; if (Nine === 0) {} else { num += parseFloat(Nine); count++; } } var avg = num / count; var finalavg = Math.ceil(avg * 100) / 100; var avgimg; var fcolor; var avgfix = Number(finalavg); if (avgfix >= 90) { avgimg = "/img/ico/star.png"; fcolor = "#0087FF"; } else { if (avgfix >= 80) { avgimg = "/img/ico/tick.png"; fcolor = "#1FBA24"; } else { if (avgfix >= 65) { avgimg = "/img/ico/error.png"; fcolor = "#AA9901"; } else { if (avgfix <= 64) { avgimg = "/img/ico/exclamation.png"; fcolor = "#CF1920"; } } } } var lettergrade; var collegegrade; if (avgfix >= 97) { lettergrade = "A+"; collegegrade = "4.0"; } else { if (avgfix >= 93) { lettergrade = "A"; collegegrade = "4.0"; } else { if (avgfix >= 90) { lettergrade = "A-"; collegegrade = "3.7"; } else { if (avgfix >= 87) { lettergrade = "B+"; collegegrade = "3.3"; } else { if (avgfix >= 83) { lettergrade = "B"; collegegrade = "3.0"; } else { if (avgfix >= 80) { lettergrade = "B-"; collegegrade = "2.7"; } else { if (avgfix >= 77) { lettergrade = "C+"; collegegrade = "2.3"; } else { if (avgfix >= 73) { lettergrade = "C"; collegegrade = "2.0"; } else { if (avgfix >= 70) { lettergrade = "C-"; collegegrade = "1.7"; } else { if (avgfix >= 67) { lettergrade = "D+"; collegegrade = "1.3"; } else { if (avgfix >= 65) { lettergrade = "D"; collegegrade = "1.0"; } else { if (avgfix < 65) { lettergrade = "E/F"; collegegrade = "0.0"; } else {} } } } } } } } } } } } if ($('#avgi').length === 0) { $('body').append("<div id='avgi' style='display:none'><div id='ginfo'><h2>Average Conversion</h2><h4>Percent Grade: " + avgfix + "%</h4><h4>Letter Grade: " + lettergrade + "</h4><h4>4.0 Scale: " + collegegrade + "</h4><a target='_blank' href='https://pages.collegeboard.org/how-to-convert-gpa-4.0-scale'><p>More Info on College Board</p><a></div></div>"); } else { $('#avgi').remove(); $('body').append("<div id='avgi' style='display:none'><div id='ginfo'><h2>Average Conversion</h2><h4>Percent Grade: " + avgfix + "%</h4><h4>Letter Grade: " + lettergrade + "</h4><h4>4.0 Scale: " + collegegrade + "</h4><a target='_blank' href='https://pages.collegeboard.org/how-to-convert-gpa-4.0-scale'><p>More Info on College Board</p><a></div></div>"); } if ($('#totalaverage').length === 1) { $('#totalaverage').text(" " + finalavg); $('#avgimg').attr("src", avgimg); document.getElementById('totalaverage').style.color = fcolor; } } } window.onload = getAverage(); if ($('#sidebar').length === 1) { $("<a style='position:absolute;top:20px;left:30px;' id='cred' href='#credit'>PupilPath Plus</a>").insertAfter('#CloseMenu'); $('body').append("<div style='display:none'><div id='credit'><h2>Info</h2><p>Thanks for using PupilPath Plus!</p><p>Please leave a review on <a target='_blank' href='https://greasyfork.org/en/scripts/368390/feedback'>Greasy Fork</a></p><a target='_blank' href='https://github.com/DeathHackz/PupilPathPlus/issues'><p>Found a bug?<p></a>Made by <a target='_blank' href='https://github.com/DeathHackz'>DeathHackz</a></p><p>View on <a target='_blank' href='https://github.com/DeathHackz/PupilPathPlus'>GitHub</a></p></div></div>"); $("a#cred").fancybox({ 'type': 'inline', 'autoScale': true, 'autoDimensions': true, 'overlayOpacity': 0, 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'padding': 20, 'centerOnScroll': true }); } if ($('#progress-card').length === 1) { $('body').append("<div style='display:none'><div id='editgfloat'></div></div>"); $('#profile-links').append("<br /><a href='#editgfloat' id='editg' style='margin-right:3px;'>Edit Grades</a>"); $('#editgfloat').append("<form style='padding-bottom:10px;' id='modifygrades'></form>"); $("a#editg").fancybox({ 'type': 'inline', 'autoScale': true, 'autoDimensions': true, 'overlayOpacity': 0, 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'padding': 20, 'centerOnScroll': true }); var number = 0; var links = document.querySelectorAll('tr[style="cursor: pointer"]'); for (var i = 0; i < links.length; i++) { var ck = $("#progress-card tr td:nth-child(5)")[i].innerHTML; if (ck == "-") {} else { number = number + 1; var newid = number + "active"; var kk = links[i]; kk.setAttribute("id", newid); } } var dop = 0; var aclass = []; for (var t = 0; t < number; t++) { dop = dop + 1; var dopid = dop + "active"; var ioid = dop + "val"; var jid = dop + "grade"; var popo = document.getElementById(dopid).cells[1].innerText; var mopo = document.getElementById(dopid).cells[4].children[0]; mopo.setAttribute("id", jid); var cholo = document.getElementById(dopid).cells[4].children[0].innerText.substring(1); $('#modifygrades').append(popo + "<input style='margin:5px;' id=" + ioid + " type='number' step='.01' value=" + cholo + " min='0' max='110'></input><br />"); aclass.push(dop); } $('#modifygrades').append("<a class='btn btn-danger' id='rstbtn' style='margin-right:5px;'>Reset</a><a class='btn btn-warning' id='clearbtn' style='margin-right:5px;'>Clear</a><a style='margin-right:5px;' id='setbtn' class='btn btn-success'>Set</a><a style='float:right;margin-left:50px;' id='savebtn' class='btn btn-danger'>Save</a>"); } function setsavedgrades() { if (sessionStorage.length === 1) { var check = JSON.parse(sessionStorage.getItem('SavedGrades')); if (check.length > 0) { $('#modifygrades').prepend("<p id='warningsave' style='background-color: #ffffa7;text-align: center;border-radius: 10px;'>These are not your real grades, click reset to see your actual grades</p>"); for (var p = 0; p < aclass.length; p++) { var iop = aclass[p]; var jj = check[p]; var catag; var gimg; var ncolor; var ooid = iop + "active"; var gid = iop + "grade"; var nio = iop + "newgrades"; var dopo = document.getElementById(ooid).cells[4].children[0]; if (jj === "") { dopo.style.display = "initial"; } else { if (jj >= 90) { gimg = "/img/ico/star.png"; catag = "Honors"; ncolor = "#0087FF"; } else { if (jj >= 80) { gimg = "/img/ico/tick.png"; catag = "Passing"; ncolor = "#1FBA24"; } else { if (jj >= 65) { gimg = "/img/ico/error.png"; catag = "Borderline"; ncolor = "#AA9901"; } else { if (jj <= 64) { gimg = "/img/ico/exclamation.png"; catag = "Failing"; ncolor = "#CF1920"; } } } } dopo.style.display = "none"; $("#" + nio).remove(); $("<span id=" + nio + " style=color:" + ncolor + " data-gtype=" + catag + "><img src=" + gimg + "> " + jj + "</span>").insertBefore("#" + gid); } } getAverage(); } } } window.onload = setsavedgrades(); if (sessionStorage.length === 1) { $("#savebtn").attr("disabled", true); } $("#savebtn").click(function () { if ($("#savebtn")[0].attributes.length === 3) { var SavedGrades = []; for (var o = 1; o < number + 1; o++) { var opop = o + "val"; var oj = $("#" + opop).val(); SavedGrades.push(oj); } sessionStorage.setItem('SavedGrades', JSON.stringify(SavedGrades)); $("#savebtn").attr("disabled", true); setsavedgrades(); } }); $("#clearbtn").click(function () { $(':input', '#modifygrades').val(''); }); $("#rstbtn").click(function () { for (var q = 0; q < number; q++) { $("#" + noo).remove(); $("#" + number + "newgrades").remove(); var ioq = aclass[q]; var noo = ioq + "newgrades"; var kid = ioq + "grade"; document.getElementById(kid).style.display = "initial"; $("#modifygrades")[0].reset(); } $('#warningsave').remove(); $("#savebtn").removeAttr("disabled"); sessionStorage.clear(); getAverage(); }); $("#setbtn").click(function () { for (var p = 0; p < aclass.length; p++) { var iop = aclass[p]; var mmm = iop + "val"; var jj = $("#" + mmm).val(); var catag; var gimg; var ncolor; var ooid = iop + "active"; var gid = iop + "grade"; var nio = iop + "newgrades"; var dopo = document.getElementById(ooid).cells[4].children[0]; if (jj === "") { dopo.style.display = "initial"; } else { if (jj >= 90) { gimg = "/img/ico/star.png"; catag = "Honors"; ncolor = "#0087FF"; } else { if (jj >= 80) { gimg = "/img/ico/tick.png"; catag = "Passing"; ncolor = "#1FBA24"; } else { if (jj >= 65) { gimg = "/img/ico/error.png"; catag = "Borderline"; ncolor = "#AA9901"; } else { if (jj <= 64) { gimg = "/img/ico/exclamation.png"; catag = "Failing"; ncolor = "#CF1920"; } } } } dopo.style.display = "none"; $("#" + nio).remove(); $("<span id=" + nio + " style=color:" + ncolor + " data-gtype=" + catag + "><img src=" + gimg + "> " + jj + "</span>").insertBefore("#" + gid); } } getAverage(); });