diff --git a/public/assignment/client/app.js b/public/assignment/client/app.js index e3742a6..d254fae 100755 --- a/public/assignment/client/app.js +++ b/public/assignment/client/app.js @@ -1,5 +1,5 @@ (function() { "use strict"; angular - .module("FormBuilderApp", ["ngRoute"]); + .module("FormBuilderApp", ["ngRoute","jgaSortable","ui.bootstrap"]); })(); diff --git a/public/assignment/client/config.js b/public/assignment/client/config.js index f32be10..fcbc274 100755 --- a/public/assignment/client/config.js +++ b/public/assignment/client/config.js @@ -6,7 +6,9 @@ function Configure($routeProvider) { $routeProvider .when("/home", { - templateUrl: "views/home/home.view.html" + templateUrl: "views/home/home.view.html", + controller:"HomeController", + controllerAs:"model" }) .when("/admin", { diff --git a/public/assignment/client/directives/jgaSortable.js b/public/assignment/client/directives/jgaSortable.js new file mode 100755 index 0000000..ca3d202 --- /dev/null +++ b/public/assignment/client/directives/jgaSortable.js @@ -0,0 +1,31 @@ +(function(){ + "use strict"; + angular + .module("jgaSortable", []) + .directive("jgaSortable", jgaSortable); + + function jgaSortable() { + var start = null, + end = null; + + function link(scope, element, attributes) { + var jgaAxis = attributes.jgaAxis; + $(element).sortable({ + axis: jgaAxis, + start: function(event, ui) { + start = ui.item.index(); + }, + stop: function(event, ui) { + end = ui.item.index(); + + scope.$apply(function(){ + scope.updateForm(start,end); + }) + } + }); + } + return { + link: link + } + } +})(); diff --git a/public/assignment/client/index.html b/public/assignment/client/index.html index c7ac094..d2586f9 100755 --- a/public/assignment/client/index.html +++ b/public/assignment/client/index.html @@ -9,28 +9,17 @@ - Assignment Index Page + Form Maker + + + - - - - - - - - - - - - - - - + @@ -52,9 +41,33 @@
+ + + + + + + + + - - + + + + + + + + + + + + + + + + + diff --git a/public/assignment/client/services/field.service.client.js b/public/assignment/client/services/field.service.client.js index 7e29002..57fc7ff 100755 --- a/public/assignment/client/services/field.service.client.js +++ b/public/assignment/client/services/field.service.client.js @@ -12,13 +12,14 @@ getFieldsForForm:getFieldsForForm, getFieldForForm:getFieldForForm, deleteFieldFromForm:deleteFieldFromForm, - updateField:updateField + updateField:updateField, + cloneField:cloneField } return model; function createFieldForForm(formId,field){ - + console.log("am in field service"); return $http.post("/api/assignment/form/"+formId+"/field",field); } @@ -31,12 +32,16 @@ } function deleteFieldFromForm(formId,fieldId){ - + console.log("in clien service",formId,fieldId); return $http.delete("/api/assignment/form/"+formId+"/field/"+fieldId); } function updateField(formId,fieldId,field){ return $http.put("/api/assignment/form/"+formId+"/field/"+fieldId, field); } + + function cloneField(formId,field){ + return $http.post("/api/assignment/form/" +formId+ "/field", field); + } } })(); diff --git a/public/assignment/client/services/forms.service.client.js b/public/assignment/client/services/forms.service.client.js index a0fae8c..74a9733 100755 --- a/public/assignment/client/services/forms.service.client.js +++ b/public/assignment/client/services/forms.service.client.js @@ -9,7 +9,8 @@ findFormByTitle:findFormByTitle, deleteForm:deleteForm, addForm:addForm, - updateForm:updateForm + updateForm:updateForm, + findFormById:findFormById } return model; @@ -31,5 +32,8 @@ function updateForm(formToBeUpdatedId,form){ return $http.put("/api/assignment/form/"+formToBeUpdatedId,form); } + function findFormById(formId){ + return $http.get("/api/assignment/findFormById/"+formId); + } } })(); diff --git a/public/assignment/client/services/user.service.client.js b/public/assignment/client/services/user.service.client.js index 1c3124a..25bcc45 100755 --- a/public/assignment/client/services/user.service.client.js +++ b/public/assignment/client/services/user.service.client.js @@ -10,6 +10,7 @@ setCurrentUser : setCurrentUser, updateUser : updateUser, + // deleteUserById : deleteUserById, findAllUsers : findAllUsers, findUserByCredentials:findUserByCredentials, register: register, @@ -20,11 +21,19 @@ return model; function setCurrentUser(user){ - + console.log("setting the current user",user); $rootScope.currentUser=user; } + /* function deleteUserById(userId, callback){ + for(var u in model.users) { + if (model.users[u]._id == userId) { + model.users.splice(u, 1); + } + } + callback(model.users); + }*/ function findAllUsers(callback) { callback(users); diff --git a/public/assignment/client/views/forms/field.controller.js b/public/assignment/client/views/forms/field.controller.js index aaaa74c..e56c847 100755 --- a/public/assignment/client/views/forms/field.controller.js +++ b/public/assignment/client/views/forms/field.controller.js @@ -3,25 +3,28 @@ angular.module("FormBuilderApp") .controller("FieldController",FieldController); - function FieldController($rootScope,$routeParams,FieldService,$scope) { + function FieldController($rootScope,$routeParams,$scope,FieldService,FormService) { var vm = this; vm.currentUser = $rootScope.currentUser; vm.message = null; - vm.addField=addField; - vm.removeField=removeField; - vm.editField=editField; - vm.okayField=okayField; - vm.cancelField=cancelField; + vm.addField = addField; + vm.removeField = removeField; + vm.editField = editField; + vm.okayField = okayField; + vm.cancelField = cancelField; + vm.cloneField = cloneField; + $scope.updateForm = updateForm; - var formId=$routeParams.formId; + var formId = $routeParams.formId; - function init(){ + function init() { FieldService.getFieldsForForm(formId) - .then(function(response){ - vm.existingFields=response.data; + .then(function (response) { + vm.existingFields = response.data; }) } + init(); function addField(fieldType) { @@ -38,26 +41,32 @@ field = {"_id": null, "label": "New Date Field", "type": "DATE"}; } else if (fieldType == "Dropdown Field") { - field = {"_id": null, "label": "New Dropdown", "type": "OPTIONS", + field = { + "_id": null, "label": "New Dropdown", "type": "OPTIONS", "options": [ {"label": "Option 1", "value": "OPTION_1"}, {"label": "Option 2", "value": "OPTION_2"}, {"label": "Option 3", "value": "OPTION_3"} - ]}; + ] + }; } else if (fieldType == "Checkboxes Field") { - field = {"_id": null, "label": "New Checkboxes", "type": "CHECKBOXES", "options": [ - {"label": "Option A", "value": "OPTION_A"}, - {"label": "Option B", "value": "OPTION_B"}, - {"label": "Option C", "value": "OPTION_C"} - ]}; + field = { + "_id": null, "label": "New Checkboxes", "type": "CHECKBOXES", "options": [ + {"label": "Option A", "value": "OPTION_A"}, + {"label": "Option B", "value": "OPTION_B"}, + {"label": "Option C", "value": "OPTION_C"} + ] + }; } else if (fieldType == "Radio Buttons Field") { - field = {"_id": null, "label": "Radio Buttons Field", "type": "RADIOS", "options": [ - {"label": "Option X", "value": "OPTION_X"}, - {"label": "Option Y", "value": "OPTION_Y"}, - {"label": "Option Z", "value": "OPTION_Z"} - ]}; + field = { + "_id": null, "label": "Radio Buttons Field", "type": "RADIOS", "options": [ + {"label": "Option X", "value": "OPTION_X"}, + {"label": "Option Y", "value": "OPTION_Y"}, + {"label": "Option Z", "value": "OPTION_Z"} + ] + }; } else { @@ -65,84 +74,105 @@ } FieldService.createFieldForForm(formId, field) - .then(function(response){ + .then(function (response) { if (response.data) { vm.existingFields = response.data; } }); } - function removeField(field){
 - FieldService.deleteFieldFromForm(formId, field._id)
 - .then(function (response) {
 - if (response.data) {
 - vm.existingFields = response.data;
 - }
 + function removeField(field) { + FieldService.deleteFieldFromForm(formId, field._id) + .then(function (response) { + if (response.data) { + vm.existingFields = response.data; + } }); - 
} + } function editField(field) { vm.selectedField = field; vm.label = field.label; - var optionsInString= ""; + var optionsInString = ""; console.log("options", field.options); var op = field.options; - if(op){ - var optionList = []; - for(var u in op){ - optionList.push(op[u].label+ ":" +op[u].value+ "\n"); - optionsInString=optionsInString+(op[u].label+ ":" +op[u].value+"\n"); - } - optionsInString= optionsInString.substring(0,optionsInString.length-1); - vm.selectedField.options = optionList;vm.options=optionsInString; - - } + if (op) { + var optionList = []; + for (var u in op) { + optionList.push(op[u].label + ":" + op[u].value + "\n"); + optionsInString = optionsInString + (op[u].label + ":" + op[u].value + "\n"); + } + optionsInString = optionsInString.substring(0, optionsInString.length - 1); + vm.selectedField.options = optionList; + vm.options = optionsInString; + } - if(field.placeholder){ + if (field.placeholder) { vm.placeholder = field.placeholder; } } - function okayField(){ - - if(vm.selectedField.options){ - console.log("options from view",vm.options); + function okayField() { + if (vm.selectedField.options) { var opt = vm.options.split("\n"); - var optionList =[]; + var optionList = []; - for(var u in opt){ + for (var u in opt) { var val = opt[u].split(":"); - optionList.push({"label":val[0],"value":val[1]}); + optionList.push({"label": val[0], "value": val[1]}); } vm.selectedField.options = optionList; } - if(vm.selectedField.placeholder){ - vm.selectedField.placeholder = vm.placeholder + if (vm.selectedField.placeholder) { + vm.selectedField.placeholder = vm.placeholder } vm.selectedField.label = vm.label; - FieldService.updateField(formId,vm.selectedField._id,vm.selectedField) + FieldService.updateField(formId, vm.selectedField._id, vm.selectedField) .then(init()); vm.label = null; vm.placeholder = null; vm.options = null; } - function cancelField(){ + function cancelField() { FieldService.getFieldsForForm(formId) - .then(function(response) { + .then(function (response) { vm.existingFields = response.data; }) - console.log("67",vm.existingFields); vm.label = null; vm.placeholder = null; vm.options = null; } + + function cloneField(field) { + FieldService.cloneField(formId, field) + .then(init()); + } + + function updateForm(start, end) { + var newFields = []; + + for (var i in vm.existingFields) { + newFields[i] = vm.existingFields[i]; + } + + var temp = newFields[start]; + newFields[start] = newFields[end]; + newFields[end] = temp; + + FormService.findFormById(formId) + .then(function (response) { + var form = response.data; + form.fields = newFields; + FormService.updateForm(form._id, form); + }); + } } })(); diff --git a/public/assignment/client/views/forms/field.view.html b/public/assignment/client/views/forms/field.view.html index 3fae9a6..73d90d2 100755 --- a/public/assignment/client/views/forms/field.view.html +++ b/public/assignment/client/views/forms/field.view.html @@ -8,10 +8,11 @@

Forms

+
@@ -42,20 +43,22 @@

Forms

-
+
- - + +
+
+