EbridgeGPACalculator

西浦 ebridge计算GPA插件

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         EbridgeGPACalculator
// @namespace    https://greasyfork.org/users/924391
// @version      0.12
// @description  西浦 ebridge计算GPA插件
// @author       EndingSpirit
// @match        https://ebridge.xjtlu.edu.cn/*
// @license      GPL-3.0-only
// @grant        none
// ==/UserScript==

(function() {
   'use strict';

    let table1 = document.querySelector('body > div.sv-page-content.sv-container-fluid > div:nth-child('+11+') > div.sv-panel-body > div > table > tbody');
    let table2 = document.querySelector('body > div.sv-page-content.sv-container-fluid > div:nth-child('+15+') > div.sv-panel-primary > div.sv-panel-body > div > table > tbody');
    let table3 = document.querySelector('body > div.sv-page-content.sv-container-fluid > div:nth-child('+18+') > div.sv-panel-primary > div.sv-panel-body > div > table > tbody');
    // 大四的大一成绩位置没有确定(没有大四账号)
    let table4 = document.querySelector('body > div.sv-page-content.sv-container-fluid > div:nth-child('+21+') > div.sv-panel-primary > div.sv-panel-body > div > table > tbody');
    var Credits = new Array();
    var GPAs = new Array();
    var Marks = new Array();
    function cal(table){
        var TotalCredit=0.00;
        var credit = 0.00;
        var AveMark = 0.00;
        var Mark =0.00;
        var AveGPA=0.00
        var gpa =0.00;
        var module = "english";
        for(let i=0;i<table.children.length;i++){
            if(table.children[i].children[3].textContent === ""||
               table.children[i].children[4].textContent === ""||
               table.children[i].children[3].textContent === "Credit"||
               table.children[i].children[4].textContent === "Mark") {continue;}
            credit = parseFloat(table.children[i].children[3].textContent);
            module = table.children[i].children[2].textContent;
            console.log(module);
            if(module.includes("English")&&credit==10){
                credit=3;
                console.log(module.includes("English"));
            }
            if(module.includes("English")&&credit!=3) {
                credit=2.5;
                console.log(module.includes("English"));
            }
            if(module.includes("EAP")) {
                credit=2.5;
                console.log(module.includes("EAP"));
            }

            TotalCredit+=credit;
            Mark = parseInt(table.children[i].children[4].textContent);
            AveMark += Mark*credit;
            if(Mark>=70) gpa=credit*4.0;
            if(Mark>=65 && Mark<=69.99) gpa=credit*3.67;
            if(Mark>=60 && Mark<=64.99) gpa=credit*3.33;
            if(Mark>=54.99 && Mark<=59.99) gpa=credit*3.0;
            if(Mark>=50 && Mark<=54.99) gpa=credit*2.67;
            if(Mark>=45 && Mark<=49.99) gpa=credit*2.33;
            if(Mark>=40 && Mark<=44.99) gpa=credit*2.0;
            if(Mark>=0 && Mark<=39.99) gpa=credit*0.0;
            AveGPA += gpa
        }
        AveMark=(AveMark/TotalCredit).toFixed(2);
        AveGPA=(AveGPA/TotalCredit).toFixed(2);
        Marks.push(AveMark)
        GPAs.push(AveGPA);
        Credits.push(TotalCredit)

        // 构造新的列,显示数据
        let score = document.createElement("tr");

        let t = document.createElement("td");
        t.className='sv-col-md-2';
        t.innerText = "GPA:"+AveGPA;
        score.appendChild(t);

        t = document.createElement("td");
        t.className='sv-col-md-2';
        t.innerText = "Average Mark: "+AveMark;
        score.appendChild(t);

        console.log(score);
        table.appendChild(score);
    }
    cal(table1);
    cal(table2);
    cal(table3);
    console.log(Marks);
    console.log(GPAs);
    console.log(Credits);
})();