UNPKG

unserver-unify

Version:

234 lines (225 loc) 7.13 kB
'use strict'; angular.module('bamboo.course').controller('KnowledgesCtrl', function($stateParams, $localStorage, ExamService, CommonService, loginService, ApiService, $scope, $q) { var self = this; /* CourseApi.getKnowledges($stateParams.cid, function(list) { console.log(list); self.Knowledges = list; });*/ this.pid = $stateParams.pid; this.totalq=0; $scope.knowledgesData = []; function getcalresult(val, key) { // console.log(key); var total = self.counters[key]; if (total) { // self.totalq+=total; // console.log(self.totalq); 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; } // console.log(options); return options; } // console.log(val); // console.log(key); // console.log(self.counters[key]); return {}; } this.totalscore=0; function getKnowLedgeSummary() { var deferred = $q.defer(); var info = { action: "getKnowledgeTestSummary", cid: $stateParams.cid, }; // console.log('--regen cat'); ExamService.examApi(info, function(result) { console.log(result); if (result) { angular.forEach(self.Knowledges, function(item) { var key = item.key; // console.log(key); if (result[key]) { item.result = getcalresult(result[key], key); self.totalscore+=result[key].score*10; } if (item.items && item.items.length) { angular.forEach(item.items, function(_item) { var _key = _item.key; if (result[_key]) { self.totalscore+=result[_key].score*10; // console.log(_key,result[_key]); _item.result = getcalresult(result[_key], _key); } }) } }) // console.log(self.Knowledges); deferred.resolve(true); } else { deferred.resolve(false); } }); return deferred.promise; } function getKnowledgeData() { var deferred = $q.defer(); var info = { cid: $stateParams.cid, id: loginService.user._id, action: "getusercourseknowledges", } // console.log(info); ApiService.post('/user', info).then(function(result) { if (result.data.success) { var examresult = result.data.data; // console.log(examresult); angular.forEach(self.Knowledges, function(item) { var key = item.key; // console.log(key); for (var _tkey in examresult) { // console.log(_tkey); if (_tkey.indexOf(key) == 0) { console.log('matched'); if (item.exam) { item.exam.correct += examresult[_tkey].correct || 0; item.exam.counter += examresult[_tkey].counter || 0; } else { item.exam = examresult[_tkey]; } } } if (item.items && item.items.length) { angular.forEach(item.items, function(_item) { var _key = item.key; for (var _tkey in examresult) { if (_tkey.indexOf(_key) == 0) { if (_item.exam) { _item.exam.correct += examresult[_tkey].correct || 0; _item.exam.counter += examresult[_tkey].counter || 0; } else { _item.exam = examresult[_tkey]; } } } }) } }) // console.log(self.Knowledges); deferred.resolve(true); } else { deferred.resolve(false); } }); return deferred.promise; } //getKnowLedgeSummary(); function getKnowLedges() { var info = { action: "getCourseKnowledgeQuestionCounters", lid: $stateParams.cid, // key:'Physics', }; // console.log('--regen cat'); ExamService.examApi(info, function(result) { console.log(result) 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 resultCopy = angular.copy(result); console.log(category); if(self.pid&&self.practice.knowledges&&resultCopy.cat) { var cat = {}; var counterinfo = {}; angular.forEach(self.practice.knowledges,function(val,key){ //var index = result.cat.indexOf(val); if(category[val]){ cat[val] = category[val]; } if(resultCopy.counterinfo[val]){ counterinfo[val] = resultCopy.counterinfo[val]; } }); category = cat; if(result.counterinfo){ result.counterinfo = counterinfo; } } console.log(result); self.counters = result.counterinfo; angular.forEach(self.counters,function(val,key){ self.totalq+=val; // console.log(key); // console.log(val); }) var catList = []; CommonService.getArray(category, catList, 0, ''); self.Knowledges = catList; getKnowledgeData().then(function(res){ getKnowLedgeSummary().then(function(result){ console.log(self.Knowledges); generateKnowledgeResult(angular.copy(self.Knowledges)); }); }); // console.log(catList); // callback(catList); }); } function generateKnowledgeResult(items) { angular.forEach(items,function(val){ var arr = val.key.split(','); if(arr.length!=1){ val.subkey = arr[arr.length-1]; val.parent = 1; } $scope.knowledgesData.push(val); if(val.items){ generateKnowledgeResult(val.items); } }); } if(self.pid){ getPracticeInfo(); } else { getKnowLedges(); } function getPracticeInfo() { var info = { action: 'getKnowledgeGroup', id: self.pid, }; ApiService.post('/lcourses', info).then(function(result) { if(result.data.success){ self.practice = result.data.data || {}; console.log(self.practice); getKnowLedges(); } }); } this.gotoTest = function(node) { // console.log(node); $localStorage.userTestKey = node.key; ExamService.redirect2Uapp($stateParams.cid, 'knowledge'); } this.gotoPractise = function(node) { // console.log(node); $localStorage.userTestKey = node.key; ExamService.redirect2Practise($stateParams.cid, 'knowledge'); } });