Hide GL updates

Позволяет скрыть существ для обмена на странице Гильдии Лидеров

目前为 2025-04-11 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Hide GL updates
  3. // @author _Vesbat_
  4. // @namespace _Vesbat_
  5. // @description Позволяет скрыть существ для обмена на странице Гильдии Лидеров
  6. // @version 0.2
  7. // @include https://www.heroeswm.ru/leader_army_exchange.php*
  8. // @grant GM_deleteValue
  9. // @grant GM_getValue
  10. // @grant GM_setValue
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14.  
  15. (function() {
  16. 'use strict';
  17.  
  18. function isCellAvailableForExchange(cell){
  19. const elements = cell.getElementsByTagName('*');
  20. var result = false;
  21. var id = "";
  22. var isFirstRow = false;
  23.  
  24. if (cell.textContent === "Суммарное лидерство"){
  25. isFirstRow = true;
  26. }
  27.  
  28. for (let i = 0; i < elements.length; i++) {
  29. const el = elements[i];
  30. if (el.value){
  31. id = id + el.value;
  32. }
  33. if (el.value && el.value.includes("Обменять")) {
  34. result = true;
  35. break;
  36. }
  37. }
  38.  
  39. return {
  40. result: result,
  41. id: id,
  42. isFirstRow: isFirstRow
  43. }
  44. }
  45.  
  46. function isRowAvailableForExchange(row){
  47. var result = false;
  48. var isFirstRow = false;
  49. var id = "";
  50. var cells = row.querySelectorAll('td');
  51. for (let i = 0; i < cells.length; i++){
  52. const cell = cells[i];
  53. const res = isCellAvailableForExchange(cell);
  54. if (res.result) {
  55. result = true
  56. id = res.id
  57. }
  58. isFirstRow = isFirstRow || res.isFirstRow
  59. }
  60. return {
  61. result: result,
  62. id: id,
  63. isFirstRow: isFirstRow
  64. }
  65. }
  66.  
  67. function addUpdateForHideList(updateId){
  68. const rowsForHideOld = GM_getValue("rows_for_hide")
  69. rowsForHideOld.push(updateId);
  70. GM_setValue("rows_for_hide", rowsForHideOld);
  71. }
  72.  
  73. var rowsForHideRaw = GM_getValue("rows_for_hide");
  74.  
  75. if (rowsForHideRaw === undefined){
  76. console.log("rowsForHideRaw is undefined");
  77. GM_setValue("rows_for_hide", []);
  78. rowsForHideRaw = [];
  79. }
  80.  
  81. var rows = document.querySelectorAll('table tr');
  82. var isBeforeFirstRow = true;
  83. rows.forEach(function(row) {
  84. const rowAvailableForExchange = isRowAvailableForExchange(row)
  85. const id = rowAvailableForExchange.id
  86.  
  87. if (rowsForHideRaw.includes(id)){
  88. row.style.display = 'none';
  89. } else if (rowAvailableForExchange.result){
  90. row.innerHTML += `<td class=wb align=center width=50 id="${id}"><img width="20" height="20" src="https://photo.heroeswm.ru/photo-catalog/0001802/997-4317920ft.png" style="vertical-align: middle;"></td>`;
  91. const textElement = document.getElementById(id);
  92. textElement.addEventListener('click', function() {
  93. addUpdateForHideList(id);
  94. row.style.display = 'none';
  95. });
  96.  
  97. } else if (rowAvailableForExchange.isFirstRow) {
  98. isBeforeFirstRow = false;
  99. row.innerHTML += `<td class=wb align=center width=50 height=24 id="unhide_all_updates"><img width="24" height="16" src="https://photo.heroeswm.ru/photo-catalog/0001802/998-9acec89bt.png" style="vertical-align: middle;"></td>`;
  100. const textElement = document.getElementById("unhide_all_updates");
  101. textElement.addEventListener('click', function() {
  102. GM_deleteValue("rows_for_hide");
  103. window.location.reload();
  104. });
  105. if (rowsForHideRaw.length>0) {
  106. textElement.style.display = 'visible';
  107. }
  108. else{
  109. textElement.style.display = 'none';
  110. }
  111. } else if (isBeforeFirstRow == false) {
  112. row.innerHTML += '<td class=wb align=center width=50></td>';
  113. }
  114. });
  115.  
  116.  
  117. })();