优化果壳选课界面
// ==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) })();