From 942f6b73dc5cf6308801c3ef404befb1ba15f49a Mon Sep 17 00:00:00 2001 From: David Baldwynn Date: Wed, 5 Aug 2015 15:46:33 -0700 Subject: [PATCH] got field duplicate button to work --- .../directives/auto-save.client.directive.js | 89 ++++--------------- .../directives/edit-form.client.directive.js | 33 ++++--- .../views/directiveViews/form/edit-form.html | 13 ++- 3 files changed, 46 insertions(+), 89 deletions(-) diff --git a/public/modules/forms/directives/auto-save.client.directive.js b/public/modules/forms/directives/auto-save.client.directive.js index f6a571ea..95ac17a4 100644 --- a/public/modules/forms/directives/auto-save.client.directive.js +++ b/public/modules/forms/directives/auto-save.client.directive.js @@ -35,61 +35,28 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun return false; }; - var debounceUpdates = function () { + var updateFields = function () { + $rootScope.saveInProgress = true; + $rootScope[$attrs.autoSaveCallback](false, + function(err){ + if(!err){ + console.log('\n\nForm data persisted -- setting pristine flag'); + // console.log('\n\n---------\nUpdate form CLIENT'); + // console.log(Date.now()); + $formCtrl.$setPristine(); + }else{ + console.error('Error form data NOT persisted'); + console.error(err); + } + }); + } - // console.log('Saving Form'); - if(savePromise) { - $timeout.cancel(savePromise); - }else { - savePromise = $timeout(function() { - - - $rootScope[$attrs.autoSaveCallback]( - function(err){ - if(!err){ - // console.log('\n\nForm data persisted -- setting pristine flag'); - // console.log('\n\n---------\nUpdate form CLIENT'); - // console.log(Date.now()); - $formCtrl.$setPristine(); - console.log($rootScope.saveInProgress); - savePromise = null; - // $formCtrl.$setUntouched(); - }else{ - console.error('Error form data NOT persisted'); - console.error(err); - } - }); - - }); - } - }; - - - // $scope.$watch('editForm', function(newValue, oldValue) { - // console.log('watch editForm'); - // if($scope.anyDirtyAndTouched($scope.editForm)){ - // console.log('ready to save text input'); - // } - // }); $scope.$watch(function(newValue, oldValue) { - // console.log('watch editForm'); if($scope.anyDirtyAndTouched($scope.editForm) && !$rootScope.saveInProgress){ console.log('ready to save text input'); console.log('Saving Form'); - $rootScope.saveInProgress = true; - $rootScope[$attrs.autoSaveCallback](false, - function(err){ - if(!err){ - console.log('\n\nForm data persisted -- setting pristine flag'); - // console.log('\n\n---------\nUpdate form CLIENT'); - // console.log(Date.now()); - $formCtrl.$setPristine(); - }else{ - console.error('Error form data NOT persisted'); - console.error(err); - } - }); + updateFields(); } }); @@ -109,37 +76,17 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun // console.log('newValue: '+newValue); // console.log('oldValue: '+oldValue); - // var anyCurrentlyDirtyNotFocused = $scope.anyDirtyAndTouched($scope.editForm); - // console.log('anyCurrentlyDirtyNotFocused: '+anyCurrentlyDirtyNotFocused); - // console.log('properties of $scope.editForm'); - // for(var item in $scope.editForm){ - // console.log(item); - // } //Save form ONLY IF rendering is finished, form_fields have been change AND currently not save in progress if($rootScope.finishedRender && (changedFields && !$formCtrl.$dirty) && !$rootScope.saveInProgress) { - if(savePromise) { $timeout.cancel(savePromise); savePromise = null; } - savePromise = $timeout(function() { - + savePromise = $timeout(function() { console.log('Saving Form'); - $rootScope.saveInProgress = true; - $rootScope[$attrs.autoSaveCallback](false, - function(err){ - if(!err){ - console.log('\n\nForm data persisted -- setting pristine flag'); - // console.log('\n\n---------\nUpdate form CLIENT'); - // console.log(Date.now()); - $formCtrl.$setPristine(); - }else{ - console.error('Error form data NOT persisted'); - console.error(err); - } - }); + updateFields(); }); }else if($rootScope.finishedRender && $rootScope.saveInProgress){ $rootScope.saveInProgress = false; diff --git a/public/modules/forms/directives/edit-form.client.directive.js b/public/modules/forms/directives/edit-form.client.directive.js index 5ee4926b..996ee80a 100644 --- a/public/modules/forms/directives/edit-form.client.directive.js +++ b/public/modules/forms/directives/edit-form.client.directive.js @@ -92,7 +92,7 @@ angular.module('forms') ** Field CRUD Methods */ // Add a new field - $scope.addNewField = function(fieldType){ + $scope.addNewField = function(addOrReturn, fieldType){ // incr field_id counter $scope.addField.lastAddedID++; @@ -116,8 +116,13 @@ angular.module('forms') }; // put newField into fields array - $scope.myform.form_fields.push(newField); - // console.log('\n\n---------\nAdded field CLIENT'); + if(addOrReturn){ + $scope.myform.form_fields.push(newField); + }else { + return newField; + } + + console.log('\n\n---------\nAdded field CLIENT'); // console.log(Date.now()); // console.log($scope.myform.form_fields.length); }; @@ -133,13 +138,21 @@ angular.module('forms') } } }; - $scope.duplicateField = function (field, field_index){ - for(var i = 0; i < $scope.myform.form_fields.length; i++){ - if($scope.myform.form_fields[i].field_id === field.field_id){ - $scope.addNewField($scope.myform.form_fields[i].fieldType); - break; - } - } + $scope.duplicateField = function (field_index){ + console.log('field_index: '+field_index); + var field = $scope.addNewField(false, $scope.myform.form_fields[field_index].fieldType); + field.title = $scope.myform.form_fields[field_index].title; + console.log($scope.myform.form_fields[field_index]); + + + //Insert field at selected index + $scope.myform.form_fields.splice(field_index+1, 0, field); + // for(var i = 0; i < $scope.myform.form_fields.length; i++){ + // if($scope.myform.form_fields[i].field_id === field.field_id){ + + // break; + // } + // } }; /* diff --git a/public/modules/forms/views/directiveViews/form/edit-form.html b/public/modules/forms/views/directiveViews/form/edit-form.html index a42f77c6..3ccde929 100644 --- a/public/modules/forms/views/directiveViews/form/edit-form.html +++ b/public/modules/forms/views/directiveViews/form/edit-form.html @@ -2,17 +2,14 @@
- +

Add New Field

-
+
@@ -132,7 +129,7 @@
-


+
@@ -168,7 +165,7 @@
-
+