Mercurial Hosting > linkmystyle
view src/reporting.js @ 3:b016e4b7c8da default tip
add read_me
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sat, 12 Jul 2025 12:51:36 -0600 |
parents | 8f4df159f06b |
children |
line wrap: on
line source
'use strict'; (function() { if(!hasCookies) return; let hour = 60*60*1000; let day = 24*hour; let offsetFromGMT = 7*hour; let today = Math.floor((Date.now() - offsetFromGMT) / day) * day + offsetFromGMT; // today -= 28*day; let expired = today - 30*day; let owner = window.Owner; let page = window.Page; let changed = false; let values = {}; let data = localStorage && localStorage.reporting; data = data ? JSON.parse(data) : {}; for( let key in data ) { //console.log(key); if( data[key] < expired ) { //console.log(`delete ${key} ${data[key]} ${expired}`); delete data[key]; changed = true; } } function recordChange() { if( !changed || !localStorage ) return; localStorage.reporting = JSON.stringify(data); if( Object.keys(values).length > 0 ) { let url = `/report.js?owner=${encodeURIComponent(owner)}&today=${today}`; for( let type in values ) { url += `&type=${type}`; let info = values[type]; let value = info.value; let before = info.before; if( value ) url += `&${type}=${encodeURIComponent(value)}`; if( before ) url += `&${type}_before=${before}`; } ajax(url); values = {}; } changed = false; } function reportDay(type) { let key = JSON.stringify({ type:type, owner:owner }); let val = data[key]; if( !val || val < today ) { values[type] = {}; data[key] = today changed = true; } } function reportMonth(type,value) { let key = JSON.stringify({ type:type, owner:owner, value:value }); let val = data[key]; if( !val || val < today ) { let info = {}; if( value ) info.value = value; if( val ) info.before = val; values[type] = info; data[key] = today; changed = true; } } reportDay('visit'); reportMonth('monthly_visit'); reportMonth('page_view',page); let referringDomain = document.referrer; referringDomain = referringDomain ? new URL(referringDomain).hostname : 'direct'; if( referringDomain && referringDomain !== location.hostname ) { reportMonth('referrer',referringDomain); } recordChange(); function onclick(event) { //console.log(event); //console.log(event.target.textContent); reportDay('click'); reportMonth('monthly_click'); let link = page + ' - ' + event.target.textContent; reportMonth('link_click',link); recordChange(); //return false; } let links = document.querySelectorAll('a[link]'); for( let i=0; i<links.length; i++ ) { let link = links[i]; link.onclick = onclick; //link.addEventListener('click',onclick); } })();