AtCoder Problem Buttons

問題選択を簡単に行うことができるボタンを追加します

  1. // ==UserScript==
  2. // @name AtCoder Problem Buttons
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description 問題選択を簡単に行うことができるボタンを追加します
  6. // @author Chippppp
  7. // @license MIT
  8. // @match https://atcoder.jp/contests/*/submit*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (() => {
  13. "use strict";
  14. let problemButton = document.getElementById("select-task");
  15. let buttonGroup = problemButton.parentElement;
  16. let problemButtons = [];
  17. for (let i of problemButton.children) {
  18. let button = document.createElement("button");
  19. buttonGroup.appendChild(button);
  20. button.className = "btn btn-default";
  21. button.type = "button";
  22. button.innerText = i.innerText;
  23. button.value = i.value;
  24. problemButtons.push(button);
  25. }
  26. problemButtons[0].className = "btn btn-success";
  27. for (let i of problemButtons) {
  28. i.addEventListener("click", () => {
  29. for (let button of problemButtons) button.className = "btn btn-default";
  30. i.className = "btn btn-success";
  31. problemButton.value = i.value;
  32. problemButton.dispatchEvent(new Event("change"));
  33. });
  34. if (i.innerText == problemButton.innerText) i.click();
  35. }
  36. problemButton.onchange = () => {
  37. for (let button of problemButtons) {
  38. if (button.value == problemButton.value) button.className = "btn btn-success";
  39. else button.className = "btn btn-default";
  40. }
  41. };
  42. })();