From 52632f3328d9d4bb3bc17927172ae9c9da2d795b Mon Sep 17 00:00:00 2001 From: David Baldwynn Date: Wed, 2 Nov 2016 12:35:01 -0700 Subject: [PATCH] fixed autosaving bug --- app/controllers/forms.server.controller.js | 3 +- app/sockets/analytics_service.js | 6 +-- .../directives/auto-save.client.directive.js | 41 +++++++++---------- .../directives/edit-form.client.directive.js | 3 -- .../edit-submissions-form.client.directive.js | 1 - .../analytics-service.client.directive.js | 8 ++-- 6 files changed, 25 insertions(+), 37 deletions(-) diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js index 84bf3e1f..18deeb37 100644 --- a/app/controllers/forms.server.controller.js +++ b/app/controllers/forms.server.controller.js @@ -232,11 +232,10 @@ exports.read = function(req, res) { * Update a form */ exports.update = function(req, res) { - debugger; var form = req.form; - if(req.body.changes){ + console.log('SENDING DIFFS\n\n\n'); var formChanges = req.body.changes; formChanges.forEach(function (change) { diff --git a/app/sockets/analytics_service.js b/app/sockets/analytics_service.js index 6164a672..a519e80e 100644 --- a/app/sockets/analytics_service.js +++ b/app/sockets/analytics_service.js @@ -55,12 +55,8 @@ 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; - - console.log(data); - + if (data.isSubmitted) { saveVisitorData(data, function () { console.log('\n\n user submitted form'); diff --git a/public/modules/forms/admin/directives/auto-save.client.directive.js b/public/modules/forms/admin/directives/auto-save.client.directive.js index c2fff93f..ebd0d2a5 100644 --- a/public/modules/forms/admin/directives/auto-save.client.directive.js +++ b/public/modules/forms/admin/directives/auto-save.client.directive.js @@ -80,38 +80,35 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun newValue = angular.copy(newValue); oldValue = angular.copy(oldValue); - newValue.form_fields = _.removeDateFields(newValue.form_fields); - oldValue.form_fields = _.removeDateFields(oldValue.form_fields); + newValue.form_fields = _.removeDateFields(newValue.form_fields); + oldValue.form_fields = _.removeDateFields(oldValue.form_fields); - var changedFields = !_.isEqual(oldValue.form_fields,newValue.form_fields) || !_.isEqual(oldValue.startPage, newValue.startPage); + var changedFields = !!DeepDiff.diff(oldValue, newValue) && DeepDiff.diff(oldValue, newValue).length > 0; - if(oldValue.hasOwnProperty('plugins.oscarhost.settings.fieldMap')){ - changedFieldMap = !!oldValue.plugins.oscarhost.settings.fieldMap && !_.isEqual(oldValue.plugins.oscarhost.settings.fieldMap,newValue.plugins.oscarhost.settings.fieldMap); - } + //If our form is undefined, don't save form + if( !newValue || !oldValue || !changedFields){ + $rootScope.finishedRender = true; + return; + } - //If our form is undefined, don't save form - if( (!newValue && !oldValue) || !oldValue ){ - return; - } + if(oldValue.form_fields.length === 0) { + $rootScope.finishedRender = true; + } - // console.log('Autosaving'); - // console.log('\n\n----------'); - // console.log('!$dirty: '+ !$formCtrl.$dirty ); - // console.log('changedFields: '+changedFields); + console.log('Autosaving'); + console.log('\n\n----------'); + console.log('!$dirty: '+ !$formCtrl.$dirty ); + console.log('changedFields: '+changedFields); // console.log('changedFieldMap: '+changedFieldMap); - // console.log('finishedRender: '+$rootScope.finishedRender); - // console.log('!saveInProgress: '+!$rootScope.saveInProgress); + console.log('finishedRender: '+$rootScope.finishedRender); + console.log('!saveInProgress: '+!$rootScope.saveInProgress); // console.log('newValue: '+newValue); // console.log('oldValue: '+oldValue); // console.log(oldValue.form_fields); // console.log(newValue.form_fields); - if(oldValue.form_fields.length === 0) { - $rootScope.finishedRender = true; - } - //Save form ONLY IF rendering is finished, form_fields have been changed AND currently not save in progress - if( $rootScope.finishedRender && (changedFields && !$formCtrl.$dirty) && !$rootScope.saveInProgress) { + if( $rootScope.finishedRender && (changedFields) && !$rootScope.saveInProgress) { if(savePromise) { $timeout.cancel(savePromise); @@ -120,7 +117,7 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun savePromise = $timeout(function() { $rootScope.saveInProgress = true; - + delete newValue.visible_form_fields; delete newValue.visible_form_fields; var _diff = DeepDiff.diff(oldValue, newValue); diff --git a/public/modules/forms/admin/directives/edit-form.client.directive.js b/public/modules/forms/admin/directives/edit-form.client.directive.js index 68410023..4bce063d 100644 --- a/public/modules/forms/admin/directives/edit-form.client.directive.js +++ b/public/modules/forms/admin/directives/edit-form.client.directive.js @@ -248,10 +248,7 @@ angular.module('forms').directive('editFormDirective', ['$rootScope', 'FormField return false; } }; - - } - }; } ]); 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 bafc342f..f7dc6a9d 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 @@ -75,7 +75,6 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope', var visitors = $scope.myform.analytics.visitors; - console.log(visitors); for(var i=0; i