您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
ユニットの達成状況を追加
当前为
// ==UserScript== // @name UnipaForFI // @namespace https://twitter.com/akameco // @description ユニットの達成状況を追加 // @include https://portal.sa.dendai.ac.jp/up/faces/up/* // @version 1 // @grant none // ==/UserScript== (function ($) { // 実行ページチェック var page_title = $('.titleAreaL').html(); if (page_title != '成績照会') { console.log('skip Unit script'); return; } console.log('load Unit script'); var units = { cg: { complete: 0, count: 0, now: 0, list: [ 'CGモデリングおよび演習', 'CGレンダリングおよび演習', '形状処理および演習', 'コンピュータアニメーションおよび演習' ] }, vs: { complete: 0, count: 0, now: 0, list: [ '画像処理', '画像処理演習', '音声・音響情報処理', 'コンピュータ音楽作品制作演習', 'バーチャルリアリティ', '音声・音響情報処理' ] }, mi: { complete: 0, count: 0, now: 0, list: [ 'ヒューマンインタラクション及び演習', '人間情報システムおよび演習', 'メディア情報学', 'インタラクションデザイン' ] }, wi: { complete: 0, count: 0, now: 0, list: [ 'サーバ設計論', '情報アクセスと知的処理', 'サーバプログラミング演習', 'Web情報システム演習', 'データベースプログラミング演習' ] }, sn: { complete: 0, count: 0, now: 0, list: [ '情報セキュリティの基礎と暗号技術', 'ネットワークプログラミング', 'ネットワークプログラミング演習', 'ネットワークセキュリティおよび演習' ] }, st: { complete: 0, count: 0, now: 0, list: [ 'サーバ設計論', 'メディア情報学', 'サーバプログラミング演習', 'ソフトウェア設計', '情報システム論', 'ソフトウェア分析・モデリング' ] } }; // 科目を取得 var myUnitList = $("td .tdKamokuList"); // 評価を取得 var hyokaList = $("td .tdHyokaList"); // 単位を習得 var taniList = $("td .tdTaniList"); // 単位認定可能な評価範囲 var hyoka = ["S","A","B","C","RS","RA","RB","RC","RN"]; for (var unitKey in units) { var unit = units[unitKey]; var unitList = unit.list; unitSize = myUnitList.size(); for (var j=0; j < unitSize; ++j) { var myUnitText = myUnitList[j].textContent; var myHyokaText = hyokaList[j].textContent; var i = unitList.indexOf(myUnitText); if (i != -1) { // 単位数 var n = taniList[j].textContent ? parseInt(taniList[j].textContent) : 0; // 合計単位 unit.count += n; // 取得済み単位 if (hyoka.indexOf(myHyokaText) >= 0){ unit.complete += n; } } } unit.now = unit.count - unit.complete; } // 要素の追加 var table = $("table.outline tbody")[0]; // unipaは本当に最悪なのでtdを追加しなくちゃレイアウトが崩れる var titleText = "<tr><td></td><td class='subTitleArea'>ユニット達成度</td><td></td><tr>"; var tablePrefix = '<tr><td></td><td>'; var tableText = "<table class='singleTableLine'>"; var tableParams = [ ['ユニット分類', 'unitKey'], ['履修済単位', 'complete'], ['履修中単位', 'now'], ['ユニット合計', 'count'] ]; for (var i = 0; i < tableParams.length; i++) { tableText += "<tr>"; tableText += "<th class='headTaniShutoku'>" + tableParams[i][0]; for (var unitKey in units) { tableText += "<td class='dataTaniShutokuKamoku'>"; if (i == 0) { tableText += unitKey; } else { tableText += units[unitKey][tableParams[i][1]]; } tableText += '</td>'; } } tableText += "</table>"; var tableSuffix = '</td><td></td></tr>'; var link = "<tr><td></td><td><a href='http://www.im.dendai.ac.jp/curriculum.html' target='_blank'>ユニット詳細(学科ページ)</a></td></tr>" $(table).append(titleText); $(table).append(tablePrefix + tableText + tableSuffix); $(table).append(link); // 動作確認 var check = function () { for(var unitKey in units){ var unit = units[unitKey]; var unitList = unit["list"]; var unitComplete = unit["complete"]; var unitNow = unit["now"]; console.log(unitList); console.log("履修済み" + unitComplete); console.log("履修中" + unitNow); } }; })(jQuery);