Torn - Hide Crimes

desc

  1. // ==UserScript==
  2. // @name Torn - Hide Crimes
  3. // @namespace somenamespace
  4. // @version 0.4
  5. // @description desc
  6. // @author tos
  7. // @match *.torn.com/crimes.php
  8. // @grant GM_addStyle
  9. // @run-at document-start
  10. // ==/UserScript==
  11.  
  12. GM_addStyle(`
  13. .hide_this_crime {
  14. color: #858585;
  15. cursor: pointer;
  16. padding: 5px;
  17. }
  18. .unhide_all_crimes {
  19. color: #069;
  20. cursor: pointer;
  21. float: right;
  22. padding: 5px;
  23. margin: 10px;
  24. }
  25. `)
  26. let hidden_crimes = JSON.parse(localStorage.getItem('torn_hidden_crime')) || {}
  27.  
  28. const addCrimeFilters = () => {
  29. const unhide_all = document.createElement('SPAN')
  30. unhide_all.className = 'unhide_all_crimes'
  31. unhide_all.innerText = '[show all]'
  32. unhide_all.onclick = () => {
  33. const crime_list = document.querySelector('.specials-cont')
  34. for (const li of crime_list.children) {
  35. const crime = li.querySelector('.radio-css').id
  36. if (hidden_crimes[crime]) {
  37. li.style.display = 'list-item'
  38. hidden_crimes[crime] = false
  39. localStorage.setItem('torn_hidden_crime', JSON.stringify(hidden_crimes))
  40. }
  41. }
  42. }
  43. document.querySelector('form[name=crimes]').append(unhide_all)
  44. let crimes_ul = document.querySelector('.specials-cont')
  45. for (const li of crimes_ul.children) {
  46. const crime = li.querySelector('.radio-css').id
  47. if (hidden_crimes[crime]) li.style.display = 'none'
  48. const nerve_wrap = li.querySelector('.points')
  49. const li_hide = document.createElement('SPAN')
  50. li_hide.className = 'hide_this_crime'
  51. li_hide.innerText = '[hide]'
  52. li_hide.onclick = (e) => {
  53. e.stopImmediatePropagation()
  54. li.style.display = 'none'
  55. hidden_crimes[crime] = true
  56. localStorage.setItem('torn_hidden_crime', JSON.stringify(hidden_crimes))
  57. }
  58. nerve_wrap.append(li_hide)
  59. }
  60. }
  61. //addCrimeFilters()
  62.  
  63. const observer = new MutationObserver((mutations) => {
  64. for (const mutation of mutations) {
  65. for (const node of mutation.addedNodes) {
  66. if (node.className && node.className === 'specials-cont-wrap bottom-round cont-gray') addCrimeFilters()
  67. }
  68. }
  69. });
  70.  
  71. observer.observe(document, { subtree: true, childList: true })