added analytics dashboard
This commit is contained in:
parent
26b2fafc3d
commit
afeb7aaf2a
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue