diff --git a/app/node_controllers/indexController.js b/app/node_controllers/indexController.js index b835509..a7ebc3d 100644 --- a/app/node_controllers/indexController.js +++ b/app/node_controllers/indexController.js @@ -5,7 +5,7 @@ var async = require('async'); var fs = require ('fs'); -var indexController = function(req, res) { +var indexController = function(req, res, googleAnalyticsId) { 'use strict'; async.parallel({ @@ -15,8 +15,11 @@ var indexController = function(req, res) { } }, function(err, results) { + var html = results.htmlTemplate; + html = html.replace('%%GA_ID%%', googleAnalyticsId); + res.setHeader('Content-Type', 'text/html'); - res.send(results.htmlTemplate); + res.send(html); }); }; diff --git a/app/node_controllers/launchTestController.js b/app/node_controllers/launchTestController.js index d0c04be..472b0a0 100644 --- a/app/node_controllers/launchTestController.js +++ b/app/node_controllers/launchTestController.js @@ -5,7 +5,7 @@ var async = require('async'); var fs = require ('fs'); -var launchTestController = function(req, res, testQueue) { +var launchTestController = function(req, res, testQueue, googleAnalyticsId) { 'use strict'; // Generate test id @@ -34,6 +34,7 @@ var launchTestController = function(req, res, testQueue) { html = html.replace('%%TEST_URL%%', url); html = html.replace('%%TEST_ID%%', testId); + html = html.replace('%%GA_ID%%', googleAnalyticsId); res.setHeader('Content-Type', 'text/html'); res.send(html); diff --git a/app/node_controllers/resultsController.js b/app/node_controllers/resultsController.js index 3ed9102..de3b122 100644 --- a/app/node_controllers/resultsController.js +++ b/app/node_controllers/resultsController.js @@ -5,7 +5,7 @@ var async = require('async'); var fs = require ('fs'); -var resultsController = function(req, res) { +var resultsController = function(req, res, googleAnalyticsId) { 'use strict'; var testId = req.params.testId; @@ -37,6 +37,7 @@ var resultsController = function(req, res) { var html = results.htmlTemplate; html = html.replace('%%METADATA%%', results.phantomasMetadata); html = html.replace('%%RESULTS%%', results.phantomasResults); + html = html.replace('%%GA_ID%%', googleAnalyticsId); res.setHeader('Content-Type', 'text/html'); res.send(html); diff --git a/app/node_views/index.html b/app/node_views/index.html index 011aa3a..bd3fd55 100644 --- a/app/node_views/index.html +++ b/app/node_views/index.html @@ -17,5 +17,18 @@ + + \ No newline at end of file diff --git a/app/node_views/launchTest.html b/app/node_views/launchTest.html index a67a0b1..b3f0cd7 100644 --- a/app/node_views/launchTest.html +++ b/app/node_views/launchTest.html @@ -1,7 +1,7 @@ - Javascript Spaghetti Profiler + Yellow Lab Tools - Awaiting @@ -32,6 +32,7 @@ } else { statusElement.innerHTML = 'Waiting behind ' + (position) + ' other tests'; } + sendPositionInQueueToGA(position); }); socket.on('complete', function() { @@ -49,6 +50,28 @@ }); askStatus(); + + + var GA_ID = '%%GA_ID%%'; + if (GA_ID.length > 0 && window.location.host === 'yellowlab.tools') { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', GA_ID, 'auto'); + } + + // Need stats on average queue position + var positionAlreadySent = false; + function sendPositionInQueueToGA(position) { + if (!positionAlreadySent && GA_ID.length > 0 && window.location.host === 'yellowlab.tools') { + ga('send', 'pageview', { + queuePosition: position + }); + positionAlreadySent = true; + } + } \ No newline at end of file diff --git a/app/node_views/results.html b/app/node_views/results.html index 008829d..1c27311 100644 --- a/app/node_views/results.html +++ b/app/node_views/results.html @@ -1,7 +1,7 @@ - Javascript Spaghetti Profiler + Yellow Lab Tools - Results page @@ -275,6 +275,16 @@ var _phantomas_metadata = %%METADATA%%; + var GA_ID = '%%GA_ID%%'; + if (GA_ID.length > 0 && window.location.host === 'yellowlab.tools') { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', GA_ID, 'auto'); + ga('send', 'pageview'); + } \ No newline at end of file diff --git a/server.js b/server.js index 876b4e1..dcb4b1a 100644 --- a/server.js +++ b/server.js @@ -32,9 +32,9 @@ app.all('*', function(req, res, next) { }); // Routes definition -app.get('/', indexController); -app.post('/launchTest', function(req, res) { launchTestController(req, res, testQueue); }); -app.get('/results/:testId', resultsController); +app.get('/', function(req, res) { indexController(req, res, settings.googleAnalyticsId); }); +app.post('/launchTest', function(req, res) { launchTestController(req, res, testQueue, settings.googleAnalyticsId); }); +app.get('/results/:testId', function(req, res) { resultsController(req, res, settings.googleAnalyticsId); }); // Static files diff --git a/server_config/server_install.sh b/server_config/server_install.sh index 0233f5a..73822b9 100644 --- a/server_config/server_install.sh +++ b/server_config/server_install.sh @@ -2,7 +2,7 @@ # APT-GET sudo apt-get update -sudo apt-get install lsb-release -y --force-yes +sudo apt-get install lsb-release libfontconfig1 libfreetype6 -y --force-yes sudo apt-get install curl git python-software-properties -y --force-yes # Installation of NodeJS diff --git a/server_config/settings-prod.json b/server_config/settings-prod.json index 93f88bf..f7b4cb5 100644 --- a/server_config/settings-prod.json +++ b/server_config/settings-prod.json @@ -1,3 +1,4 @@ { - "serverPort": 80 + "serverPort": 80, + "googleAnalyticsId": "UA-54493828-1" } \ No newline at end of file diff --git a/server_config/settings.json b/server_config/settings.json index 7a5bc34..fb400fe 100644 --- a/server_config/settings.json +++ b/server_config/settings.json @@ -1,3 +1,4 @@ { - "serverPort": 8383 + "serverPort": 8383, + "googleAnalyticsId": "" } \ No newline at end of file