summaryrefslogtreecommitdiff
path: root/assets/scripts/metrics.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/scripts/metrics.js')
-rw-r--r--assets/scripts/metrics.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/assets/scripts/metrics.js b/assets/scripts/metrics.js
new file mode 100644
index 0000000..1c415f0
--- /dev/null
+++ b/assets/scripts/metrics.js
@@ -0,0 +1,101 @@
+'use strict';
+
+(function() {
+ var client = new Keen({
+ projectId: '56bfd55296773d74919d1035',
+ writeKey: 'f59539f4db693c0d240435c13d273e1d' +
+ '702cc524d3ecadc4095f13cc0e8ab251' +
+ '96c8615c2c815a6d2f4b18ac08b99740' +
+ '67b7b1740cd469a761fffd7632065554' +
+ '730d6d1a07b32df59516f94144799791' +
+ 'b03e9776cb9b659b9128c0b79b6e396f'
+ });
+
+ setTimeout(function() {
+ client.addEvent('pageviews', getMetrics(), function(err, res) {
+ if (err) {
+ console.error(err);
+ }
+ });
+ }, 1000);
+
+ var getMetrics = function() {
+ var metrics = {
+ timing: getTimingMetrics(),
+ source: getSourceMetrics(),
+ visitor: getVisitorMetrics(),
+ page: getPageMetrics()
+ };
+ return metrics;
+ };
+
+ var getTimingMetrics = function() {
+ if (window.performance && window.performance.timing) {
+ var t = window.performance.timing;
+ return {
+ redirect: t.redirectEnd - t.redirectStart,
+ appCache: t.domainLookupStart - t.fetchStart,
+ dns: t.domainLookupEnd - t.domainLookupStart,
+ tcp: t.connectEnd - t.connectStart,
+ request: t.responseStart - t.requestStart,
+ response: t.responseEnd - t.responseStart,
+ processing: t.domComplete - t.domLoading,
+ onLoad: t.loadEventEnd - t.loadEventStart,
+ click_to_interactive: t.domInteractive - t.navigationStart,
+ total: t.loadEventEnd - t.navigationStart
+ };
+ } else {
+ return {};
+ }
+ };
+
+ var getVisitorMetrics = function() {
+ return {
+ browser: getBrowser(),
+ language: window.navigator.language
+ };
+ };
+
+ var getSourceMetrics = function() {
+ if (window.document.referrer) {
+ var d = window.document.referrer.match(/\/\/(.+)\//);
+ var referring_domain = d ? d[1] : '';
+ } else {
+ var referring_domain = '';
+ }
+ return {
+ referring_domain: referring_domain,
+ referrer: window.document.referrer
+ };
+ };
+
+ var getBrowser = function() {
+ var ua = window.navigator.userAgent;
+ if (/Firefox/.test(ua) && !/Seamonkey/.test(ua)) {
+ return 'Firefox';
+ } else if (/Seamonkey/.test(ua)) {
+ return 'Seamonkey';
+ } else if (/Chrome/.test(ua) && !/Chromium/.test(ua)) {
+ return 'Chrome';
+ } else if (/Chromium/.test(ua)) {
+ return 'Chromium';
+ } else if (
+ /Safari/.test(ua) && !/Chrome/.test(ua) && !/Chromium/.test(ua)
+ ) {
+ return 'Safari';
+ } else if (/OPR/.test(ua) || /Opera/.test(ua)) {
+ return 'Opera';
+ } else if (/MSIE/.test(ua)) {
+ return 'Internet Explorer';
+ } else {
+ return 'Unknown';
+ }
+ };
+
+ var getPageMetrics = function() {
+ return {
+ path: window.location.pathname,
+ title: window.document.title
+ };
+ };
+})();