diff --git a/src/app/pages/surveys/create/createTabCtrl.js b/src/app/pages/surveys/create/createTabCtrl.js index 19357c3..8b0c32f 100644 --- a/src/app/pages/surveys/create/createTabCtrl.js +++ b/src/app/pages/surveys/create/createTabCtrl.js @@ -30,7 +30,22 @@ }); } }; - }); + }) + .directive('enforceMaxTags', function() { + return { + require: 'ngModel', + link: function(scope, element, attrs, ngCtrl) { + var maxTags = attrs.maxTags ? parseInt(attrs.maxTags, '10') : null; + + ngCtrl.$parsers.push(function(value) { + if (value && maxTags && value.length > maxTags) { + value.splice(value.length - 1, 1); + } + return value; + }); + } + }; + }); /** @ngInject */ function CreateTabCtrl(SurveyService, ListService,MemberService, $scope, $http, $compile, $timeout, $stateParams, $log, toastr, $uibModal, $state) { @@ -59,7 +74,7 @@ $scope.panelFoldToggle = function(index) { $scope.survey.elements[index].isUnfolded = !$scope.survey.elements[index].isUnfolded; - console.log($scope.survey.elements[index].isUnfolded); + console.log("panelFoldToggle index isUnfolded $scope.survey.elements", index, $scope.survey.elements[index].isUnfolded, $scope.survey.elements); }; $scope.getTheFoldingClass = function() { @@ -80,7 +95,7 @@ }; $scope.createEmptyElement = function(type,orderNo){ - var item = { + var item = { id: null, orderNo: 1, value: null @@ -95,12 +110,29 @@ isUnfolded: false, comment: false, commentLabel: '', - tags:[], - tagsJoined:'', + tag:'', + //tagsJoined:'', items: (type == 'multiple') ? [item] : [], }; } + $scope.copyElement = function(index){ + //elem.id = null + var originalElem = $scope.survey.elements[index] + var newElem = $scope.createEmptyElement(originalElem.type, $scope.survey.elements.length + 1) + newElem.isUnfolded = false + newElem.text = originalElem.text + newElem.comment = originalElem.comment + newElem.commentLabel = originalElem.commentLabel + newElem.tag = originalElem.tag + newElem.items = originalElem.items + //console.log("$scope.survey.elements", $scope.survey.elements) + $scope.survey.elements.push(newElem); + $scope.updateBuilder(); + console.log("$scope.survey.elements", $scope.survey.elements) + + } + $scope.addNewItem=function(index){ var item = { @@ -287,7 +319,22 @@ if($stateParams.survey_id) { $scope.loadSurvey($stateParams.survey_id); } - $scope.loadLists(); + $scope.loadLists(); + + $scope.tags = [ + "Share of expertise with the company" , + "Acceptable work demands" , + "Good relations with management" , + "Team work" , + "Happiness", + "Innovation", + "Leadership", + "Supportiveness", + "Determination", + "Trust", + "Spirituality / my life", + "Environnement respect" + ]; } $scope.activate(); diff --git a/src/app/pages/surveys/create/widgets/multiple.html b/src/app/pages/surveys/create/widgets/multiple.html index 2145736..9b5d3a0 100644 --- a/src/app/pages/surveys/create/widgets/multiple.html +++ b/src/app/pages/surveys/create/widgets/multiple.html @@ -2,7 +2,7 @@ -
+

Question {{$index+1}}

@@ -10,7 +10,7 @@ - +
@@ -51,7 +51,6 @@ Required field
-
-
+ +
\ No newline at end of file diff --git a/src/app/pages/surveys/list/list.controller.js b/src/app/pages/surveys/list/list.controller.js index 7a71a9d..1c2c369 100644 --- a/src/app/pages/surveys/list/list.controller.js +++ b/src/app/pages/surveys/list/list.controller.js @@ -5,7 +5,7 @@ .controller('list', list); /** @ngInject */ - function list( SurveyService, AnswerService, $scope, $rootScope, $log, $state, toastr, baConfig) { + function list( SurveyService, AnswerService, MemberService, $scope, $rootScope, $log, $state, toastr, baConfig, $q, $http, $sce, $filter) { var vm = this; $rootScope.$state = $state; @@ -85,6 +85,35 @@ //console.log('getSurveyCompletion', vm.surveys); } + function printPdf(){ + console.log('printing pdf...'); + getPDF().then(function(response){ + console.log(response); + window.open(response); + },function(err){ + console.log('Error: ' + err); + }); + }; + + function getPDF(){ + vm.loading = true; + var q = $q.defer(); + $http.defaults.headers.common['content-type']= 'application/pdf'; + $http.get('http://localhost:9000/pdf/regular', {params : {"survey":vm.activeSurvey.id}, responseType:'arraybuffer'}) + .success(function (response) { + console.log(response); + var file = new Blob([response], {type: 'application/pdf'}); + var fileURL = URL.createObjectURL(file); + vm.loading = false; + q.resolve(fileURL); + }) + .error(function(err){ + vm.loading = false; + q.reject(err); + }); + return q.promise; + }; + function analyzeSurvey(survey) { var params = {"survey":survey.id} AnswerService @@ -93,34 +122,234 @@ vm.analysis = data; vm.activeSurvey = survey; $log.info("Got answers analysis",data); + getRespondents(survey); + + if(vm.activeSurvey.type != "s_360") + getListAnalysis(); + else + getS360Analysis(); + }, function (error){ $log.error(error); }); } + function getRespondents(survey) { + var members = vm.analysis.data.overall.respondents.join(', ') + var params = {"ids":members} + MemberService + .list(params) + .then(function (data){ + vm.members = data; + $log.info("Got members",data); + angular.forEach(vm.members, function(member, key) { + member.answers = $filter('filter')(vm.analysis.answers, {'asked' : {'id' : member.id}}) + }) + vm.selectedMember = (vm.members.length > 0) ? vm.members[0] : []; + console.log("getRespondents", vm.members); + }, function (error){ + $log.error(error); + }); + } + + function getS360Analysis(){ + vm.s360Analysis = {"lists" : {}, "overall": {}} + //overall + vm.s360Analysis.overall = gets360Data(vm.analysis.data.overall); + //lists + angular.forEach(vm.activeSurvey.list, function(list) { + vm.s360Analysis.lists[list._id] = {} + vm.s360Analysis.lists[list._id].labels = [] + vm.s360Analysis.lists[list._id] = gets360Data(vm.analysis.data.lists[list._id]); + }); + //individual + vm.s360Analysis.individual = gets360IndividualData(vm.analysis.data.overall); + console.log("listAnalysis", vm.s360Analysis) + + } + + function gets360Data(listData){ + var data = {} + data.labels = [] + data.data = [] + angular.forEach(vm.activeSurvey.elements, function(element) { + var index = 0; + var sumElementScore = 0; + data.labels.push(element.tag) + angular.forEach(listData.data, function(asked) { + angular.forEach(asked, function(evaluated) { + index++ + sumElementScore += evaluated[element._id] ? evaluated[element._id] : 0 + //console.log("evaluated, element._id, evaluated[element._id]", evaluated, element._id, evaluated[element._id]) + }) + }) + var average = sumElementScore / index + + data.data.push(average); + }) + return data; + } + + function gets360IndividualData(listData){ + //var data = {} + + + var data = {} + /*data.labels = [] + data.data = {} + angular.forEach(listData.members, function(member) { + data.data[member] = {} + //angular.forEach(listData.members, function(m) { + data.data[member] = {} + angular.forEach(vm.activeSurvey.elements, function(element) { + data.data[member][element._id] = [] + }) + //}) + }) + var askedData = {} + angular.forEach(vm.activeSurvey.elements, function(element) { + angular.forEach(listData.data, function(asked, a) { + var askedScore = 0 + askedData[a] = askedData[a] ? askedData[a] : [] + angular.forEach(asked, function(evaluated, e) { + if(e=='59b7f2d5c59b371d734ac120' && element._id =='59b7f8bbc59b371d734ac144') + console.log("evaluated[element._id]",evaluated[element._id]) + + askedScore += evaluated[element._id] ? evaluated[element._id] : 100 + + if (a == e) { + var val = evaluated[element._id] ? evaluated[element._id] : 0 + //askedData[a][element._id].push(val) + //console.log("a, val, askedData", a, val, askedData) + } + + if(e=='59b7f2d5c59b371d734ac120' && element._id =='59b7f8bbc59b371d734ac144') + console.log("askedScore",askedScore) + }) + + var avg = askedScore / listData.members.length + data.data[a][element._id].push(avg); + }) + })*/ + //console.log("data.data", data.data) + data.data = {} + data.labels = [] + var askedData = {} + angular.forEach(vm.activeSurvey.elements, function(element) { + var index = 0; + var sumElementScore = 0; + + data.labels.push(element.tag) + angular.forEach(listData.data, function(asked, a) { + var i = 0; + var askedScore = 0 + askedData[a] = askedData[a] ? askedData[a] : [] + data.data[a] = data.data[a] ? data.data[a] : [] + angular.forEach(asked, function(evaluated, e) { + i++ + + askedScore = askedScore + evaluated[element._id] + + + + if(e=='59b7f2d5c59b371d734ac120' && element._id =='59b7f8bbc59b371d734ac144') + { + console.log("evaluated[element._id], askedScore, i",evaluated[element._id], askedScore, evaluated) + //console.log("i, evaluated[element._id], a", i, evaluated[element._id], a) + } + if (a == e) { + var val = evaluated[element._id] ? evaluated[element._id] : 0 + askedData[a].push(val) + if(e=='59b7f2d5c59b371d734ac120' && element._id =='59b7f8bbc59b371d734ac144') + console.log("a, val, askedData askedScore", a, val, askedData) + } + //console.log("evaluated, element._id, evaluated[element._id]", evaluated, element._id, evaluated[element._id]) + }) + var avg = askedScore / listData.members.length + data.data[a].push(avg); + }) + //var average = sumElementScore / index + //data.data.push(average); + + //console.log("data.data, askedData", data.data, askedData); + //data.data.push(average); + }) + + var finalData = {} + finalData.data = {} + angular.forEach(data.data, function(el, key) { + finalData.data[key] = [] + angular.forEach(askedData, function(ask, k) { + + if(key == k) { + finalData.data[key] = [el, ask] + } + + + }) + + }) + finalData.labels = data.labels + return finalData; + } + + function getListAnalysis(){ + vm.listAnalysis = {} + angular.forEach(vm.activeSurvey.list, function(list) { + vm.listAnalysis[list._id] = {} + //analysis.id = list._id + //analysis.name = list.name + vm.listAnalysis[list._id].labels = [] + vm.listAnalysis[list._id].data = [] + var listData = vm.analysis.data.lists[list._id] + //console.log(vm.analysis.data.lists[list._id]) + angular.forEach(vm.activeSurvey.elements, function(element) { + + vm.listAnalysis[list._id].labels.push(element.tag) + var perfectScore = listData.respondents.length * element.items.length //totalParticip * nbrChoix + // nobreReponseN * coeficientN + ... + var totalScore = 0; + for ( var i = 0, _len = listData.data[element._id].length; i < _len; i++ ) { + totalScore += listData.data[element._id][i] * (i+1) + } + var percent = totalScore * 100 / perfectScore + vm.listAnalysis[list._id].data.push(percent); + //console.log("listData.data[element._id], perfectScore, totalScore, percent", listData.data[element._id], perfectScore, totalScore, percent) + }) + //vm.listAnalysis.push(analysis) + }); + console.log("listAnalysis", vm.listAnalysis) + + } + function activate(){ vm.surveys = []; vm.activeSurvey = {}; + vm.members = []; + vm.selectedMember = {}; vm.goToCreate = goToCreate; vm.analyzeSurvey = analyzeSurvey; vm.editSurvey = editSurvey; vm.removeSurvey = removeSurvey; + vm.printPdf = printPdf; - var layoutColors = baConfig.colors; - vm.doughnutOptions = { - elements: { - arc: { - borderWidth: 0 - } - }, - legend: { - display: true, - position: 'bottom', - labels: { - fontColor: layoutColors.defaultText - } + vm.s360ChartOption = { + scales: { + + yAxes: [{ + ticks: { + + min: 0, + max: 10, + callback: function(value){return value} + }, + scaleLabel: { + display: false + } + }] } }; + vm.series = ['How the others see you', 'How you evaluated yourself']; loadSurveys(); } diff --git a/src/app/pages/surveys/list/surveyDetails.html b/src/app/pages/surveys/list/surveyDetails.html index 674a6dc..297b638 100644 --- a/src/app/pages/surveys/list/surveyDetails.html +++ b/src/app/pages/surveys/list/surveyDetails.html @@ -1,12 +1,13 @@ +
- - + +
- {{vm.activeSurvey.completion}}% of question answred (Respondents : {{vm.analysis.respondents.length}} of {{vm.analysis.recipents}}) + {{vm.activeSurvey.completion}}% of question answred (Respondents : {{vm.analysis.data.overall.respondents.length}} of {{vm.analysis.recipents}})

@@ -20,7 +21,7 @@
+ chart-data="vm.analysis.data.overall.data[e._id]" chart-labels="vm.analysis.labels[e._id]">
@@ -34,7 +35,159 @@
- + + + +
+
+ +
+
+ {{vm.activeSurvey.completion}}% of question answred (Respondents : {{vm.analysis.data.overall.respondents.length}} of {{vm.analysis.recipents}}) +
+
+
+ +
+ +
+
{{ vm.activeSurvey.name }}
+
+ + +
+ + + + + +
+ + + +
+
+ +
+
+
+ +
+ + + + + +
+
+ +
+
+ {{vm.activeSurvey.completion}}% of question answred (Respondents : {{vm.analysis.data.overall.respondents.length}} of {{vm.analysis.recipents}}) +
+
+
+ +
+
+
{{ e.name }}
+
+
+ + +
+ +
+ + +
+ + + +
+
+ +
+
+
+ +
+ + + + + +
+ + + {{$select.selected.name}} + + + + + +
+ +
+
+ + +
+ + +
+ +
+
- \ No newline at end of file + + + + +
+ + + {{$select.selected.name}} + + + + + +
+ +
+
+ +
+ +
+
{{ answer.question.text }} ({{ answer.evaluated.name }})
+
+ {{ answer.value }} +
+
+ +
+
+
+ +
+ +
\ No newline at end of file diff --git a/src/app/pages/surveys/surveys.module.js b/src/app/pages/surveys/surveys.module.js index 6f8211e..2aae291 100644 --- a/src/app/pages/surveys/surveys.module.js +++ b/src/app/pages/surveys/surveys.module.js @@ -71,7 +71,7 @@ }); // Configure all line charts ChartJsProvider.setOptions('Line', { - datasetFill: false + datasetFill: false, }); // Configure all radar charts ChartJsProvider.setOptions('radar', { @@ -88,8 +88,23 @@ // Configure all bar charts ChartJsProvider.setOptions('bar', { tooltips: { - enabled: false - } + enabled: true + }, + scales: { + + yAxes: [{ + ticks: { + + min: 0, + max: 100, + callback: function(value){return value+ "%"} + }, + scaleLabel: { + display: true, + labelString: "Percentage" + } + }] + } }); } diff --git a/src/app/pages/teams/answer.service.js b/src/app/pages/teams/answer.service.js index a8369c0..5705330 100644 --- a/src/app/pages/teams/answer.service.js +++ b/src/app/pages/teams/answer.service.js @@ -47,10 +47,9 @@ function analyze(params) { params = params || {}; - endpoint = endpoint + "/analyze" var deferred = $q.defer(); - $http.get(endpoint, { params : params}) + $http.get(endpoint + "/analyze", { params : params}) .success(function(data) { deferred.resolve(data); }).error(function(msg, code) { @@ -60,7 +59,7 @@ return deferred.promise; - return $http.get(endpoint, params); + return $http.get(endpoint + "/analyze", params); } return { diff --git a/src/app/pages/teams/lists/ListsTabCtrl.js b/src/app/pages/teams/lists/ListsTabCtrl.js index ecb715e..a94607d 100644 --- a/src/app/pages/teams/lists/ListsTabCtrl.js +++ b/src/app/pages/teams/lists/ListsTabCtrl.js @@ -236,6 +236,7 @@ for (var i = 0; i < members.length; i++) { if(multi == false || (multi == true && members[i].Selected == true)) { var index = list.members.indexOf(members[i].id); + console.log('index', index) //vm.listMembers = []; if (action == "add") { if (index == -1) @@ -248,7 +249,7 @@ } - + console.log('updateMembers:modified members', list.members) vm.activeList.isChecked = true; ListService .edit(list) diff --git a/src/app/pages/teams/lists/listsDirective.html b/src/app/pages/teams/lists/listsDirective.html index 686e287..decb7b5 100644 --- a/src/app/pages/teams/lists/listsDirective.html +++ b/src/app/pages/teams/lists/listsDirective.html @@ -77,7 +77,7 @@
- + @@ -151,7 +151,7 @@ - + diff --git a/src/app/pages/viewer/ViewerPageCtrl.js b/src/app/pages/viewer/ViewerPageCtrl.js index 43b57dc..a208112 100644 --- a/src/app/pages/viewer/ViewerPageCtrl.js +++ b/src/app/pages/viewer/ViewerPageCtrl.js @@ -9,7 +9,7 @@ .controller('ViewerPageCtrl', ViewerPageCtrl); /** @ngInject */ - function ViewerPageCtrl($scope, $stateParams, SurveyService, $log) { + function ViewerPageCtrl($scope, $stateParams, SurveyService, AnswerService, $log, $filter) { //alert('test'); var vm = this; @@ -20,10 +20,12 @@ .then(function (data){ vm.survey = data; $log.info("Got the survey data",data); + + var alreadyAnswered = checkIfAlreadyAnswered(); + var isMemberIlligible = checkIfIlligible(); //building forms elements - //angular.forEach(vm.survey.elements, function(element, key) { - // console.log("element",element); + if (!alreadyAnswered && isMemberIlligible) { angular.forEach(vm.survey.list, function(list, key) { console.log("list",list); angular.forEach(list.members, function(member, key) { @@ -32,38 +34,75 @@ vm.forms[member.id].elements = vm.survey.elements; vm.forms[member.id].question = {}; if(member.id != vm.activeMemberId) { + member.last = false; vm.members.push(member); + - } else + } else vm.askedMember = member; //.push(k + ': ' + member); }); + + }); + vm.askedMember.last = true; vm.members.push(vm.askedMember); //Thnak You message vm.members.push({"id": "none", "name" : ": )"}); - }); - // }); - /*console.log("loadSurvey:vm.survey",vm.survey); - console.log("loadSurvey:vm.survey.list.members",vm.survey.list.members); - console.log("loadSurvey:vm.forms",vm.forms);*/ + } else { + $log.info("Already answered"); + if (alreadyAnswered) + vm.alreadyAnswered = true; + else + vm.isMemberIlligible = false; + } + + + + }, function (error){ + vm.error = true; $log.error(error); }); } + function checkIfAlreadyAnswered() { + console.log("checkIfAlreadyAnswered", vm.survey.respondents.length, vm.survey.respondents.indexOf(vm.activeMemberId)) + if (vm.survey.respondents.length > 0 && vm.survey.respondents.indexOf(vm.activeMemberId) !== -1) + return true + return false + } + + function checkIfIlligible() { + var element = [] + angular.forEach(vm.survey.list, function(list, key) { + if (element.length == 0) + element = $filter('filter')(list.members, {'id':vm.activeMemberId}) + }) + //console.log("checkIfIlligible", element, element.length) + if (element.length > 0) + return true; + + return false; + } + function activate(){ vm.forms = []; vm.survey = {}; vm.members = []; + vm.alreadyAnswered = false; + vm.isMemberIlligible = true; + vm.error = false; vm.askedMember = {}; - vm.activeMemberId = $stateParams.member_id; - loadSurvey($stateParams.survey_id); - console.log(vm.activeMemberId) - - + vm.formData = {} + if ($stateParams.member_id && $stateParams.survey_id) { + vm.activeMemberId = $stateParams.member_id; + loadSurvey($stateParams.survey_id); + } else + vm.error = true; + } vm.getInitials = function(string) { @@ -77,11 +116,76 @@ return initials; }; - vm.test = function(form){ - //$scope.submitted = true; - alert("Angular is Awesome!!!"); - console.log('submit', form); - }; + vm.validateForm = function(form){ + vm.forms[vm.activeMemberId].$submitted = true; + if (!form.$valid ) { + //alert("Please fill in all required fields!"); + console.log('error submitting', form); + return false; + }else{ + console.log('submitting', vm.formData); + vm.sendAnswers(vm.formData) + } + console.log('submit'); + }; + + vm.sendAnswers = function(formData) { + + console.log("formData", formData); + var counter = 0; + + angular.forEach(formData, function(val, key) { + + if(key.indexOf("_") == -1) { + var elementId = key; + console.log("elementId", elementId); + //console.log("val", val); + var commentKey = key + "_comment"; + var submittedKey = key + "_submitted"; + //console.log("key", key); + console.log("commentKey", commentKey); + console.log("submittedKey", submittedKey); + var element = $filter('filter')(vm.survey.elements, {'_id':elementId}) + var answer = { + "value" : val.value, + "comment" : (val.comment) ? val.comment : '', + "survey" : vm.survey.id, + "asked" : vm.askedMember, + "question": element[0] + } + AnswerService + .create(answer) + .then( + function (data){ + counter++; + console.log("answer.create, counter, elements",data, counter, vm.survey.elements.length); + //trigger this when all the answers are sent + if(counter == vm.survey.elements.length) { + var respondents = vm.survey.respondents; + respondents.push(vm.askedMember.id); + vm.survey.respondents = respondents; + SurveyService + .update(vm.survey) + .then( + function (data){ + console.log("updated survey",data); + vm.forms[vm.activeMemberId].$processed = true; + }, + function (error){ + console.log("Error updating the survey"); + } + ); + } + + }, + function (error){ + console.log("Error creating the answer"); + } + ); + + } + }) + }; activate(); diff --git a/src/app/pages/viewer/viewer.html b/src/app/pages/viewer/viewer.html index ac46a4e..1bbd944 100644 --- a/src/app/pages/viewer/viewer.html +++ b/src/app/pages/viewer/viewer.html @@ -3,26 +3,66 @@ .al-main {margin-left:0 !important;} -
+
+
+
+
+

Well done!

+ You have already answered this survey. +
+
+
+
+ +
+
+
+
+

:(

+ You seems to be not invited to answer this survey. +
+
+
+
+ +
+
+
+
+

:(

+ Something VERY VERY bad happened ! +
+
+
+
+ +

- + + + - -
+
-
-

{{ m.name }}

-

{{ e.text }}

+ + +

Congratulations! You have successfully filled the form!

@@ -48,8 +91,44 @@ - - + +
+ +
+

{{ vm.askedMember.name }}

+
+
+ + +

{{ e.text }}

+ +

+
+ + +
+
+
+
+ + + + +
+ +

Congratulations! You have successfully filled the form!

+
+ +
+
diff --git a/src/app/pages/viewer/viewer.module.js b/src/app/pages/viewer/viewer.module.js index 0227a92..bcf0eec 100644 --- a/src/app/pages/viewer/viewer.module.js +++ b/src/app/pages/viewer/viewer.module.js @@ -13,6 +13,10 @@ $stateProvider .state('viewer', { url: '/viewer/:survey_id/:member_id', + params: { + survey_id: { squash: true, value: null }, + member_id: { squash: true, value: null }, + }, title: 'Viewer', templateUrl: 'app/pages/viewer/viewer.html', controller: 'ViewerPageCtrl as vm', diff --git a/src/app/theme/components/baWizard/baWizardStep.directive.js b/src/app/theme/components/baWizard/baWizardStep.directive.js index 6a7f277..c8ad531 100644 --- a/src/app/theme/components/baWizard/baWizardStep.directive.js +++ b/src/app/theme/components/baWizard/baWizardStep.directive.js @@ -5,7 +5,7 @@ .directive('baWizardStep', baWizardStep); /** @ngInject */ - function baWizardStep($http, AnswerService, $filter) { + function baWizardStep($http, AnswerService, SurveyService, $filter) { return { restrict: 'E', transclude: true, @@ -43,6 +43,10 @@ var elements = angular.fromJson($attrs.elements); var memberEvaluated = angular.fromJson($attrs.evaluated); var memberAsked = angular.fromJson($attrs.asked); + var survey = $attrs.survey; + var surveyName = $attrs.name; + var isLast = $attrs.last == "true" ? true : false; + var respondents = angular.fromJson($attrs.respondents); $scope.form && $scope.form.$setSubmitted(true); if($scope.form && $scope.form.$invalid == false) { @@ -50,22 +54,24 @@ console.log("$attrs.elements", elements); console.log("inner", $scope.form.innerForm); - angular.forEach($scope.form.innerForm, function(val, key) { + var counter = 0; - if((key.indexOf("_") !== -1) && (key.indexOf("_comment") == -1) && (key.indexOf("_submitted") == -1) && (key.indexOf("_question") == -1)) { + angular.forEach($scope.form.innerForm, function(val, key) { + if((key.indexOf("_") !== -1) && (key.indexOf("_comment") == -1) && (key.indexOf("_submitted") == -1) && (key.indexOf("_last") == -1)) { var res = key.split("_"); - console.log("res", res); + var elementId = res[3]; //console.log("val", val); var commentKey = key + "_comment"; var submittedKey = key + "_submitted"; + var lastKey = key + "_last"; //console.log("key", key); //console.log("commentKey", commentKey); //console.log("submittedKey", submittedKey); - var element = $filter('filter')(elements, {'_id':res[3]}) + var element = $filter('filter')(elements, {'_id':elementId}) var answer = { "value" : val.$viewValue, "comment" : ($scope.form.innerForm[commentKey]) ? $scope.form.innerForm[commentKey].$viewValue : '', - "survey" : res[0], + "survey" : survey, "evaluated" : memberEvaluated, "asked" : memberAsked, "question": element[0] @@ -78,6 +84,9 @@ .update(answer) .then( function (data){ + counter++; + if(counter == elements.length && isLast) + $scope.isLast(survey, surveyName, memberAsked.id, respondents); console.log("answer.update",data); $scope.form.innerForm[submittedKey].$viewValue = data.data.id; }, @@ -99,6 +108,9 @@ .update(answer) .then( function (data){ + counter++; + if(counter == elements.length && isLast) + $scope.isLast(survey, surveyName, memberAsked.id, respondents); console.log("answer.update",data); $scope.form.innerForm[submittedKey].$viewValue = data.data.id; }, @@ -111,6 +123,9 @@ .create(answer) .then( function (data){ + counter++; + if(counter == elements.length && isLast) + $scope.isLast(survey, surveyName, memberAsked.id, respondents); console.log("answer.create",data); $scope.form.innerForm[submittedKey].$viewValue = data.data.id; }, @@ -133,6 +148,23 @@ } } + $scope.isLast = function(survey, surveyName, member, respondents) { + + respondents.push(member); + var surveyObj = {"id":survey, "name": surveyName, "respondents": respondents} + console.log("isLast", surveyObj); + SurveyService + .update(surveyObj) + .then( + function (data){ + console.log("updated survey",data); + }, + function (error){ + console.log("Error updating the survey"); + } + ); + } + function isComplete() { return $scope.form ? $scope.form.$valid : true; } diff --git a/src/sass/theme/_layout.scss b/src/sass/theme/_layout.scss index 23e15ae..cf6d328 100644 --- a/src/sass/theme/_layout.scss +++ b/src/sass/theme/_layout.scss @@ -364,4 +364,11 @@ background-color: white; #surveys .progress{ margin: 10px; +} + +#analysis .panel-group .panel { + margin-bottom: 25px; +} +#analysis .bootstrap-panel .panel-body { + padding: 15px !important; } \ No newline at end of file