fixing question display + answers sending

pull/339/head
Youssef ABIDI 2017-08-28 10:25:28 +01:00
parent 0e7c94792a
commit fcee1ec7c8
4 changed files with 86 additions and 24 deletions

View File

@ -21,8 +21,27 @@
vm.surveys = data;
$log.info("Got the survey data",data);
vm.survey = getSurvey();
console.log(vm.surveys);
console.log(vm.survey);
//building forms elements
vm.forms = [];
angular.forEach(vm.survey.elements, function(element, key) {
angular.forEach(vm.survey.list.members, function(member, key) {
if(member._id != vm.activeMemberId) {
vm.forms[member._id] = {};
//vm.forms[member._id].$element_id = false;
/*var form = [];
form[element._id] = [];
vm.forms.push(form);
var input = [];
input[element._id] = false;
vm.forms[member._id].push(input);*/
}
//.push(k + ': ' + member);
});
});
console.log(vm.survey);
console.log(vm.forms);
}, function (error){
$log.error(error);
});
@ -38,11 +57,19 @@
function activate(){
vm.surveys = [];
vm.survey = [];
vm.activeMemberId = $stateParams.member_id;
loadSurveys();
console.log(vm.activeMemberId)
}
vm.submit = function(form){
//$scope.submitted = true;
alert("Angular is Awesome!!!");
console.log('submit', form);
};
activate();

View File

@ -10,27 +10,33 @@
<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-step title="{{ m.name }}" ng-repeat="m in vm.survey.list.members" ng-if='m._id != vm.activeMemberId' ng-init="memberId = m._id" form="vm.forms[memberId]" >
<form name="vm.forms[memberId]" novalidate>
<ng-form name="innerForm">
<div class="member-survey">
<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)}">
<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}}">
<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.innerForm[elementId].comment" placeholder="..." ng-attr-required="{{e.commentIsRequired}}">
</div>
<div class="separator"></div>
</div>
</div>
</ng-form>
</form>
</ba-wizard-step>
</ba-wizard>
<div id="{{e.id}}" class="form-group answer" ng-repeat="e in vm.survey.elements">
<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="{{ e._id }}" id="{{ e._id }}_{{ el._id }}" value="{{ el.value }}" ng-required="el.required">
<span>{{ el.value }}</span>
</label>
<br><br>
<div class="form-group" ng-if="e.hasComment">
<label for="input01">{{e.commentLabel}}</label>
<input type="text" class="form-control" id="{{ e._id }}_comment" name="{{ e._id }}_comment" placeholder="..." >
</div>
<div class="separator"></div>
</div>
<div class="btn-group">
<button ng-click="submitSurvey()" class="btn btn-success btn-lg">
Send
</button>
</div>
</div>
</div>

View File

@ -12,7 +12,7 @@
function routeConfig($stateProvider) {
$stateProvider
.state('viewer', {
url: '/viewer/:survey_id',
url: '/viewer/:survey_id/:member_id',
title: 'Viewer',
templateUrl: 'app/pages/viewer/viewer.html',
controller: 'ViewerPageCtrl as vm',

View File

@ -5,7 +5,7 @@
.directive('baWizardStep', baWizardStep);
/** @ngInject */
function baWizardStep() {
function baWizardStep($http) {
return {
restrict: 'E',
transclude: true,
@ -38,7 +38,36 @@
}
function submit() {
var apiBaseUrl = "http://localhost:9000"
var endpoint = apiBaseUrl + "/answers";
$scope.form && $scope.form.$setSubmitted(true);
if($scope.form && $scope.form.$invalid == false) {
//console.log("inner", $scope.form.innerForm);
angular.forEach($scope.form.innerForm, function(val, key) {
if((key.indexOf("_") !== -1) && (key.indexOf("_comment") == -1)) {
var res = key.split("_");
//console.log("res", res);
//console.log("val", val);
var commentKey = key + "_comment";
var answer = {
"value" : val.$viewValue,
"comment" : $scope.form.innerForm[commentKey].$viewValue,
"survey" : res[0],
"memberEvaluated" : res[1],
"memberAsked" : res[2]
}
console.log(answer);
/*$http.post(endpoint, answer).success(function(data) {
console.log(data.data);
//return response.data;
}).error(function(msg, code) {
//deferred.reject(msg);
});*/
}
})
}
}
function isComplete() {