您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
calculate average grades in vulcan
- // ==UserScript==
- // @name average vulcan
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description calculate average grades in vulcan
- // @author bewu
- // @license MIT
- // @match https://uonetplus-uczen.vulcan.net.pl/*
- // @icon https://cdn-icons-png.flaticon.com/512/5084/5084428.png
- // @grant none
- // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
- // ==/UserScript==
- (function() {
- 'use strict';
- console.info("average vulcan by bewu");
- var subjectsDiv = $("#ext-element-110");
- var waitGrades = setInterval(function() {
- if (subjectsDiv.length != 0 && subjectsDiv[0].childElementCount != 0) {
- console.info("loaded grades!");
- clearInterval(waitGrades);
- start(subjectsDiv[0]);
- }
- else {
- subjectsDiv = $("#ext-element-110");
- }
- }, 100);
- })();
- function start(subjects) {
- console.info(subjects);
- for (var i = 0; i < subjects.childElementCount; i++) {
- avg(subjects.children[i], subjects.getElementsByClassName("x-label-el")[i]);
- }
- }
- function avg(s, sName) {
- s = s.querySelectorAll("span[aria-label]");
- if (s.length != 0) { // if there are any grades
- console.info(sName.innerText);
- var gSum = 0.0;
- var weightSum = 0;
- for (var i = 0; i < s.length; i++) {
- var tempG = s[i].innerText.replace(" (%)", "") // temp string to hold grade
- if (tempG.length > 1) { // if grade is not only + or -
- tempG = tempG.replace("+", ".5");
- if (tempG.includes("-")) { // handling grades with a -
- tempG = tempG.replace("-", ".0");
- if (!isNaN(tempG)) {
- tempG = (parseInt(tempG) - 0.25).toString();
- }
- }
- }
- if (!isNaN(tempG)) { // if the grade is numeric
- var tempW = s[i].getAttribute("aria-label").split("waga: ")[1].split(",")[0]; // temp string to hold grade's weight
- if (tempW != "0") { // if weight is not 0
- gSum += parseInt(tempW) * parseFloat(tempG);
- weightSum += parseInt(tempW);
- console.info(tempG + " " + tempW);
- }
- }
- }
- var sAverage;
- if (weightSum > 0) { // to avoid dividing by 0
- sAverage = Math.round(gSum / weightSum * 100) / 100; // calculating the average
- console.info(sName.innerText + " " + sAverage);
- sName.innerHTML = sName.innerText + "<i> (" + sAverage + ")</i>";
- }
- }
- }