果壳选课优化

优化果壳选课界面

// ==UserScript==
// @name         果壳选课优化
// @namespace    https://jwxk.ucas.ac.cn/
// @version      0.4
// @description  优化果壳选课界面
// @author       YoRHaHa
// @include        *//jwxkts2.ucas.ac.cn/courseManage/*
// @include        *//jwxkts2.ucas.ac.cn/score/yjs/all
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ucas.ac.cn
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    function setFullCourseVisible(visible) {
        console.log(visible)
        let body = document.querySelector("#regfrm > table > tbody")
        if (body === null) {
            return
        }
        if (visible === false) {
            visible = 'none'
        }
        else {
            visible = 'table-row'
        }
        for (let i = 0; i < body.childElementCount; i++) {
            let node = body.children[i]
            if (node.firstElementChild.firstElementChild.disabled) {
                node.style.display = visible
            }
        }
    }

    function createButton(id, innerHTML, onclick) {
        let button = document.createElement('button')
        button.id = id
        button.innerHTML = innerHTML
        button.setAttribute('class', 'btn btn-primary')
        button.setAttribute('type', 'submit')
        button.onclick = onclick
        return button
    }

    function showEnglishCourseButton() {
        let box = document.querySelector("#regfrm2 > div:nth-child(9)")
        if (box === null) {
            return
        }
        let bar = document.createElement('div')
        bar.style.marginBottom = '4px'
        box.appendChild(bar)

        let button = createButton('jump-1', '跳转英语课',function() {
            document.querySelector("#id_915").checked = true
            document.querySelector("#regfrm2 > div:nth-child(9) > button").click()
        })
        button.style.marginRight = '4px'
        box.appendChild(button)

        button = createButton('jump-2', '跳转新中特/自辩',function() {
            document.querySelector("#id_964").checked = true
            document.querySelector("#regfrm2 > div:nth-child(9) > button").click()
        })
        button.style.marginRight = '4px'
        box.appendChild(button)

        button = createButton('jump-3', '跳转学术通论',function() {
            document.querySelector("#id_945").checked = true
            document.querySelector("#regfrm2 > div:nth-child(9) > button").click()
        })
        button.style.marginRight = '4px'
        box.appendChild(button)

        button = createButton('jump-4', '跳转工程伦理',function() {
            document.querySelector("#id_958").checked = true
            document.querySelector("#regfrm2 > div:nth-child(9) > button").click()
        })
        button.style.marginRight = '4px'
        box.appendChild(button)
    }

    function showCourseCount() {
        let body = document.querySelector("#regfrm > table > tbody")
        if (body === null) {
            return
        }
        let count = 0
        for (let i = 0; i < body.childElementCount; i++) {
            let node = body.children[i]
            if (!node.firstElementChild.firstElementChild.disabled) {
                count++
            }
        }
        let node = document.querySelector("#main-content > div > div.m-cbox.m-lgray > div.mc-body > div.alert-danger")
        node.innerHTML = node.innerHTML + '<br/>当前可选课程数量:' + count + '/' + body.childElementCount
    }

    function showVisibleSelector() {
        let node = document.querySelector("#main-content > div > div.m-cbox.m-lgray > div.mc-body > div.alert-danger")
        let selector = document.createElement('input')
        selector.setAttribute('type', 'checkbox')
        selector.setAttribute('name', 'full-visible')
        selector.setAttribute('id', 'visible-checkbox')
        selector.checked = false
        selector.onclick = function() {
            setFullCourseVisible(selector.checked)
        }
        selector.style.marginLeft = '12px'
        selector.onclick()
        node.appendChild(selector)
        let label = document.createElement('label')
        label.setAttribute('for', 'visible-checkbox')
        label.innerHTML = '显示已选满的课程'
        node.appendChild(label)
    }

    function showScore() {
        let lesson_list = {}
        let score_list = []
        fetch('https://jwxkts2.ucas.ac.cn/score/yjs/all.json')
            .then(response => response.text())
            .then(text => {
            lesson_list = eval('(' + text + ')').list
            for (let lesson of lesson_list) {
                score_list.push(lesson.score)
            }
            let idx = 1
            while (true) {
                let grid = document.querySelector("#main-content > div > div.m-cbox.m-lgray > div.mc-body > table > tbody > tr:nth-child(" + idx + ") > td:nth-child(3)")
                if (grid == null) {
                    break
                }
                grid.innerHTML = score_list[idx - 1]
                idx += 1
            }
        })
            .catch(error => console.error(error));
    }

    function start() {
        let url = window.parent.location.href
        console.log('url: ' + url)
        if (url === 'https://jwxkts2.ucas.ac.cn/courseManage/main') {
            showEnglishCourseButton()
        }
        if (url === 'https://jwxkts2.ucas.ac.cn/score/yjs/all') {
            showScore()
        }
        if (url.startsWith('https://jwxkts2.ucas.ac.cn/courseManage/selectCourse?s=')) {
            showCourseCount()
            showVisibleSelector()
            document.querySelector("#regfrm > div > button:nth-child(4)").style.marginRight = '32px'
        }
    }
    setTimeout(start, 50)
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址