tellform/public/form_modules/forms/directives/analytics-service.client.directive.js

85 lines
1.8 KiB
JavaScript
Raw Normal View History

2016-06-09 03:32:33 +00:00
(function () {
'use strict';
// Create the SendVisitorData service
angular
.module('view-form')
.factory('SendVisitorData', SendVisitorData);
SendVisitorData.$inject = ['Socket', '$state'];
function SendVisitorData(Socket, $state) {
// Create a controller method for sending visitor data
function send(form, lastActiveIndex, timeElapsed) {
2016-11-09 19:04:47 +00:00
var lang = window.navigator.userLanguage || window.navigator.language;
lang = lang.slice(0,2);
var userAgentString = navigator.userAgent;
var md = new MobileDetect(userAgentString);
var deviceType = 'other';
if (md.tablet()){
deviceType = 'tablet';
} else if (md.mobile()) {
deviceType = 'mobile';
2017-03-06 21:21:21 +00:00
} else if (!md.is('bot')) {
2016-11-09 19:04:47 +00:00
deviceType = 'desktop';
}
2016-11-09 19:20:50 +00:00
$.ajaxSetup( { 'async': false } );
2017-03-10 19:26:07 +00:00
var geoData = $.getJSON('https://freegeoip.net/json/').responseJSON;
$.ajaxSetup( { 'async': true } );
2017-03-27 20:32:06 +00:00
if(!geoData){
geoData = {
ip: '',
city: '',
country_name: ''
};
2017-03-27 20:32:06 +00:00
}
2016-06-09 03:32:33 +00:00
// Create a new message object
var visitorData = {
referrer: document.referrer,
isSubmitted: form.submitted,
formId: form._id,
lastActiveField: form.form_fields[lastActiveIndex]._id,
2016-11-09 19:04:47 +00:00
timeElapsed: timeElapsed,
language: lang,
deviceType: deviceType,
2017-03-06 21:45:11 +00:00
ipAddr: geoData.ip,
geoLocation: {
city: geoData.city,
country: geoData.country_name
}
2016-06-09 03:32:33 +00:00
};
2017-09-30 00:33:55 +00:00
console.log('sending form-visitor-data');
2016-06-09 03:32:33 +00:00
Socket.emit('form-visitor-data', visitorData);
}
function init(){
// Make sure the Socket is connected
if (!Socket.socket) {
Socket.connect();
}
2017-09-30 00:33:55 +00:00
Socket.on('disconnect', function(){
console.log("reconnected to socket");
Socket.connect();
});
2016-06-09 03:32:33 +00:00
}
var service = {
send: send
};
init();
return service;
}
}());