diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index 4efe22d8..7ea1aa64 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -48,8 +48,7 @@ var ButtonSchema = new Schema({ var VisitorDataSchema = new Schema({ referrer: { - type: String, - required: true + type: String }, lastActiveField: { type: Schema.Types.ObjectId @@ -72,8 +71,7 @@ var VisitorDataSchema = new Schema({ deviceType: { type: String, enum: ['desktop', 'phone', 'tablet', 'other'], - default: 'other', - required: true + default: 'other' }, userAgent: { type: String diff --git a/app/sockets/analytics_service.js b/app/sockets/analytics_service.js index a231bb87..6164a672 100644 --- a/app/sockets/analytics_service.js +++ b/app/sockets/analytics_service.js @@ -25,7 +25,10 @@ module.exports = function (io, socket) { referrer: data.referrer, lastActiveField: data.lastActiveField, timeElapsed: data.timeElapsed, - isSubmitted: data.isSubmitted + isSubmitted: data.isSubmitted, + language: data.language, + ipAddr: data.ipAddr, + deviceType: data.deviceType }; form.analytics.visitors.push(newVisitor); @@ -51,7 +54,7 @@ module.exports = function (io, socket) { // a user has visited our page - add them to the visitorsData object socket.on('form-visitor-data', function(data) { - + console.log('\n\nuser has visited our page'); visitorsData[socket.id] = data; diff --git a/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js b/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js index 26d8024f..9678865b 100644 --- a/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js +++ b/public/modules/forms/admin/directives/edit-submissions-form.client.directive.js @@ -85,11 +85,11 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope', stats[deviceType].visits++; stats[deviceType].total_time =+ visitor.timeElapsed; - stats[deviceType].average_time = stats[deviceType].total_time/stats[deviceType].visits; + stats[deviceType].average_time = stats[deviceType].total_time/stats[deviceType].visits || 0; - if(stats[deviceType].isSubmitted) stats[deviceType].responses++; + if(visitor.isSubmitted) stats[deviceType].responses++; - stats[deviceType].completion = stats[deviceType].response/stats[deviceType].visits; + stats[deviceType].completion = stats[deviceType].response/stats[deviceType].visits || 0; } console.log(stats); diff --git a/public/modules/forms/directives/analytics-service.client.directive.js b/public/modules/forms/directives/analytics-service.client.directive.js index dcdef071..228de8cd 100644 --- a/public/modules/forms/directives/analytics-service.client.directive.js +++ b/public/modules/forms/directives/analytics-service.client.directive.js @@ -8,10 +8,10 @@ SendVisitorData.$inject = ['Socket', '$state', '$http', 'deviceDetector']; - function SendVisitorData(Socket, $state, $http) { + function SendVisitorData(Socket, $state, $http, deviceDetector) { // Create a controller method for sending visitor data - function send(form, lastActiveIndex, timeElapsed, deviceDetector) { + function send(form, lastActiveIndex, timeElapsed) { // Create a new message object var visitorData = { referrer: document.referrer, @@ -20,15 +20,17 @@ lastActiveField: form.form_fields[lastActiveIndex]._id, timeElapsed: timeElapsed, //@TODO @FIXME: David: Need to make this get the language from the HTTP Header instead - language: window.navigator.userLanguage || window.navigator.language + language: window.navigator.userLanguage || window.navigator.language, + ipAddr: '', + deviceType: '' }; $http.get('http://jsonip.com/').success(function(response) { visitorData.ipAddr = response['ip']+''; }).error(function(error) { console.error('Could not get users\'s ip'); - visitorData.ipAddr = ''; - }).finally(function(){ + }).then(function(){ + visitorData.userAgent = deviceDetector.raw; if(deviceDetector.isTablet()) { @@ -38,8 +40,8 @@ }else { visitorData.deviceType = 'desktop'; } + console.log(visitorData.deviceType); Socket.emit('form-visitor-data', visitorData); - }); }