Advertisement
VF-

eHázi - Vakáció emlékeztető

VF-
Dec 22nd, 2022 (edited)
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 5.37 KB | Source Code | 0 0
  1. // ==UserScript==
  2. // @name        eHázi - Vakáció emlékeztető
  3. // @namespace   VF@eHazi
  4. // @description Kijelzi, hogy milyen szakaszában van a tanév
  5. // @include     https://ehazi.hu/*
  6. // @exclude     https://ehazi.hu/gallery/*
  7. // @exclude     https://ehazi.hu/uploads/*
  8. // @version     0.0
  9. // @grant       GM.getValue
  10. // @grant       GM.setValue
  11. // ==/UserScript==
  12.  
  13. let esemenyLista = [
  14.   '2022-09-01',
  15.   '2022-12-22 Téli szünet',
  16.   '2023-01-09',
  17.   '2023-04-06 Tavaszi szünet',
  18.   '2023-04-12',
  19.   '2023-06-17 Nyári szünet',
  20.   '2023-09-01',
  21. ]
  22.  
  23. GM.getValue('esemeny').then(ertek => {
  24.   if (ertek) {
  25.     let json = JSON.parse(ertek)
  26.     if (json instanceof Array && json.length) {
  27.       esemenyLista = json
  28.     }
  29.   }
  30.   esemenyFelsorolas()
  31. })
  32.  
  33. let menu = document.getElementById('__menu_ul')
  34. if (! menu) {
  35.   return
  36. }
  37.  
  38. let rovid = document.createElement('li')
  39. rovid.className = 'w3-opennav2 w3-left w3-dropdown-hover'
  40.  
  41. let menuLink = document.createElement('a')
  42. menuLink.title = 'Tanév'
  43. menuLink.className = 'w3-padding-large w3-hover-white'
  44. rovid.appendChild(menuLink)
  45.  
  46. let menuIkon = document.createElement('i')
  47. menuIkon.className = 'fa fa-calendar'
  48. menuLink.appendChild(menuIkon)
  49.  
  50. let lenyilo = document.createElement('div')
  51. lenyilo.className = 'w3-dropdown-content w3-white w3-card-4'
  52. lenyilo.style.fontSize = '13px'
  53. lenyilo.style.zIndex = 1000
  54. rovid.appendChild(lenyilo)
  55.  
  56. let listaTarto = document.createElement('div')
  57. lenyilo.appendChild(listaTarto)
  58.  
  59. let sor = document.createElement('div')
  60. sor.title = ''
  61.  
  62. let link = document.createElement('a')
  63. sor.appendChild(link)
  64.  
  65. let hozzaadas = document.createElement('i')
  66. hozzaadas.title = 'Hozzáadás'
  67. hozzaadas.className = 'fa fa-plus fa-fw w3-text-green w3-hover-text-theme w3-large w3-right'
  68. hozzaadas.addEventListener('click', esemenyHozzaadas)
  69. link.appendChild(hozzaadas)
  70.  
  71. let semmi = document.createElement('i')
  72. semmi.className = 'fa fa-fw w3-margin-right'
  73. link.appendChild(semmi)
  74.  
  75. link.appendChild(document.createTextNode('Új esemény…'))
  76.    
  77. lenyilo.appendChild(sor)
  78.  
  79. menu.appendChild(rovid)
  80.  
  81. function esemenyFelsorolas()
  82. {
  83.   listaTarto.textContent = ''
  84.   menuLink.title = 'Tanév'
  85.   menuIkon.className = 'fa fa-calendar'
  86.  
  87.   let ma = new Date().toISOString().slice(0, 10)
  88.   let jelen = esemenyLista.reduce((eredmeny, esemeny) => esemeny.slice(0, 10) <= ma ? esemeny : eredmeny, null)
  89.  
  90.   let jelenPozicio = ! jelen
  91.   esemenyLista.forEach(esemeny => {
  92.     let tanitas = /^\d{4}-\d{2}-\d{2}$/.test(esemeny)
  93.  
  94.     let sor = document.createElement('div')
  95.  
  96.     let link = document.createElement('a')
  97.     sor.title = ''
  98.     sor.appendChild(link)
  99.  
  100.     let torles = document.createElement('i')
  101.     torles.title = 'Törlés'
  102.     torles.className = 'fa fa-remove fa-fw w3-text-red w3-hover-text-theme w3-large w3-right'
  103.     torles.addEventListener('click', esemenyTorles)
  104.     link.appendChild(torles)
  105.  
  106.     let ikon = document.createElement('i')
  107.     ikon.title = tanitas ? 'Tanulás' : 'Felejtés'
  108.     ikon.className = `fa fa-${ tanitas ? 'graduation-cap' : 'beer' } fa-fw w3-margin-right`
  109.     link.appendChild(ikon)
  110.  
  111.     link.appendChild(document.createTextNode(esemeny))
  112.  
  113.     if (esemeny == jelen) {
  114.       link.appendChild(document.createElement('br'))
  115.  
  116.       let semmi = document.createElement('i')
  117.       semmi.className = 'fa fa-fw w3-margin-right'
  118.       link.appendChild(semmi)
  119.  
  120.       let megjegyzes = document.createElement('strong')
  121.       megjegyzes.textContent = 'Jelenleg'
  122.       link.appendChild(megjegyzes)
  123.  
  124.       menuLink.title = tanitas ? 'Tanulás' : 'Felejtés'
  125.       menuIkon.className = `fa fa-${ tanitas ? 'graduation-cap' : 'beer' }`
  126.  
  127.       jelenPozicio = true
  128.     } else if (jelenPozicio) {
  129.       link.appendChild(document.createElement('br'))
  130.  
  131.       let semmi = document.createElement('i')
  132.       semmi.className = 'fa fa-fw w3-margin-right'
  133.       link.appendChild(semmi)
  134.  
  135.       let megjegyzes = document.createElement('strong')
  136.       megjegyzes.textContent = Math.round((new Date(esemeny.slice(0, 10)).getTime() - new Date(ma).getTime()) / (24 * 60 * 60 * 1000)) + ' nap múlva'
  137.       link.appendChild(megjegyzes)
  138.  
  139.       jelenPozicio = false
  140.     }
  141.  
  142.     let vonal = document.createElement('hr')
  143.     vonal.className = 'w3-clear'
  144.     vonal.style.margin = '1px 0'
  145.     sor.appendChild(vonal)
  146.  
  147.     listaTarto.appendChild(sor)
  148.   })
  149. }
  150.  
  151. function esemenyHozzaadas()
  152. {
  153.   let adat = prompt('Esemény hozzáadás\nFormátum: éééé-hh-nn [vakáció név]')
  154.   if (! adat) {
  155.     return
  156.   }
  157.  
  158.   let resz = adat.match(/^\d{4}-\d{2}-\d{2}/)
  159.   if (! resz) {
  160.     alert('Esemény hozzáadás hiba\nHelytelen esemény')
  161.     return
  162.   }
  163.  
  164.   if (isNaN(new Date(resz[0]))) {
  165.     alert('Esemény hozzáadás hiba\nHelytelen dátum')
  166.     return
  167.   }
  168.  
  169.   if (esemenyLista.find(esemeny => esemeny.startsWith(resz[0]))) {
  170.     alert('Esemény hozzáadás hiba\nMár létező dátum')
  171.     return
  172.   }
  173.  
  174.   esemenyLista.push(adat)
  175.   esemenyLista.sort()
  176.   GM.setValue('esemeny', JSON.stringify(esemenyLista))
  177.   esemenyFelsorolas()
  178. }
  179.  
  180. function esemenyTorles(esemeny)
  181. {
  182.   let adat = esemeny.target.parentNode.textContent
  183.   if (! confirm('Esemény törlés\nBiztos töröljük a „' + adat + '” eseményt?')) {
  184.     return
  185.   }
  186.  
  187.   esemenyLista = esemenyLista.filter(esemeny => esemeny != adat)
  188.   GM.setValue('esemeny', JSON.stringify(esemenyLista))
  189.   esemenyFelsorolas()
  190. }
  191.  
Tags: userscript
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement