'use strict'; // Forms controller angular.module('forms').controller('ViewFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$modal', function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $modal) { $scope = $rootScope; var deleteModal; $scope.myform = CurrentForm.getForm(); $rootScope.saveInProgress = false; $scope.viewSubmissions = false; $scope.table = { masterChecker: false, rows: [] }; // Find a specific Form $scope.findOne = function() { $scope.myform = Forms.get({ formId: $stateParams.formId }); CurrentForm.setForm($scope.myform); }; $scope.setForm = function (form) { $scope.myform = form; }; /* * Table Functions */ $scope.isAtLeastOneChecked = function(){ // console.log('isAtLeastOneChecked'); for(var i=0; i<$scope.table.rows.length; i++){ if($scope.table.rows[i].selected) return true; } return false; }; $scope.toggleAllCheckers = function(){ // console.log('toggleAllCheckers'); for(var i=0; i<$scope.table.rows.length; i++){ $scope.table.rows[i].selected = $scope.table.masterChecker; } }; $scope.toggleObjSelection = function($event, description) { $event.stopPropagation(); }; $scope.rowClicked = function(obj) { obj.selected = !obj.selected; }; /* * Form Submission Methods */ //Delete selected submissions of Form $scope.deleteSelectedSubmissions = function(){ // console.log('deleteSelectedSubmissions'); var delete_ids = _.chain($scope.table.rows).filter(function(row){ return !!row.selected; }).pluck('_id').value(); console.log(delete_ids); $http({ url: '/forms/'+$scope.myform._id+'/submissions', method: 'DELETE', data: {deleted_submissions: delete_ids}, headers: {"Content-Type": "application/json;charset=utf-8"} }).success(function(data, status, headers){ //Remove deleted ids from table for(var i=0; i<$scope.table.rows.length; i++){ if($scope.table.rows[i].selected){ $scope.table.rows.splice(i, 1); } } }) .error(function(err){ console.log('Could not delete form submissions.\nError: '); console.log(err); console.error = err; }); }; //Fetch and display submissions of Form $scope.showSubmissions = function(){ $scope.viewSubmissions = true; $http.get('/forms/'+$scope.myform._id+'/submissions') .success(function(data, status, headers){ // console.log(data[0].form_fields); var _data = []; for(var i=0; i 0){ $scope.myforms = _.filter($scope.myforms, function(myform){ return myform._id !== form._id; }); } }).error(function(error){ console.log('ERROR: Form could not be deleted.'); console.error(error); }).finally(function(){ }); } }; // Update existing Form $scope.update = $rootScope.update = function(cb) { if(!$rootScope.saveInProgress && $rootScope.finishedRender){ $rootScope.saveInProgress = true; console.log('begin updating form'); var err = null; $scope.updatePromise = $http.put('/forms/'+$scope.myform._id, {form: $scope.myform}) .then(function(response){ $rootScope.myform = $scope.myform = response.data; console.log(response.data); if(!$scope.$digest){ $scope.$apply(); } }).catch(function(response){ console.log('Error occured during form UPDATE.\n'); console.log(response.data); err = response.data; }).finally(function() { console.log('finished updating'); $rootScope.saveInProgress = false; cb(err); }); } }; $rootScope.resetForm = function(){ $scope.myform = Forms.get({ formId: $stateParams.formId }); }; } ]);