added analytics dashboard

This commit is contained in:
David Baldwynn 2016-06-17 14:51:17 -07:00
parent 26b2fafc3d
commit afeb7aaf2a
4 changed files with 18 additions and 15 deletions

View file

@ -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

View file

@ -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;

View file

@ -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);

View file

@ -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);
});
}