0
|
1 'use strict';
|
|
2
|
|
3 (function() {
|
|
4
|
|
5 if(!hasCookies) return;
|
|
6
|
|
7 let hour = 60*60*1000;
|
|
8 let day = 24*hour;
|
|
9 let offsetFromGMT = 7*hour;
|
|
10 let today = Math.floor((Date.now() - offsetFromGMT) / day) * day + offsetFromGMT;
|
|
11 // today -= 28*day;
|
|
12 let expired = today - 30*day;
|
|
13
|
|
14 let owner = window.Owner;
|
|
15 let page = window.Page;
|
|
16 let changed = false;
|
|
17 let values = {};
|
|
18
|
|
19 let data = localStorage && localStorage.reporting;
|
|
20 data = data ? JSON.parse(data) : {};
|
|
21 for( let key in data ) {
|
|
22 //console.log(key);
|
|
23 if( data[key] < expired ) {
|
|
24 //console.log(`delete ${key} ${data[key]} ${expired}`);
|
|
25 delete data[key];
|
|
26 changed = true;
|
|
27 }
|
|
28 }
|
|
29
|
|
30 function recordChange() {
|
|
31 if( !changed || !localStorage )
|
|
32 return;
|
|
33 localStorage.reporting = JSON.stringify(data);
|
|
34 if( Object.keys(values).length > 0 ) {
|
|
35 let url = `/report.js?owner=${encodeURIComponent(owner)}&today=${today}`;
|
|
36 for( let type in values ) {
|
|
37 url += `&type=${type}`;
|
|
38 let info = values[type];
|
|
39 let value = info.value;
|
|
40 let before = info.before;
|
|
41 if( value )
|
|
42 url += `&${type}=${encodeURIComponent(value)}`;
|
|
43 if( before )
|
|
44 url += `&${type}_before=${before}`;
|
|
45 }
|
|
46 ajax(url);
|
|
47 values = {};
|
|
48 }
|
|
49 changed = false;
|
|
50 }
|
|
51
|
|
52 function reportDay(type) {
|
|
53 let key = JSON.stringify({ type:type, owner:owner });
|
|
54 let val = data[key];
|
|
55 if( !val || val < today ) {
|
|
56 values[type] = {};
|
|
57 data[key] = today
|
|
58 changed = true;
|
|
59 }
|
|
60 }
|
|
61
|
|
62 function reportMonth(type,value) {
|
|
63 let key = JSON.stringify({ type:type, owner:owner, value:value });
|
|
64 let val = data[key];
|
|
65 if( !val || val < today ) {
|
|
66 let info = {};
|
|
67 if( value )
|
|
68 info.value = value;
|
|
69 if( val )
|
|
70 info.before = val;
|
|
71 values[type] = info;
|
|
72 data[key] = today;
|
|
73 changed = true;
|
|
74 }
|
|
75 }
|
|
76
|
|
77 reportDay('visit');
|
|
78 reportMonth('monthly_visit');
|
|
79 reportMonth('page_view',page);
|
|
80
|
|
81 let referringDomain = document.referrer;
|
|
82 referringDomain = referringDomain ? new URL(referringDomain).hostname : 'direct';
|
|
83 if( referringDomain && referringDomain !== location.hostname ) {
|
|
84 reportMonth('referrer',referringDomain);
|
|
85 }
|
|
86
|
|
87 recordChange();
|
|
88
|
|
89 function onclick(event) {
|
|
90 //console.log(event);
|
|
91 //console.log(event.target.textContent);
|
|
92 reportDay('click');
|
|
93 reportMonth('monthly_click');
|
|
94 let link = page + ' - ' + event.target.textContent;
|
|
95 reportMonth('link_click',link);
|
|
96 recordChange();
|
|
97 //return false;
|
|
98 }
|
|
99 let links = document.querySelectorAll('a[link]');
|
|
100 for( let i=0; i<links.length; i++ ) {
|
|
101 let link = links[i];
|
|
102 link.onclick = onclick;
|
|
103 //link.addEventListener('click',onclick);
|
|
104 }
|
|
105
|
|
106 })();
|