Greasy Fork is available in English.

AtCoderPerformanceColorizer

Colorize performance values in AtCoder's gradebook.

Ekde 2018/12/22. Vidu La ĝisdata versio.

  1. // ==UserScript==
  2. // @name AtCoderPerformanceColorizer
  3. // @namespace https://satanic0258.github.io/
  4. // @version 1.0.1
  5. // @description Colorize performance values in AtCoder's gradebook.
  6. // @author satanic0258
  7. // @include https://atcoder.jp/users/*/history
  8. // @grant none
  9. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
  10. // ==/UserScript==
  11.  
  12. /*jshint esversion: 6 */
  13.  
  14. $(function() {
  15. 'use strict';
  16.  
  17. // -------------->8---------------------------->8--------------
  18.  
  19. // 色づけモードには以下の数値を指定します
  20. // - 0 : なし
  21. // - 1 : 文字を色づけ
  22. // - 2 : 背景を色づけ
  23. // - それ以外 : デフォルト設定
  24.  
  25. // パフォーマンス値の色づけモード
  26. const perfColorizeMode = 2;
  27.  
  28. // レート値の色づけモード
  29. const rateColorizeMode = 2;
  30.  
  31. // --------------8<----------------------------8<--------------
  32.  
  33. // 読み込み元と整合性を取る
  34. // https://wiki.greasespot.net/Third-Party_Libraries
  35. this.$ = this.jQuery = jQuery.noConflict(true);
  36.  
  37. // レート値をカラーコードに変換 (背景色で使用)
  38. function convertRateToColorCode(rate){
  39. if(rate >= 2800) return '#FFB2B2';
  40. if(rate >= 2400) return '#FFD9B2';
  41. if(rate >= 2000) return '#ECECB2';
  42. if(rate >= 1600) return '#B2B2FF';
  43. if(rate >= 1200) return '#B2ECEC';
  44. if(rate >= 800) return '#B2D9B2';
  45. if(rate >= 400) return '#D9C5B2';
  46. return '#D9D9D9';
  47. }
  48.  
  49. // レート値を色クラス名に変換 (文字色で使用)
  50. function convertRateToColorClass(rate){
  51. if(rate >= 2800) return 'user-red';
  52. if(rate >= 2400) return 'user-orange';
  53. if(rate >= 2000) return 'user-yellow';
  54. if(rate >= 1600) return 'user-blue';
  55. if(rate >= 1200) return 'user-cyan';
  56. if(rate >= 800) return 'user-green';
  57. if(rate >= 400) return 'user-brown';
  58. return 'user-gray';
  59. }
  60.  
  61. // セルをmodeで色づけ
  62. function colorizeCell(cell, mode){
  63. const value = cell.text();
  64. console.log(cell);
  65. if(isNaN(value)) return;
  66.  
  67. if (mode == 0) { // なし
  68. cell.text(value);
  69. }
  70. else if (mode == 1) { // 文字を色づけ
  71. cell.text('');
  72. cell.append('<span class="' + convertRateToColorClass(value) + '">' + value + '</span>');
  73. }
  74. else if (mode == 2) { // 背景を色づけ
  75. cell.text(value);
  76. cell.attr('style', 'background-color:' + convertRateToColorCode(value) + ';>');
  77. }
  78. }
  79.  
  80. $('#history').find('tbody').find('tr').each(function(i, contestInfo) {
  81. const tds = $(contestInfo).find('td');
  82. colorizeCell($(tds[3]), perfColorizeMode);
  83. colorizeCell($(tds[4]), rateColorizeMode);
  84. });
  85. });