AtCoder Error Colorizer

AtCoder においてジャッジシステムが返す 非AC 状態のうち WA 以外の 6 つの状態 [TLE, RE, CE, MLE, OLE, IE] の背景色を変更します。

  1. // ==UserScript==
  2. // @name AtCoder Error Colorizer
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description AtCoder においてジャッジシステムが返す 非AC 状態のうち WA 以外の 6 つの状態 [TLE, RE, CE, MLE, OLE, IE] の背景色を変更します。
  6. // @author iiko11
  7. // @grant GM_addStyle
  8. // @match https://atcoder.jp/contests/*/submissions*
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12.  
  13.  
  14. //自分好みの色にする方法
  15. // 1. 【https://www.colordic.org/】にアクセスしてお気に入りの色を選んでください
  16. // 2. GM_addStyle('.label-XXXX { background-color: YYYY; }') の YYYY 部分を選んだ色に書き換えてください。
  17.  
  18. GM_addStyle('.label-TLE { background-color: hotpink; }');
  19. GM_addStyle('.label-RE { background-color: darkviolet; }');
  20. GM_addStyle('.label-CE { background-color: dodgerblue; }');
  21. GM_addStyle('.label-MLE { background-color: maroon; }');
  22. GM_addStyle('.label-OLE { background-color: salmon; }');
  23. GM_addStyle('.label-IE { background-color: darkslategray; }');
  24.  
  25. function colorizeError(){
  26. const tips=document.getElementsByClassName('label');
  27. for(let e of tips){
  28. if(e.innerText.match(/TLE/)){
  29. e.classList.remove('label-warning');
  30. e.classList.add('label-TLE');
  31. }
  32. else if(e.innerText.match(/RE/)){
  33. e.classList.remove('label-warning');
  34. e.classList.add('label-RE');
  35. }
  36. else if(e.innerText.match(/CE/)){
  37. e.classList.remove('label-warning');
  38. e.classList.add('label-CE');
  39. }
  40. else if(e.innerText.match(/MLE/)){
  41. e.classList.remove('label-warning');
  42. e.classList.add('label-MLE');
  43. }
  44. else if(e.innerText.match(/OLE/)){
  45. e.classList.remove('label-warning');
  46. e.classList.add('label-OLE');
  47. }
  48. else if(e.innerText.match(/IE/)){
  49. e.classList.remove('label-warning');
  50. e.classList.add('label-IE');
  51. }
  52. }
  53. }
  54. (function() {
  55. 'use strict';
  56. const target = document.getElementsByTagName('tbody')[0];
  57. const observer = new MutationObserver(function (mutations) {
  58. for(let i in mutations){
  59. colorizeError();
  60. }
  61. });
  62. colorizeError();
  63. observer.observe(target, {
  64. characterData: true,
  65. childList: true,
  66. subtree: true
  67. });
  68. })();