SUAI hide tasks

Добавляет чекбокс для скрытия заданий в лк гуапа

  1. // ==UserScript==
  2. // @name SUAI hide tasks
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.0
  5. // @description Добавляет чекбокс для скрытия заданий в лк гуапа
  6. // @author goodhumored
  7. // @license MIT
  8. // @match https://pro.guap.ru/inside_s
  9. // @icon https://www.google.com/s2/favicons?domain=guap.ru
  10. // @grant GM.setValue
  11. // @grant GM.getValue
  12. // @run-at document-end
  13. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
  14. // ==/UserScript==
  15.  
  16. (function asd() {
  17. 'use strict';
  18. var interval = setInterval(function() {
  19. if ($('.content').length == 1 && document.location.hash == '#tasks')
  20. onload();
  21. }, 1000);
  22.  
  23. var hidden_tasks = [];
  24. var hiding = true;
  25.  
  26. async function onload() {
  27. hidden_tasks = await GM.getValue('hidden_tasks', []);
  28. hiding = await GM.getValue('hiding', true);
  29.  
  30. $('.chb_row').remove();
  31. let row = $('.panel-body')[0].appendChild(document.createElement('div'));
  32. row.className = 'row chb_row';
  33. let cm3 = row.appendChild(document.createElement('div'));
  34. cm3.className = 'col-md-3';
  35. let fg = cm3.appendChild(document.createElement('div'));
  36. fg.className = 'form-group';
  37. let label = fg.appendChild(document.createElement('label'));
  38. label.innerText = 'Скрывать помеченные задания ';
  39. let hideC = label.appendChild(document.createElement('input'));
  40. hideC.type = 'checkbox';
  41. hideC.onchange = (event) => hide(event.target.checked);
  42. hideC.checked = hiding;
  43.  
  44. add_checkboxes();
  45.  
  46. let c = $('[name=tableTasks_length]')[0];
  47. $('[name=tableTasks_length]').change((event) => {GM.setValue('show_count', event.target.value); add_checkboxes();})
  48. c.value = await GM.getValue('show_count', 15);
  49. c.dispatchEvent(new Event('change'));
  50. }
  51. function add_checkboxes() {
  52. $('.hide_checkbox').remove();
  53. $('#tableTasks tbody tr').each(function(i, e) {
  54. let id = e.lastElementChild.firstElementChild.href.split('/').at(-1)
  55. let l = e.lastElementChild.appendChild(document.createElement('label'));
  56. l.innerText = 'Скрыть ';
  57. l.className = 'hide_checkbox';
  58. let inp = l.appendChild(document.createElement('input'));
  59. inp.type = 'checkbox';
  60. inp.setAttribute('task-id', id);
  61. if (hidden_tasks.indexOf(id) != '-1') {
  62. if (hiding)
  63. e.hidden = true;
  64. inp.checked = true;
  65. }
  66. inp.onchange = function(event) {
  67. if (event.target.checked) {
  68. hidden_tasks.push(id);
  69. if (hiding)
  70. event.target.parentElement.parentElement.parentElement.hidden = true;
  71. } else {
  72. hidden_tasks.splice(hidden_tasks.indexOf(id), 1);
  73. }
  74. GM.setValue('hidden_tasks', hidden_tasks);
  75. }
  76. });
  77. }
  78. function hide(checked) {
  79. if (checked) {
  80. $('#tableTasks tbody tr').each(function(i, e) {
  81. let id = e.lastElementChild.firstElementChild.href.split('/').at(-1);
  82. let ind = hidden_tasks.indexOf(id);
  83. if (ind != -1)
  84. e.hidden = true;
  85. });
  86. hiding = true;
  87. } else {
  88. $('tr[hidden]').each((i, e)=>{e.hidden = false});
  89. hiding = false;
  90. }
  91. GM.setValue('hiding', hiding);
  92. }
  93. })();