UNPKG

unserver-unify

Version:

338 lines (317 loc) 10.2 kB
'use strict'; angular.module('bamboo.course').controller('KnowledgesCateCtrl', function($stateParams, $state, $localStorage, ExamService, CommonService, loginService, ApiService, $scope, $q, fullWidthService, $rootScope) { var self = this; this.pid = $stateParams.pid; // this.totalq=0; this.breadKrumKey = []; this.defaultpic = ApiService.SHOST + '/public/images/videos.png'; $scope.knowledgesData = []; this.knowledgeResult = {}; function getcalresult(val, key) { // console.log(key); var total = self.cateQuestCount; 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 {}; } $rootScope.fullwidthflag = true; $scope.$on("$destroy", function() { console.log('-- destroy --'); fullWidthService.listen(); }); 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) { self.knowledgeResult = 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) { self.examresult = result.data.data; deferred.resolve(true); } else { deferred.resolve(false); } }); return deferred.promise; } function generateKnowledgeData(){ console.log(self.Knowledges); angular.forEach(self.Knowledges, function(item) { var key = item.key; // console.log(key); for (var _tkey in self.examresult) { // console.log(_tkey); if (_tkey.indexOf(key) == 0) { console.log('matched'); if (item.exam) { item.exam.correct += self.examresult[_tkey].correct || 0; item.exam.counter += self.examresult[_tkey].counter || 0; } else { item.exam = self.examresult[_tkey]; } } } if (item.items && item.items.length) { angular.forEach(item.items, function(_item) { var _key = item.key; for (var _tkey in self.examresult) { if (_tkey.indexOf(_key) == 0) { if (_item.exam) { _item.exam.correct += self.examresult[_tkey].correct || 0; _item.exam.counter += self.examresult[_tkey].counter || 0; } else { _item.exam = self.examresult[_tkey]; } } } }) } }) } //getKnowLedgeSummary(); function getKnowLedges() { var deferred = $q.defer(); var info = { action: "getCourseKnowledgeQuestionCounters", lid: $stateParams.cid, }; if(self.breadKrumKey.length!=0){ info.key = self.breadKrumKey.join(); } console.log(info); ExamService.examApi(info, function(result) { console.log(result); self.counters = result.counterinfo || []; if(self.breadKrumKey.length==0){ 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); self.topCate = angular.copy(category); } else { self.cateQuestCount = (self.counters&&self.counters['-'])?self.counters['-']:0; } deferred.resolve(true); }); return deferred.promise; } function generateFolders() { self.cateQuestCount = 0; getKnowLedges().then(function(cat){ generateQuestionsData().then(function(res){ var category = angular.copy(self.topCate); angular.forEach(self.breadKrumKey,function(val){ if(category[val]){ category = category[val]; } }); var catList = []; console.log(self.knowledgeResult); console.log(self.counters); getArray(category, catList, 0, ''); if(self.breadKrumKey.length!=0){ angular.forEach(category,function(val,key){ self.cateQuestCount += (self.counters[key])?self.counters[key]:0; }); } self.Knowledges = catList; }); }); } function generateQuestionsData(){ var deferred = $q.defer(); self.catResult = {}; if(self.breadKrumKey.length!=0){ var tempKey = self.breadKrumKey.join(); //self.breadKrumKey[self.breadKrumKey.length-1]; if(self.cateQuestCount!=0){ generateKnowledgeData(); generateKnowledgeResult(angular.copy(self.Knowledges)); if(self.knowledgeResult[tempKey]){ console.log(self.knowledgeResult[tempKey]); self.catResult = getcalresult(self.knowledgeResult[tempKey], tempKey); console.log(self.catResult); } } deferred.resolve(true); } else { deferred.resolve(true); } return deferred.promise; } this.searchCategory = function(key){ self.breadKrumKey.push(key); generateFolders(); } this.breadSearch = function(index){ self.breadKrumKey = self.breadKrumKey.slice(0,index+1); generateFolders(); } this.headerCateSearch = function(key){ self.breadKrumKey = []; self.breadKrumKey.push(key); generateFolders(); } this.allCategory = function(){ self.breadKrumKey = []; generateFolders(); } function generateKnowledgeResult(items) { angular.forEach(items,function(val){ var arr = val.key.split(','); if(arr.length!=1){ val.key = arr[arr.length-1]; val.parent = 1; } $scope.knowledgesData.push(val); if(val.items){ generateKnowledgeResult(val.items); } }); } // if(self.pid){ // getPracticeInfo(); // } else { if($rootScope.knowledgeKey){ getKnowledgeData().then(function(res){ getKnowLedgeSummary().then(function(result){ getKnowLedges().then(function(know){ self.breadKrumKey = []; self.breadKrumKey.push($rootScope.knowledgeKey); generateFolders(); }); }); }); } else { getKnowledgeData().then(function(res){ getKnowLedgeSummary().then(function(result){ generateFolders(); }); }); } // } 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() { // console.log(node); $localStorage.userTestKey = self.breadKrumKey.join(); ExamService.redirect2Uapp($stateParams.cid, 'knowledge'); } this.gotoPractise = function() { // console.log(node); $localStorage.userTestKey = self.breadKrumKey.join(); ExamService.redirect2Practise($stateParams.cid, 'knowledge'); } this.gotoLearn = function() { $state.go("index.courses.course.knowledges.resources", { key: self.breadKrumKey.join() }); } function getArray(obj, array, level, parent) { if ((typeof obj) === "object") { for (var key in obj) { var fullkey; if (self.breadKrumKey.length==0) { fullkey = key; } else { fullkey = self.breadKrumKey.join() + "," + key; } var correctRate=0; var qs=0; if(self.knowledgeResult[fullkey]&&self.counters[key]) { var total = self.counters[key]; correctRate = self.knowledgeResult[fullkey].correct * 100 / self.knowledgeResult[fullkey].total; qs = self.knowledgeResult[fullkey].qs; } var _i = { key: key, fullkey: fullkey, value: level, title: key, correctRate: correctRate, qs: qs, items: [], }; array.push(_i); var info = obj[key]; if (typeof info === "object") { getArray(info, _i.items, level + 1, fullkey); } } } } });