fixed ui bugs in analytics view in admin panel

This commit is contained in:
David Baldwynn 2017-07-27 00:53:31 -04:00
parent 20a2c1b574
commit 66d41f5a80
5 changed files with 34 additions and 35 deletions

View file

@ -45,7 +45,6 @@ module.exports = function (io, socket) {
}); });
}); });
socket.disconnect(0);
}; };
io.on('connection', function(current_socket) { io.on('connection', function(current_socket) {
@ -55,18 +54,15 @@ module.exports = function (io, socket) {
current_socket.id = data.formId; current_socket.id = data.formId;
visitorsData[current_socket.id] = data; visitorsData[current_socket.id] = data;
visitorsData[current_socket.id].isSaved = false; visitorsData[current_socket.id].isSaved = false;
if (data.isSubmitted) { if (data.isSubmitted) {
saveVisitorData(data, function () { saveVisitorData(data, function () {
visitorsData[current_socket.id].isSaved = true; visitorsData[current_socket.id].isSaved = true;
current_socket.disconnect(0);
}); });
} }
}); });
current_socket.on('disconnect', function() { current_socket.on('disconnect', function() {
var data = visitorsData[current_socket.id]; var data = visitorsData[current_socket.id];
if(data && !data.isSubmitted && !data.isSaved) { if(data && !data.isSubmitted && !data.isSaved) {
data.isSaved = true; data.isSaved = true;
saveVisitorData(data); saveVisitorData(data);

View file

@ -9,7 +9,7 @@ var config = require('./config'),
// Define the Socket.io configuration method // Define the Socket.io configuration method
module.exports = function (app, db) { module.exports = function (app, db) {
var server = http.createServer(app); var server = http.createServer(app);
var io = socketio({ transports: ['websocket', 'polling'] }); var io = socketio(20523, { transports: ['websocket', 'polling'] });
if(config.socketPort){ if(config.socketPort){
io = socketio(config.socketPort, { transports: ['websocket', 'polling'] }); io = socketio(config.socketPort, { transports: ['websocket', 'polling'] });

View file

@ -3156,10 +3156,13 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
//Iterate through form's submissions //Iterate through form's submissions
for(var i = 0; i < submissions.length; i++){ for(var i = 0; i < submissions.length; i++){
for(var x = 0; x < submissions[i].form_fields; x++){ for(var x = 0; x < submissions[i].form_fields.length; x++){
var oldValue = submissions[i].form_fields[x].fieldValue || ''; if(submissions[i].form_fields[x].fieldType === 'dropdown'){
submissions[i].form_fields[x] = _.merge(defaultFormFields, submissions[i].form_fields); submissions[i].form_fields[x].fieldValue = submissions[i].form_fields[x].fieldValue.option_value;
submissions[i].form_fields[x].fieldValue = oldValue; }
//var oldValue = submissions[i].form_fields[x].fieldValue || '';
//submissions[i].form_fields[x] = _.merge(defaultFormFields, submissions[i].form_fields);
//submissions[i].form_fields[x].fieldValue = oldValue;
} }
submissions[i].selected = false; submissions[i].selected = false;
} }
@ -3211,24 +3214,25 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
stats[deviceType].visits++; stats[deviceType].visits++;
stats[deviceType].total_time = stats[deviceType].total_time + visitor.timeElapsed;
stats[deviceType].average_time = (stats[deviceType].total_time / stats[deviceType].visits).toFixed(0);
if(!stats[deviceType].average_time) { if(!stats[deviceType].average_time) {
stats[deviceType].average_time = 0; stats[deviceType].average_time = 0;
} }
if (visitor.isSubmitted) { if (visitor.isSubmitted) {
stats[deviceType].total_time = stats[deviceType].total_time + visitor.timeElapsed;
stats[deviceType].responses++; stats[deviceType].responses++;
} }
stats[deviceType].completion = (stats[deviceType].responses / stats[deviceType].visits).toFixed(0); if(stats[deviceType].visits) {
if(!stats[deviceType].completion) { stats[deviceType].completion = 100*(stats[deviceType].responses / stats[deviceType].visits).toFixed(2);
stats[deviceType].completion = 0;
} }
if(stats[deviceType].responses){
stats[deviceType].average_time = (stats[deviceType].total_time / stats[deviceType].responses).toFixed(0);
}
} }
} }
console.log(stats);
return stats; return stats;
})(); })();
@ -3237,7 +3241,7 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
}; };
initController(); initController();
var updateFields = $interval(initController, 2000); var updateFields = $interval(initController, 1000000);
$scope.$on('$destroy', function() { $scope.$on('$destroy', function() {
if (updateFields) { if (updateFields) {

File diff suppressed because one or more lines are too long

View file

@ -30,10 +30,13 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
//Iterate through form's submissions //Iterate through form's submissions
for(var i = 0; i < submissions.length; i++){ for(var i = 0; i < submissions.length; i++){
for(var x = 0; x < submissions[i].form_fields; x++){ for(var x = 0; x < submissions[i].form_fields.length; x++){
var oldValue = submissions[i].form_fields[x].fieldValue || ''; if(submissions[i].form_fields[x].fieldType === 'dropdown'){
submissions[i].form_fields[x] = _.merge(defaultFormFields, submissions[i].form_fields); submissions[i].form_fields[x].fieldValue = submissions[i].form_fields[x].fieldValue.option_value;
submissions[i].form_fields[x].fieldValue = oldValue; }
//var oldValue = submissions[i].form_fields[x].fieldValue || '';
//submissions[i].form_fields[x] = _.merge(defaultFormFields, submissions[i].form_fields);
//submissions[i].form_fields[x].fieldValue = oldValue;
} }
submissions[i].selected = false; submissions[i].selected = false;
} }
@ -85,24 +88,20 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
stats[deviceType].visits++; stats[deviceType].visits++;
stats[deviceType].total_time = stats[deviceType].total_time + visitor.timeElapsed;
stats[deviceType].average_time = (stats[deviceType].total_time / stats[deviceType].visits).toFixed(0);
if(!stats[deviceType].average_time) {
stats[deviceType].average_time = 0;
}
if (visitor.isSubmitted) { if (visitor.isSubmitted) {
stats[deviceType].total_time = stats[deviceType].total_time + visitor.timeElapsed;
stats[deviceType].responses++; stats[deviceType].responses++;
} }
stats[deviceType].completion = (stats[deviceType].responses / stats[deviceType].visits).toFixed(0); if(stats[deviceType].visits) {
if(!stats[deviceType].completion) { stats[deviceType].completion = 100*(stats[deviceType].responses / stats[deviceType].visits).toFixed(2);
stats[deviceType].completion = 0;
} }
if(stats[deviceType].responses){
stats[deviceType].average_time = (stats[deviceType].total_time / stats[deviceType].responses).toFixed(0);
}
} }
} }
return stats; return stats;
})(); })();
@ -111,7 +110,7 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
}; };
initController(); initController();
var updateFields = $interval(initController, 2000); var updateFields = $interval(initController, 1000000);
$scope.$on('$destroy', function() { $scope.$on('$destroy', function() {
if (updateFields) { if (updateFields) {