Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name eHázi - Tag emlékeztető
- // @namespace VF@eHazi
- // @description Segít megjegyezni az emlékezetes viselkedésű tagokat
- // @match https://ehazi.hu/*
- // @version 0.0
- // @grant GM.listValues
- // @grant GM.getValue
- // @grant GM.setValue
- // @grant GM.deleteValue
- // @grant GM.registerMenuCommand
- // ==/UserScript==
- let stilus = document.createElement('style')
- stilus.textContent = `
- *[data-emlekezteto]::after {
- content: "\\f094";
- color: darkorange;
- font-family: FontAwesome;
- background-image: radial-gradient(yellow, transparent .5em);
- }
- `
- document.head.appendChild(stilus)
- let emlekeztetoTerkep = []
- GM.listValues().then(ertek => {
- emlekeztetoTerkep = new Map(ertek.map(egy => [egy]))
- let tagLista = document.querySelectorAll('*[onclick*="openModalShowProfileSimple"]')
- for (let tag of tagLista) {
- let talalat = tag.getAttribute('onclick').match(/\d+/)
- if (talalat && emlekeztetoTerkep.has(talalat[0])) {
- let vaskos = tag.querySelector('strong')
- ;(vaskos ?? tag).dataset.emlekezteto = true
- ;(vaskos ?? tag).title = '⏳'
- GM.getValue(talalat[0]).then(ertek => {
- emlekeztetoTerkep.set(talalat[0], ertek)
- ;(vaskos ?? tag).title = ertek.slice(25)
- })
- }
- }
- let szkript = document.createElement('script')
- szkript.textContent = `let emlekeztetoLista = ${ JSON.stringify(Array.from(emlekeztetoTerkep.keys())) }`
- document.head.appendChild(szkript)
- document.head.removeChild(szkript)
- })
- let parbeszed = document.getElementById('w3-show-profile-div')
- let ful = document.createElement('li')
- let link = document.createElement('a')
- link.href = '#'
- link.textContent = 'Emlékeztető'
- link.id = 'us-emlekezteto'
- link.className = '__show_profile_link'
- let szam = document.createElement('span')
- szam.id = '__profile_emlekezteto_count'
- szam.className = 'w3-badge w3-right w3-small w3-green'
- link.appendChild(szam)
- ful.appendChild(link)
- parbeszed.querySelector('ul.w3-navbar').appendChild(ful)
- let tartalom = document.createElement('div')
- tartalom.id = '__show_profile_div_emlekezteto'
- tartalom.className = '__show_profile_div'
- tartalom.style.display = 'none'
- let urlap = document.createElement('form')
- urlap.id = 'emlekeztetoForm'
- urlap.className = 'w3-container w3-card-4'
- tartalom.appendChild(urlap)
- let div = document.createElement('div')
- div.className = 'w3-section'
- urlap.appendChild(div)
- let kelt = document.createElement('span')
- kelt.className = 'w3-right'
- div.appendChild(kelt)
- let cimke = document.createElement('label')
- cimke.htmlFor = 'us-emlekezteto-szoveg'
- cimke.textContent = 'Emlékeztető'
- div.appendChild(cimke)
- let szoveg = document.createElement('textarea')
- szoveg.id = 'us-emlekezteto-szoveg'
- szoveg.className = 'w3-input w3-border w3-margin-bottom'
- szoveg.style.minHeight = '80px'
- div.appendChild(szoveg)
- let gomb = document.createElement('button')
- gomb.type = 'button'
- gomb.className = 'w3-btn w3-theme-d2 w3-padding'
- gomb.style.width = '128px'
- gomb.textContent = 'Mentés'
- gomb.addEventListener('click', emlekeztetoMentes)
- div.appendChild(gomb)
- parbeszed.querySelector('ul.w3-navbar').parentNode.insertBefore(tartalom, parbeszed.querySelector('div.__show_profile_div'))
- let megfigyelo = new MutationObserver(parbeszedLathatosag)
- megfigyelo.observe(parbeszed, {attributes: true, attributeFilter: ['style']})
- GM.registerMenuCommand('eHázi - Tag emlékeztető - Teljes lista', teljesLista, "h");
- function parbeszedLathatosag(mutationList, observer)
- {
- if (parbeszed.style.display != 'block')
- return
- szoveg.value = '⏳'
- kelt.textContent = null
- szam.textContent = null
- let azonosito = document.getElementById('__show_profile_id')
- if (! azonosito)
- return alert('HIBA: nem találom a tag azonosítóját!')
- if (emlekeztetoTerkep.has(azonosito.textContent)) {
- let ertek = emlekeztetoTerkep.get(azonosito.textContent)
- if (ertek) {
- szoveg.value = ertek.slice(25)
- kelt.textContent = ertek.slice(0, 24)
- } else {
- GM.getValue(azonosito.textContent).then(ertek => {
- emlekeztetoTerkep.set(azonosito.textContent, ertek)
- szoveg.value = ertek.slice(25)
- kelt.textContent = ertek.slice(0, 24)
- })
- }
- szam.textContent = 1
- } else {
- szoveg.value = null
- }
- }
- function emlekeztetoMentes()
- {
- let azonosito = document.getElementById('__show_profile_id')
- if (! azonosito)
- return alert('HIBA: nem találom a tag azonosítóját!')
- let emlekezteto = szoveg.value.trim()
- if (emlekezteto) {
- let most = new Date().toISOString()
- GM.setValue(azonosito.textContent, most + ' ' + emlekezteto)
- szam.textContent = 1
- emlekeztetoTerkep.set(azonosito.textContent, most + ' ' + emlekezteto)
- } else {
- GM.deleteValue(azonosito.textContent)
- szam.textContent = null
- kelt.textContent = null
- emlekeztetoTerkep.delete(azonosito.textContent)
- }
- let tagLista = document.querySelectorAll('*[onclick*="openModalShowProfileSimple"]')
- for (let tag of tagLista) {
- let talalat = tag.getAttribute('onclick').match(/\d+/)
- if (talalat && talalat[0] == azonosito.textContent) {
- let vaskos = tag.querySelector('strong')
- if (emlekezteto) {
- ;(vaskos ?? tag).dataset.emlekezteto = true
- ;(vaskos ?? tag).title = emlekezteto
- } else {
- delete (vaskos ?? tag).dataset.emlekezteto
- ;(vaskos ?? tag).title = null
- }
- }
- }
- let szkript = document.createElement('script')
- szkript.textContent = `emlekeztetoLista = ${ JSON.stringify(Array.from(emlekeztetoTerkep.keys())) }`
- document.head.appendChild(szkript)
- document.head.removeChild(szkript)
- }
- function teljesLista()
- {
- let tablazat = []
- let osszesen = emlekeztetoTerkep.size, folyamatban = 0
- for (let emlekezteto of emlekeztetoTerkep.entries()) {
- osszesen--
- if (emlekezteto[1]) {
- tablazat.push({'Azonosító': emlekezteto[0], 'Dátum': emlekezteto[1].slice(0, 24), 'Emlékeztető': emlekezteto[1].slice(25)})
- } else {
- folyamatban++
- GM.getValue(emlekezteto[0]).then(ertek => {
- emlekeztetoTerkep.set(emlekezteto[0], ertek)
- tablazat.push({'Azonosító': emlekezteto[0], 'Dátum': ertek.slice(0, 24), 'Emlékeztető': ertek.slice(25)})
- if (! osszesen && ! --folyamatban)
- console.table(tablazat)
- })
- }
- }
- }
- let szkript = document.createElement('script')
- szkript.textContent = `
- document.getElementById('us-emlekezteto').addEventListener('click', esemeny => { esemeny.preventDefault(); openShowProfileTab(esemeny, 'emlekezteto') })
- function emlekeztetoJeloles(elem)
- {
- let tarto = document.getElementById(elem)
- if (! tarto)
- return
- let tagLista = tarto.querySelectorAll('*[onclick*="openModalShowProfileSimple"]')
- for (let tag of tagLista) {
- let talalat = tag.getAttribute('onclick').match(/\\d+/)
- if (talalat && emlekeztetoLista.includes(talalat[0])) {
- let vaskos = tag.querySelector('strong')
- ;(vaskos ?? tag).dataset.emlekezteto = true
- }
- }
- }
- $(document).ajaxSuccess((event, jqXHR, ajaxOptions, data) => {
- if (ajaxOptions.type == 'GET' && ajaxOptions.url.startsWith('?page='))
- emlekeztetoJeloles('__question_page')
- if (ajaxOptions.type == 'POST' && ajaxOptions.url == 'https://ehazi.hu/toplist/ajax/sidebar')
- emlekeztetoJeloles('sidebarToplistUl')
- })
- `
- document.head.appendChild(szkript)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement