notifimgon=''; notifimgoff=''; function shidenotifs() { var notifc=document.getElementById('notifc'); var ctrli=document.getElementById('bell'); if (notifc.style.display=='block') { notifc.style.display='none'; ctrli.src=notifimgoff; ctrli.title='Mostra le notifiche'; } else { notifc.style.display='block'; ctrli.src=notifimgon; ctrli.title='Nascondi le notifiche'; } } function markread(notif) { let xhr=new XMLHttpRequest(); xhr.open('GET','notifsh.php?act=markread&id='+notif.id.replace(/^notif-([0-9]+)$/,'$1')); xhr.responseType='json'; xhr.send(); xhr.onload=function() { let jarr=xhr.response; if (jarr['hmunseen']==0) { notifimgon='imgs/bell_on.svg'; notifimgoff='imgs/bell_off.svg'; bell.src=notifimgon; } if (notif.classList.contains("notifunseen")){ // Notifica nella navbar notif.className='notifseen'; } else if (notif.classList.contains("unseen")) { // Notifica nella pagina di gestione notifiche notif.classList.remove("unseen"); notif.classList.add("seen"); } }; xhr.onerror=function() { alert('La richiesta è fallita.'); }; } function markdeleted(notif) { let xhr = new XMLHttpRequest(); xhr.open('GET', 'notifsh.php?act=delete&id=' + notif.id.replace(/^notif-([0-9]+)$/, '$1')); xhr.responseType = 'json'; xhr.send(); xhr.onload = function () { if (xhr.response['deleted']) { notif.classList.add("deleted"); } else { alert("Il server non ha potuto cancellare la notifica '" + notif.text + "'"); } }; xhr.onerror = function () { alert('La richiesta è fallita.'); }; } function getAliveNotifs(){ let notifs = Array.from(document.querySelectorAll("div.notif")); return notifs.filter(n => { let classes = Array.from(n.classList); return !(classes.includes("deleted") || classes.includes("filtered")); }) } function getAliveCheckboxes() { let notifs = getAliveNotifs(); return notifs.map(n => n.querySelector("input.seen-checkbox")) } function readSelected() { let selected = getSelectedNotifs() let request = { "act": "massread", "ids": selected.map(div => div.id.replace(/^notif-([0-9]+)$/, '$1')) } let xhr = new XMLHttpRequest(); xhr.open('POST', 'notifs.php'); xhr.setRequestHeader('Content-type','application/json'); xhr.responseType = 'json'; xhr.send(JSON.stringify(request)); xhr.onload = function () { if (xhr.response['done']) { selected.forEach(notif => { notif.classList.remove("unseen"); notif.classList.add("seen"); }) } else { alert("Il server non ha potuto completare la richiesta:\n" + xhr.response["error"]); } }; xhr.onerror = function () { alert('La richiesta è fallita.'); }; } function deleteSelected() { let selected = getSelectedNotifs() let request = { "act": "massdelete", "ids": selected.map(div => div.id.replace(/^notif-([0-9]+)$/, '$1')) } let xhr = new XMLHttpRequest(); xhr.open('POST', 'notifs.php'); xhr.setRequestHeader('Content-type','application/json'); xhr.responseType = 'json'; xhr.send(JSON.stringify(request)); xhr.onload = function () { if (xhr.response['done']) { selected.forEach(notif => notif.classList.add("deleted")); } else { alert("Il server non ha potuto completare la richiesta:\n" + xhr.response["error"]); } }; xhr.onerror = function () { alert('La richiesta è fallita.'); }; } function getSelectedNotifs() { let notifs = getAliveNotifs(); return notifs.filter(notif => notif.querySelector("input.seen-checkbox").checked) } lmt =; chunk=0; end=false; loading=false; function morenotifs() { if (!loading && !end && notifs.scrollHeight-notifs.clientHeight-notifs.scrollTop<20) { loading=true; chunk++; let xhr=new XMLHttpRequest(); xhr.open('GET','notifsh.php?act=loadchunk&chunk='+chunk); xhr.responseType='json'; xhr.send(); xhr.onload=function() { let jarr=xhr.response; //console.log(jarr); let i=0, html=''; for (i=0; i) end=true; loading=false; }; xhr.onerror=function() { alert('La richiesta è fallita.'); }; } } loadingupd=false; function updnotifs() { if (!loadingupd) { loadingupd=true; let xhr=new XMLHttpRequest(); xhr.open('GET','notifsh.php?act=loadnew&lmt='+lmt); xhr.responseType='json'; xhr.send(); xhr.onload=function() { let jarr=xhr.response; //console.log(jarr); let i=0, html=''; for (i=0; i