UNPKG

unserver-unify

Version:

393 lines (369 loc) 11.6 kB
'use strict'; angular.module('bamboo.course').controller('CoursesCateCtrl', function($scope, $rootScope, loginService, CourseApi, ApiService, $state, fullWidthService) { var self = this; var page = 1; this.breadKrumKey = []; self.courseTags = loginService.school.courseTags; self.currency = (loginService.school.currency&&loginService.school.currency.sign)?loginService.school.currency.sign:'$'; var mycourses = []; this.content = {}; this.option = ''; var colorarray = ['panel-grey', 'panel-red', 'panel-blue', 'panel-sea', 'panel-green', 'panel-orange']; if (loginService.school.themecolors) { $scope.coursebtmStyle = { "background-color": loginService.school.themecolors.coursewidgetbtmcolor }; } $rootScope.fullwidthflag = true; $scope.$on("$destroy", function() { console.log('-- destroy --'); fullWidthService.listen(); }); this.items = []; this.setting = { ctrl: self, hasPhoto: false, listName: "courses", emptyTitle: 'No Course!', pageSize: 12, currentPage: (self.page + 1) }; this.togglecat = function() { if ($scope.category) { $scope.category = false; } else { $scope.category = true; } } function compareMyCourses() { if (!loginService.user) { angular.forEach(self.items, function(item, index) { if (item.infoOnlyFlag) { item.courseurl = "index.courses.infoonly"; } else { if (compareDate(item.update)) { item.newflag = true; } item.courseurl = "index.courses.info"; } console.log(item.infoOnlyFlag); }) self.setting.items = self.items; return; } loginService.getMyProfile().then(function(result) { // console.log(result); mycourses = result.courses; console.log("Mycourses", mycourses); // callback(mycourses); if (mycourses && mycourses.length > 0) { console.log("-- check --"); console.log("-- timeout --"); angular.forEach(self.items, function(item, index) { var id = item._id; if (mycourses.indexOf(id) > -1&&self.sortmethod!='coming') { item.mycourseFlag = true; } }) } angular.forEach(self.items, function(item, index) { if (compareDate(item.update)) { item.newflag = true; } if(self.sortmethod=='coming' ){ item.courseurl = "index.courses.info"; }else if (item.infoOnlyFlag) { item.courseurl = "index.courses.infoonly"; } else if ((self.inspectorFlag || item.mycourseFlag) && ($state.current.name == 'index.corsegrade')) { item.courseurl = "index.courses.course.knowledges"; } else if (self.inspectorFlag || item.mycourseFlag) { item.courseurl = "index.courses.course"; } else { item.courseurl = "index.courses.info"; } }) self.setting.items = self.items; // $scope.$apply(); console.log(self.setting.items); }); } self.totalCoursesCountUnderCat = 0; this.inspectorFlag = false; console.log(loginService.user); if(!loginService.school.disableAdminStudy){ if (loginService.user && (loginService.user.is_admin || loginService.user.grole == 'admin' || loginService.user.grole == 'sysmanager' || loginService.user.grole == 'sysinspector')) { self.inspectorFlag = true; } } var option; this.option; var industryAll = "All"; this.defaultpic = ApiService.SHOST + '/public/images/videos.png'; if (loginService.school.coursephoto) { this.defaultpic = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.coursephoto; } this.coursePhotoUrl = ApiService.SHOST + '/lcourse/'; this.subjectPicUrl = ApiService.SHOST + "/public/" + ApiService.RES; this.catePhotoUrl = ApiService.SHOST + "/wiki/"; this.industryInited = false; self.q = ''; this.toggledrop = function() { if ($scope.dropdown) { $scope.dropdown = false; } else { $scope.dropdown = true; } } var fullCatNumber = {}; function fillCateNumber(_CatNumber) { var _totalCoursesCountUnderCat = 0; for (var i = 0; i < $scope.catitems.length; i++) { var catitem = $scope.catitems[i]; var key = catitem.key; //console.log(result.data.data[key]); if (_CatNumber[key]) { catitem.counter = _CatNumber[key]; _totalCoursesCountUnderCat += (catitem.counter || 0); }else{ catitem.counter=0; } } if (self.totalCoursesCountUnderCat < _totalCoursesCountUnderCat) { self.totalCoursesCountUnderCat = _totalCoursesCountUnderCat; } } function getlateststatus() { // var path = "/lcoursescatnumber"; // ApiService.get(path).then(function(result) { // console.log(result); // if (result.data.success) { // fullCatNumber = result.data.data; // fillCateNumber(fullCatNumber) // } // }); self.showCoursesFolder = true; var info = { action: 'getSubCategoryNumber', } if(self.breadKrumKey.length!=0){ info.key = self.breadKrumKey.join(); } console.log(info); CourseApi.lcApi(info, function(data) { console.log(data); if(data){ fullCatNumber = data; fillCateNumber(fullCatNumber) } else { self.showCoursesFolder = false; } }); if($scope.catitems.length==0){ getcourses(); } console.log($scope.catitems); } this.subschool = false; this.category = angular.copy(ApiService.category); this.topCate = angular.copy(ApiService.category); this.categorykeys = angular.copy(ApiService.school.categorykeys); console.log(this.category); this.pageChanged = function(newPage) { page = newPage; getcourses(); }; this.nextPage = function() { page++; getcourses(); } 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 _i = { key: key, fullkey:fullkey, value: level, title: key, items: [], }; array.push(_i); var info = obj[key]; if (typeof info === "object") { getArray(info, _i.items, level + 1, fullkey); } } } } function generateCategoryList() { self.items = []; var catList = []; console.log(self.category); getArray(self.category, catList, 0, ''); console.log(catList); if (!self.categorykeys) { $scope.catitems = catList; } else { var keyindex = {}; var results = []; angular.forEach(catList, function(val, index) { var key = val.title; keyindex[key] = val; }) angular.forEach(self.categorykeys, function(key, index) { if (keyindex[key]) { results.push(keyindex[key]); } }) angular.forEach(keyindex, function(val, key) { var found = false; for (var i = 0; i < results.length; i++) { var record = results[i].title; if (record == key) { found = true; break; } } if (!found) { results.push(val); } }) $scope.catitems = results; console.log($scope.catitems); } getlateststatus(); } var searchmethod; var userfullnames = {}; var weekago = new Date(); weekago.setDate(weekago.getDate() - 7); function compareDate(courseDate) { var cd = new Date(courseDate); if (cd > weekago) return true; else return false; }; this.total = 0; function handleCourses(result) { console.log(result); if (self.mobileFlag) { if (!self.items || page == 1) { self.items = []; } self.items = self.items.concat(result.data.data.items); //self.items = result.data.data.items; } else { self.items = result.data.data.items; } self.setting.totalCount = result.data.data.counter; if (self.total < result.data.data.counter) { self.total = result.data.data.counter; } $scope.setting = self.setting; compareMyCourses(); } function getcourses() { console.log("getcourses"); // console.log(self.department); console.log(page); var names = []; // self.toggleSideBar (); var limit = self.setting.pageSize || 12; var info = { // id: ApiService.gid, action: "getcourselist", page: page - 1, start: (page - 1) * limit, sort: { reverse: true, predicate: self.sortmethod }, limit: limit }; info.search = {}; if(self.breadKrumKey.length!=0){ var searchCate = self.breadKrumKey.join(); info.search.industry = searchCate; } else if(self.q){ info.search.searchname = self.q; } console.log(info); return ApiService.post('/lcourses', info).then(handleCourses); } if($rootScope.courseQ&&$rootScope.courseQ!='') { self.q = $rootScope.courseQ; $scope.catitems = []; self.searchCourseByName(self.q); $rootScope.courseQ = ''; } else if($rootScope.courseCat&&$rootScope.courseCat!='') { console.log($rootScope.courseCat); self.breadKrumKey.push($rootScope.courseCat); generateFolders(); categoryImages(); $rootScope.courseCat = ''; } else { generateCategoryList(); categoryImages(); } this.searchCourseByName = function(q) { self.setting.items = []; self.items = []; page = 1; getcourses(); }; self.cateInfos = {}; function categoryImages(){ var info = { action: 'getcategoryinfos', groupKey: 'category', } ApiService.post('/news', info).then(function(result) { if (result.data.success) { angular.forEach(result.data.data, function(item) { var key = item.key; self.cateInfos[key] = item; }) console.log(self.cateInfos); } }); } this.searchCategory = function(key){ self.breadKrumKey.push(key); generateFolders(); } this.breadSearch = function(index){ self.breadKrumKey = self.breadKrumKey.slice(0,index+1); console.log(self.breadKrumKey); generateFolders(); } function generateFolders(){ var tmp = angular.copy(ApiService.category); angular.forEach(self.breadKrumKey,function(val){ if(tmp[val]){ self.category = angular.copy(tmp[val]); tmp = tmp[val]; } }); generateCategoryList(); } this.allCategory = function(){ self.breadKrumKey = []; self.category = angular.copy(ApiService.category); generateCategoryList(); } this.showCourses = function(){ $scope.catitems = []; page = 1; getcourses(); } this.headerCateSearch = function(key){ self.breadKrumKey = []; self.breadKrumKey.push(key); generateFolders(); } });