mirror of https://github.com/akveo/blur-admin
finishing reports
parent
be628ea0ec
commit
59c2f1e907
|
@ -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();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
|
||||
|
||||
<div ng-repeat="element in survey.elements" id="q-{{$index}}" class="panel panel-default bootstrap-panel new-question-options-container">
|
||||
<div ng-repeat="element in survey.elements track by $index" id="q-{{$index}}" class="panel panel-default bootstrap-panel new-question-options-container">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title pull-left">Question {{$index+1}}</h4>
|
||||
<div class="btn-group pull-right">
|
||||
|
@ -10,7 +10,7 @@
|
|||
<button type="button" class="btn btn-default btn-icon" ng-click="panelFoldToggle($index)"><i class="" ng-class="getTheFoldingClass()"></i></button>
|
||||
<button type="button" class="btn btn-default btn-icon"><i class="fa fa-chevron-down"></i></button>
|
||||
<button type="button" class="btn btn-default btn-icon"><i class="fa fa-chevron-up"></i></button>
|
||||
<button type="button" class="btn btn-default btn-icon"><i class="fa fa-pencil-square-o"></i></button>
|
||||
<button type="button" class="btn btn-default btn-icon" ng-click="copyElement($index)"><i class="fa fa-pencil-square-o"></i></button>
|
||||
<button type="button" class="btn btn-default btn-icon" ng-click="removeElement($index)"><i class="fa fa-trash-o"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -51,7 +51,6 @@
|
|||
<span>Required field</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!--<div class="col-md-10 pull-right">
|
||||
<label class="checkbox-inline custom-checkbox nowrap">
|
||||
<input ng-model="element.multiAnswers" type="checkbox">
|
||||
|
@ -61,10 +60,10 @@
|
|||
|
||||
<div class="col-md-10 pull-right">
|
||||
<label class="checkbox-inline custom-checkbox nowrap">
|
||||
<input ng-model="element.comment" type="checkbox">
|
||||
<span>Add an "Other" Answer Option or Comment Field</span>
|
||||
<input ng-model="element.hasComment" type="checkbox">
|
||||
<span>Add a Comment Field</span>
|
||||
</label>
|
||||
<div class="form-group" ng-show=element.comment>
|
||||
<div class="form-group" ng-show=element.hasComment>
|
||||
<label for="inputEmail3" class="col-sm-2 control-label">Label</label>
|
||||
<div class="col-sm-5">
|
||||
<input ng-model="element.commentLabel" type="text" class="form-control">
|
||||
|
@ -75,28 +74,42 @@
|
|||
<span>Required ?</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-10 pull-right">
|
||||
<ui-select ng-model="element.tag"
|
||||
class="btn-group bootstrap-select form-control"
|
||||
ng-disabled="false"
|
||||
append-to-body="true"
|
||||
search-enabled="true">
|
||||
<ui-select-match placeholder="Please choose the question category">
|
||||
{{$select.selected}}
|
||||
</ui-select-match>
|
||||
<ui-select-choices
|
||||
repeat="withSearchItem in tags | filter: $select.search">
|
||||
<span ng-bind-html="withSearchItem"></span>
|
||||
</ui-select-choices>
|
||||
</ui-select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Answer's Options -->
|
||||
<hr/>
|
||||
|
||||
<!-- Begin Tags -->
|
||||
<div class="form-group">
|
||||
<!--<div class="form-group">
|
||||
<label class="col-md-12">Question Tags</label>
|
||||
<div class="col-md-12">
|
||||
|
||||
<tags-input track-by-expr="$index" class="bootstrap" ng-model="element.tags" use-strings="true">
|
||||
|
||||
<tags-input track-by-expr="$index" class="bootstrap" ng-model="element.tags" use-strings="true" max-tags="1" enforce-max-tags>
|
||||
<auto-complete source="loadTags($query)"></auto-complete>
|
||||
</tags-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>-->
|
||||
<!-- End Tags -->
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
<div id="analysis">
|
||||
<uib-tabset active="$tabSetStatus.activeTab">
|
||||
<uib-tab heading="Question summaries">
|
||||
|
||||
<uib-tab heading="Question summaries" ng-if="vm.activeSurvey.type != 's_360'">
|
||||
<button type="button" ng-click="vm.printPdf()">Print PDF in new window</button>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="{{vm.analysis.completion}}" aria-valuemin="0" aria-valuemax="100" style="width: {{vm.analysis.completion}}%">
|
||||
{{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}})
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
@ -20,7 +21,7 @@
|
|||
|
||||
<div class="chartjs-canvas-holder-first-row" style="max-width: 300px;margin:0 auto;">
|
||||
<canvas id="doughnut" chart-options="vm.doughnutOptions" class="chart chart-doughnut"
|
||||
chart-data="vm.analysis.data[e._id]" chart-labels="vm.analysis.labels[e._id]">
|
||||
chart-data="vm.analysis.data.overall.data[e._id]" chart-labels="vm.analysis.labels[e._id]">
|
||||
</canvas>
|
||||
</div>
|
||||
|
||||
|
@ -34,7 +35,159 @@
|
|||
</div>
|
||||
|
||||
</uib-tab>
|
||||
<uib-tab heading="Individual responses">
|
||||
|
||||
<uib-tab heading="Survey summary" ng-if="vm.activeSurvey.type == 's_360'">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="{{vm.analysis.completion}}" aria-valuemin="0" aria-valuemax="100" style="width: {{vm.analysis.completion}}%">
|
||||
{{vm.activeSurvey.completion}}% of question answred (Respondents : {{vm.analysis.data.overall.respondents.length}} of {{vm.analysis.recipents}})
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="panel-group">
|
||||
|
||||
<div class="panel panel-default bootstrap-panel">
|
||||
<div class="panel-heading">{{ vm.activeSurvey.name }}</div>
|
||||
<div class="panel-body">
|
||||
|
||||
|
||||
<div class="chartjs-canvas-holder-first-row" style="width: 100%;margin:0 auto;">
|
||||
|
||||
|
||||
<canvas id="bar" class="chart chart-bar"
|
||||
chart-data="vm.s360Analysis.overall.data" chart-labels="vm.s360Analysis.overall.labels" chart-options="vm.s360ChartOption">
|
||||
</canvas>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</uib-tab>
|
||||
|
||||
|
||||
|
||||
<uib-tab heading="Lists summaries">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="{{vm.analysis.completion}}" aria-valuemin="0" aria-valuemax="100" style="width: {{vm.analysis.completion}}%">
|
||||
{{vm.activeSurvey.completion}}% of question answred (Respondents : {{vm.analysis.data.overall.respondents.length}} of {{vm.analysis.recipents}})
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="panel-group">
|
||||
<div class="panel panel-default bootstrap-panel" ng-repeat="e in vm.activeSurvey.list">
|
||||
<div class="panel-heading">{{ e.name }}</div>
|
||||
<div class="panel-body">
|
||||
<div class="chartjs-canvas-holder-first-row" style="width: 100%;margin:0 auto;" ng-if="vm.activeSurvey.type != 's_360'">
|
||||
<canvas id="bar" class="chart chart-bar"
|
||||
chart-data="vm.listAnalysis[e._id].data" chart-labels="vm.listAnalysis[e._id].labels">
|
||||
</canvas>
|
||||
</div>
|
||||
|
||||
<div class="chartjs-canvas-holder-first-row" style="width: 100%;margin:0 auto;" ng-if="vm.activeSurvey.type == 's_360'">
|
||||
<canvas id="bar" class="chart chart-bar"
|
||||
chart-data="vm.s360Analysis.lists[e._id].data" chart-labels="vm.s360Analysis.lists[e._id].labels" chart-options="vm.s360ChartOption">
|
||||
</canvas>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</uib-tab>
|
||||
|
||||
|
||||
|
||||
<uib-tab heading="Individual report" ng-if="vm.activeSurvey.type == 's_360'">
|
||||
|
||||
<div class="form-group ">
|
||||
<ui-select ng-model="vm.selectedMember"
|
||||
class="btn-group bootstrap-select form-control"
|
||||
ng-disabled="false"
|
||||
append-to-body="true"
|
||||
search-enabled="true"
|
||||
ng-change="selectedMemberChange()">
|
||||
<ui-select-match placeholder="Select With Search">
|
||||
{{$select.selected.name}}
|
||||
</ui-select-match>
|
||||
<ui-select-choices
|
||||
repeat="withSearchItem in vm.members | filter: $select.search">
|
||||
<span ng-bind-html="withSearchItem.name"></span>
|
||||
</ui-select-choices>
|
||||
</ui-select>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
|
||||
<div class="chartjs-canvas-holder-first-row" style="width: 100%;margin:0 auto;">
|
||||
<canvas id="bar" class="chart chart-bar"
|
||||
chart-data="vm.s360Analysis.individual.data[vm.selectedMember.id]" chart-labels="vm.s360Analysis.individual.labels" chart-options="vm.s360ChartOption" chart-series="vm.series">
|
||||
</canvas>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</uib-tab>
|
||||
</uib-tabset>
|
||||
|
||||
|
||||
|
||||
<uib-tab heading="Individual responses">
|
||||
<div class="form-group ">
|
||||
<ui-select ng-model="vm.selectedMember"
|
||||
class="btn-group bootstrap-select form-control"
|
||||
ng-disabled="false"
|
||||
append-to-body="true"
|
||||
search-enabled="true"
|
||||
ng-change="selectedMemberChange()">
|
||||
<ui-select-match placeholder="Select With Search">
|
||||
{{$select.selected.name}}
|
||||
</ui-select-match>
|
||||
<ui-select-choices
|
||||
repeat="withSearchItem in vm.members | filter: $select.search">
|
||||
<span ng-bind-html="withSearchItem.name"></span>
|
||||
</ui-select-choices>
|
||||
</ui-select>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
|
||||
<div class="panel-group">
|
||||
|
||||
<div class="panel panel-default bootstrap-panel" ng-repeat="answer in vm.selectedMember.answers | orderBy:'id':true">
|
||||
<div class="panel-heading">{{ answer.question.text }} <b ng-if="vm.activeSurvey.type == 's_360'">({{ answer.evaluated.name }})</b></div>
|
||||
<div class="panel-body">
|
||||
{{ answer.value }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</uib-tab>
|
||||
</uib-tabset>
|
||||
</div>
|
|
@ -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"
|
||||
}
|
||||
}]
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-danger btn-xs pull-left" ng-click="vm.updateMembers([m], 'remove')"><span class="glyphicon glyphicon-trash"></span></button>
|
||||
<button class="btn btn-danger btn-xs pull-left" ng-click="vm.updateMembers([m], 'remove', false)"><span class="glyphicon glyphicon-trash"></span></button>
|
||||
|
||||
</td>
|
||||
|
||||
|
@ -151,7 +151,7 @@
|
|||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<button class="btn btn-success btn-xs pull-left" ng-click="vm.updateMembers([m], 'add')"><span class="glyphicon glyphicon-plus"></span></button>
|
||||
<button class="btn btn-success btn-xs pull-left" ng-click="vm.updateMembers([m], 'add', false)"><span class="glyphicon glyphicon-plus"></span></button>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -3,26 +3,66 @@
|
|||
.al-main {margin-left:0 !important;}
|
||||
</style>
|
||||
|
||||
<div class="row">
|
||||
<div class="row" ng-if="vm.alreadyAnswered">
|
||||
<div class="col-md-12"
|
||||
ba-panel
|
||||
ba-panel-title="Avito Surveys"
|
||||
ba-panel-class="with-scroll">
|
||||
<div >
|
||||
<div class="alert bg-success">
|
||||
<h4>Well done!</h4>
|
||||
You have <strong>already</strong> answered this survey.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-if="!vm.isMemberIlligible">
|
||||
<div class="col-md-12"
|
||||
ba-panel
|
||||
ba-panel-title="Avito Surveys"
|
||||
ba-panel-class="with-scroll">
|
||||
<div >
|
||||
<div class="alert bg-danger">
|
||||
<h4> :( </h4>
|
||||
You seems to be <strong>not</strong> invited to answer this survey.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-if="vm.error">
|
||||
<div class="col-md-12"
|
||||
ba-panel
|
||||
ba-panel-title="Avito Surveys"
|
||||
ba-panel-class="with-scroll">
|
||||
<div >
|
||||
<div class="alert bg-danger">
|
||||
<h4> :( </h4>
|
||||
Something <strong>VERY VERY</strong> bad happened !
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-if="!vm.alreadyAnswered && vm.isMemberIlligible && !vm.error">
|
||||
<div class="col-md-12">
|
||||
<div ba-panel ba-panel-title="{{vm.survey.name}}" ba-panel-class="with-scroll">
|
||||
|
||||
<div class="section-block bold-text ng-scope"><p ng-bind-html="vm.survey.description"></p></div>
|
||||
|
||||
<div class="separator"></div>
|
||||
<ba-wizard>
|
||||
<ba-wizard ng-if="vm.survey.type == 's_360'">
|
||||
<ba-wizard-step title="{{ m.id != vm.activeMemberId ? vm.getInitials(m.name) : 'ME' }}" ng-repeat="m in vm.members track by $index" ng-init="memberId = m.id" form="vm.forms[memberId]" mid="{{ m.id }}" elements="{{vm.survey.elements}}" evaluated="{{m}}" asked="{{vm.askedMember}}" survey="{{vm.survey.id}}" name="{{vm.survey.name}}" respondents="{{vm.survey.respondents}}" last="{{ m.last }}">
|
||||
|
||||
|
||||
<ba-wizard-step title="{{ m.id != vm.activeMemberId ? vm.getInitials(m.name) : 'ME' }}" ng-repeat="m in vm.members track by $index" ng-init="memberId = m.id" form="vm.forms[memberId]" mid="{{ m.id }}" elements="{{vm.survey.elements}}" evaluated="{{m}}" asked="{{vm.askedMember}}">
|
||||
<form name="vm.forms[memberId]" novalidate ng-if="m.id != 'none'">
|
||||
<form name="vm.forms[memberId]" novalidate ng-if="memberId != 'none'">
|
||||
<ng-form name="innerForm">
|
||||
<div class="member-survey">
|
||||
<div class="separator"></div>
|
||||
<h3 class="member-full-name">{{ m.name }}</h3>
|
||||
<div class="separator"></div>
|
||||
<div id="{{e.id}}" class="form-group answer" ng-repeat="e in vm.survey.elements"
|
||||
ng-init="elementId = vm.survey.id+'_'+memberId+'_'+vm.activeMemberId+'_'+e._id" ng-class="{'has-error': innerForm[elementId].$invalid && (vm.forms[memberId].$submitted)}">
|
||||
<input type="hidden" name="{{ elementId }}_submitted" ng-model="vm.innerForm[elementId].submitted" ng-value="false"/>
|
||||
<!--<input type="hidden" name="{{ elementId }}_question" ng-model="vm.innerForm[elementId].question.$viewValue" ng-value="e"/>-->
|
||||
<p>{{ e.text }}</p>
|
||||
<label ng-class="el.multiple ? 'custom-checkbox radio-checkbox nowrap' : 'custom-radio radio-inline nowrap'" ng-repeat="el in e.items">
|
||||
<input ng-attr-type="{{el.multiple? 'checkbox' : 'radio'}}" name="{{elementId}}" ng-model="vm.innerForm[elementId].$viewValue" ng-value="el.value" ng-attr-required="{{el.required}}">
|
||||
|
@ -38,6 +78,9 @@
|
|||
</div>
|
||||
</ng-form>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
<form class="form-horizontal" name="vm.finishForm" novalidate ng-if="m.id == 'none'">
|
||||
<div class="separator"></div>
|
||||
<h3 class="member-full-name">Congratulations! You have successfully filled the form!</h3>
|
||||
|
@ -48,8 +91,44 @@
|
|||
|
||||
|
||||
|
||||
</ba-wizard>
|
||||
|
||||
</ba-wizard>
|
||||
<div ng-if="vm.survey.type != 's_360'">
|
||||
<form name="regularForm" novalidate ng-if="vm.survey.type != 's_360'" ng-submit="vm.validateForm(regularForm)" ng-show="!vm.forms[vm.activeMemberId].$processed">
|
||||
<div class="member-survey">
|
||||
<h3 class="member-full-name" ng-if="vm.survey.type == 's_regular'">{{ vm.askedMember.name }}</h3>
|
||||
<div class="separator" ng-if="vm.survey.type == 's_regular'"></div>
|
||||
<div id="{{e.id}}" class="form-group answer" ng-repeat="e in vm.survey.elements"
|
||||
ng-init="elementId = e._id" ng-class="{'has-error': regularForm[elementId].$invalid && (vm.forms[vm.activeMemberId].$submitted)}">
|
||||
|
||||
<!--<input type="hidden" name="{{ elementId }}_question" ng-model="vm.innerForm[elementId].question.$viewValue" ng-value="e"/>-->
|
||||
<p>{{ e.text }}</p>
|
||||
<label ng-class="el.multiple ? 'custom-checkbox radio-checkbox nowrap' : 'custom-radio radio-inline nowrap'" ng-repeat="el in e.items">
|
||||
<input ng-attr-type="{{el.multiple? 'checkbox' : 'radio'}}" name="{{elementId}}" ng-model="vm.formData[elementId].value" ng-value="el.value" ng-attr-required="{{el.required}}">
|
||||
<span>{{ el.value }}</span>
|
||||
</label>
|
||||
<br><br>
|
||||
<div class="form-group" ng-if="e.hasComment">
|
||||
<label for="{{ e._id }}_comment">{{e.commentLabel}}</label>
|
||||
<input type="text" class="form-control" name="{{ elementId }}_comment" ng-model="vm.formData[elementId].comment" placeholder="..." ng-attr-required="{{e.commentIsRequired}}">
|
||||
</div>
|
||||
<div class="separator"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<ul class="pager ba-wizard-pager">
|
||||
<li class="next"> <button type="submit" class="btn btn-primary">Submit <span aria-hidden="true">→</span></button></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</form>
|
||||
|
||||
<form class="form-horizontal" name="vm.finishForm" novalidate ng-if="vm.forms[vm.activeMemberId].$processed">
|
||||
|
||||
<h3 class="member-full-name">Congratulations! You have successfully filled the form!</h3>
|
||||
<div class="separator"></div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue