AtCoderPerformanceColorizer

Colorize performance values in AtCoder's gradebook.

От 22.12.2018. Виж последната версия.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==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);
    });
});