Colorize performance values in AtCoder's gradebook.
目前為
// ==UserScript==
// @name AtCoderPerformanceColorizer
// @namespace https://satanic0258.github.io/
// @version 1.0.1
// @description Colorize performance values in AtCoder's gradebook.
// @author satanic0258
// @include https://atcoder.jp/users/*/history
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// ==/UserScript==
/*jshint esversion: 6 */
$(function() {
'use strict';
// -------------->8---------------------------->8--------------
// 色づけモードには以下の数値を指定します
// - 0 : なし
// - 1 : 文字を色づけ
// - 2 : 背景を色づけ
// - それ以外 : デフォルト設定
// パフォーマンス値の色づけモード
const perfColorizeMode = 2;
// レート値の色づけモード
const rateColorizeMode = 2;
// --------------8<----------------------------8<--------------
// 読み込み元と整合性を取る
// https://wiki.greasespot.net/Third-Party_Libraries
this.$ = this.jQuery = jQuery.noConflict(true);
// レート値をカラーコードに変換 (背景色で使用)
function convertRateToColorCode(rate){
if(rate >= 2800) return '#FFB2B2';
if(rate >= 2400) return '#FFD9B2';
if(rate >= 2000) return '#ECECB2';
if(rate >= 1600) return '#B2B2FF';
if(rate >= 1200) return '#B2ECEC';
if(rate >= 800) return '#B2D9B2';
if(rate >= 400) return '#D9C5B2';
return '#D9D9D9';
}
// レート値を色クラス名に変換 (文字色で使用)
function convertRateToColorClass(rate){
if(rate >= 2800) return 'user-red';
if(rate >= 2400) return 'user-orange';
if(rate >= 2000) return 'user-yellow';
if(rate >= 1600) return 'user-blue';
if(rate >= 1200) return 'user-cyan';
if(rate >= 800) return 'user-green';
if(rate >= 400) return 'user-brown';
return 'user-gray';
}
// セルをmodeで色づけ
function colorizeCell(cell, mode){
const value = cell.text();
console.log(cell);
if(isNaN(value)) return;
if (mode == 0) { // なし
cell.text(value);
}
else if (mode == 1) { // 文字を色づけ
cell.text('');
cell.append('<span class="' + convertRateToColorClass(value) + '">' + value + '</span>');
}
else if (mode == 2) { // 背景を色づけ
cell.text(value);
cell.attr('style', 'background-color:' + convertRateToColorCode(value) + ';>');
}
}
$('#history').find('tbody').find('tr').each(function(i, contestInfo) {
const tds = $(contestInfo).find('td');
colorizeCell($(tds[3]), perfColorizeMode);
colorizeCell($(tds[4]), rateColorizeMode);
});
});