unserver-unify
Version:
128 lines (123 loc) • 3.98 kB
JavaScript
;
angular.module('bamboo.course').controller('KnowledgesPracticeCtrl', function($scope, $stateParams, ExamService, CommonService, CourseApi, ApiService, $q) {
var _self = this;
this.showTab2='pgrid';
this.id = $stateParams.cid;
this.practicePicUrl = ApiService.SHOST + '/lcourse/' + this.id + '/';
console.log(_self.id);
function getKnowLedgeSummary() {
var deferred = $q.defer();
_self.knowledgesData = {};
var info = {
action: "getKnowledgeTestSummary",
cid: _self.id,
};
ExamService.examApi(info, function(result) {
console.log(result);
if (result) {
angular.forEach(_self.Knowledges, function(item) {
var key = item.key;
if (result[key]) {
item.result = getcalresult(result[key], key);
item.score = result[key].score*10;
}
if (item.items && item.items.length) {
angular.forEach(item.items, function(_item) {
var _key = _item.key;
if (result[_key]) {
_item.result = getcalresult(result[_key], _key);
_item.score = result[_key].score*10;
}
})
}
_self.knowledgesData[key] = item;
});
deferred.resolve(true);
} else {
deferred.resolve(true);
}
});
return deferred.promise;
}
function getPracticeInfo()
{
var deferred = $q.defer();
var info = {
action: "getCourseKnowledgeQuestionCounters",
lid: _self.id,
};
ExamService.examApi(info, function(result) {
console.log(result);
_self.counters = result.counterinfo;
angular.forEach(_self.counters,function(val,key){
_self.totalq+=val;
})
var category = {};
angular.forEach(result.courses, function(course, index) {
if (course.knowledgeCat) {
category = angular.merge({}, category, course.knowledgeCat);
}
})
if (result.cat) {
category = angular.merge({}, category, result.cat);
}
var catList = [];
CommonService.getArray(category, catList, 0, '');
_self.Knowledges = catList;
console.log(_self.Knowledges);
deferred.resolve(true);
});
return deferred.promise;
}
function getcalresult(val, key) {
var total = _self.counters[key];
if (total) {
var options = {
total: total,
counter: val.counter,
qs: val.qs,
completeRate: val.qs * 100 / total,
correctRate: val.correct * 100 / (val.total),
}
if (options.qs > total) {
options.qs = total;
}
return options;
}
return {};
}
function getPracticeList()
{
var info = {
id: _self.id,
action: "getKnowledgeGroups",
}
CourseApi.lcApi(info, function(data) {
$scope.practiceList = data;
angular.forEach($scope.practiceList, function(_item) {
_item.score = 0;
_item.question = 0;
if(_item.knowledges) {
angular.forEach(_item.knowledges, function(val) {
if(_self.knowledgesData[val]&&_self.knowledgesData[val].score){
_item.score+=_self.knowledgesData[val].score;
}
if(_self.knowledgesData[val]&&_self.knowledgesData[val].result&&_self.knowledgesData[val].result['total']){
_item.question+=_self.knowledgesData[val].result['total'];
} else if(_self.counters[val]){
_item.question+=_self.counters[val];
}
});
}
});
console.log($scope.practiceList);
console.log(_self.knowledgesData);
console.log(_self.counters);
});
}
getPracticeInfo().then(function(cat){
getKnowLedgeSummary().then(function(result){
getPracticeList();
});
});
});