FIX: HDU教务系统培养计划

在HDU教务系统培养计划中对“通过情况”进行补全,方便查看

目前为 2021-03-28 提交的版本,查看 最新版本

// ==UserScript==
// @name        FIX: HDU教务系统培养计划
// @namespace   Violentmonkey Scripts
// @match       http://jxgl.hdu.edu.cn/*
// @grant       none
// @version     1.0
// @author      Rainbow Yang
// @description 在HDU教务系统培养计划中对“通过情况”进行补全,方便查看
// ==/UserScript==

let scores = {
  set: sessionStorage.setItem.bind(sessionStorage),
  get: sessionStorage.getItem.bind(sessionStorage)
}

const readScore = () => {
  const scoreWindow = window.open(window.location.href.replace("pyjh.aspx", "xscjcx_dq.aspx").replace("N121607", "N121605"))
  return new Promise(resolve => {
    scoreWindow.onload = () => {
      scoreWindow.document.querySelector("#ddlxq").selectedIndex = 0
      scoreWindow.document.querySelector("#ddlxn").selectedIndex = 0
      scoreWindow.document.querySelector("#btnCx").click()

      setTimeout(() => {
        const scoreTable = scoreWindow.document.querySelector("#DataGrid1 > tbody");
        [...scoreTable.rows].slice(1).forEach((row) => {
          const code = row.cells[2].innerHTML
          const score = row.cells[11].innerHTML
          scores.set(code, score)
        })
        sessionStorage.setItem('hasRead', true)
        scoreWindow.close()
        console.log(scores)
        resolve(scores)
      }, 1000)
    }
  })
}

const addReadButton = () => {
  const readScoreButton = document.createElement("input")
  readScoreButton.id = "ReadButton"
  readScoreButton.type = "button"
  readScoreButton.className = "button"
  readScoreButton.value = "读取成绩"
  readScoreButton.onclick = readScore

  const otherButton = document.querySelector("#Button1")
  otherButton.parentNode.appendChild(readScoreButton)
}

const writeScores = () => {
  let hasRead = sessionStorage.getItem('hasRead')
  const planTable = document.querySelector('#DBGrid');
  [...planTable.rows].slice(1, -1).forEach(row => {
    row.cells[16].innerHTML = scores.get(row.cells[0].innerHTML) || (hasRead ? "未读取到成绩" : "请点击 读取成绩")
  })
}

function main() {
  if (
    document.getElementById("HyperLink1") &&
    document.getElementById("HyperLink1").innerText == "查看培养计划说明"
  ) {
    if (!document.getElementById("ReadButton")) {
      addReadButton()
    } else {
      writeScores()
    }
  }
}
main()
setInterval(main, 1000)