UNPKG

unserver-unify

Version:

583 lines (567 loc) 17 kB
'use strict'; angular.module('bamboo.course').controller('GsxCoursesCtrl', function($scope, $rootScope, loginService, ApiService, deviceDetector, $state, $stateParams, fullWidthService) { var self = this; var page = 1; var groupType = $stateParams.type; this.tab = $stateParams.tab; console.log(this.tab); var mycourses = []; this.content = {}; this.allkeys = []; this.allkeycolor = []; this.allkeyresult = []; 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 }; } if (loginService.subDomain == 'gsx') { $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: 9, currentPage: (self.page + 1) }; this.togglecat = function() { if ($scope.category) { $scope.category = false; } else { $scope.category = true; } } this.show0item = true; this.showTab = "information"; 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) { item.mycourseFlag = true; } }) } angular.forEach(self.items, function(item, index) { if (compareDate(item.update)) { item.newflag = true; } if (item.infoOnlyFlag) { item.courseurl = "index.courses.infoonly"; } else if (self.inspectorFlag || item.mycourseFlag || (item.did && self.mydepartments.indexOf(item.did) > -1)) { item.courseurl = "index.courses.course"; } else { item.courseurl = "index.courses.info"; } }) self.setting.items = self.items; // $scope.$apply(); console.log(self.setting.items); }); } //console.log('isOwn:' + isOwn); //console.log($stateParams); self.showMobileSid = false; //init the var to show/hide sidebar for mobile view self.toggleSideBar = function() { self.showMobileSid = !self.showMobileSid; } this.mobileFlag = false; self.mydepartments = []; self.totalCoursesCountUnderCat = 0; this.inspectorFlag = false; console.log(loginService.user); 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.industryInited = false; self.q = ''; //init the var to save the course search name // this.Departments = ApiService.school.departments; this.totalCoursesCountUnderDepartment = 0; function getDepartments() { var lists = []; for (var i = 0; i < ApiService.school.departments.length; i++) { var info = { department: ApiService.school.departments[i], } lists.push(info); } self.Departments = lists; // console.log(self.Departments); } var departmentnames = {}; function getalldepartments() { var info = { action: 'getdepartmentsinfo', }; ApiService.post('/departments', info).then(function(result) { // console.log(result.data); if (result.data.success) { var _departmentnames = result.data.data; for (var id in _departmentnames) { var name = _departmentnames[id]; departmentnames[name] = id; } getlateststatus(); // console.log(departmentnames); } }); }; this.toggledrop = function() { if ($scope.dropdown) { $scope.dropdown = false; } else { $scope.dropdown = true; } } this.clrCoursesSearchName = function() { self.q = ''; } function getlateststatus() { if (loginService.school.coursebyDepartment) { getDepartments() var _info = { action: "getlastdailyreport", }; ApiService.post('/report', _info).then(function(result) { if (result.data.success) { // var _totalCoursesCountUnderCat = 0; if (loginService.school.coursebyDepartment) { for (var i = 0; i < self.Departments.length; i++) { var info = self.Departments[i]; var id = departmentnames[info.department]; if (id && result.data.data.cousesbydepartment[id]) { info.counter = result.data.data.cousesbydepartment[id]; // console.log(info.counter); self.totalCoursesCountUnderDepartment += info.counter; // console.log(self.totalCoursesCountUnderDepartment); } } } } }) } else { var path = "/lcoursescatnumber"; if (groupType == 'group') { path = "/lcoursesgroupnumber"; //return; } ApiService.get(path).then(function(result) { console.log(result); if (result.data.success) { 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]); //console.log(groupType); if (result.data.data[key]) { catitem.counter = result.data.data[key]; _totalCoursesCountUnderCat += (catitem.counter || 0); } } if (self.totalCoursesCountUnderCat < _totalCoursesCountUnderCat) { self.totalCoursesCountUnderCat = _totalCoursesCountUnderCat; } } }); } } this.subschool = false; this.category = ApiService.category; this.categorykeys = ApiService.school.categorykeys; if (groupType == 'group') { this.category = ApiService.materialgroup; this.categorykeys = ApiService.school.materialkeys; } console.log(this.category); this.sortmethod = this.tab || ""; //visitercounter, position,score,update,created,recommend,top if (deviceDetector.isMobile() && !deviceDetector.isTablet()) { this.setting.pageSize = Math.floor((window.screen.height - $('.row').offset().top) / 70); this.mobileFlag = true; this.sortmethod = "update"; } this.pageChanged = function(newPage) { page = newPage; getInfo(); }; this.nextPage = function() { page++; getInfo(); } function getArray(obj, array, level, parent) { if ((typeof obj) === "object") { for (var key in obj) { var fullkey; if (parent == '') { fullkey = key; } else { fullkey = parent + "," + key; } var _i = { key: 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() { var catList = []; 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; } getlateststatus(); } function getInfo() { console.log("getInfo"); if (loginService.school.coursebyDepartment) { getalldepartments(); } else { generateCategoryList(); } if (groupType != 'group' && !self.tab) { getcourses(); getMyDepartments(); } else if (groupType != 'group') { switch (self.tab) { case 'star': self.getStarCourses(); break; case 'update': self.getNewCourses(); break; case 'top': self.getTopCourses(); break; default: self.getHotestCourses(); break; } } } var searchmethod; this.getAllCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box self.sortmethod = ""; searchmethod = undefined; getcourses(); } this.getHotestCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box self.sortmethod = "visitercounter"; searchmethod = { visitercounter: { $gte: 100 }, } getcourses(); } this.getStarCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box self.sortmethod = "star"; searchmethod = { star: true, } getcourses(); } this.getGoodCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box self.sortmethod = "goodC"; searchmethod = { goodC: true, } getcourses(); } this.getPassCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box self.sortmethod = "passC"; searchmethod = { passC: true, } getcourses(); } this.getNominationCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box self.sortmethod = "nominationC"; searchmethod = { nominationC: true, } getcourses(); } this.getNewCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box // console.log("getNewCourses"); self.sortmethod = "update"; var weekago = new Date(); weekago.setDate(weekago.getDate() - 30); searchmethod = { update: { $gte: weekago }, } getcourses(); } this.getPositionCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box // console.log("getNewCourses"); self.sortmethod = "position"; searchmethod = { position: { $gte: 0 } } getcourses(); } this.getTopCourses = function() { page = 1; self.clrCoursesSearchName(); // clear name search box // console.log("getNewCourses"); self.sortmethod = "top"; searchmethod = { top: true, } getcourses(); } 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) { self.items = []; } //self.items = self.items.concat(result.data.data); self.items = result.data.data.items; } else { if (self.loadMoreFlag) { self.items = self.items.concat(result.data.data.items); self.loadMoreFlag = false; } else { self.items = result.data.data.items; } } console.log(self.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(); } self.loadMore = function() { page++; getcourses(); self.loadMoreFlag = true; } function getcourses() { console.log("getcourses"); console.log(self.department); // var names = []; // self.toggleSideBar (); var limit = self.setting.pageSize || 9; self.showMobileSid = false; if (self.department) { var info = { action: "getcourselist", start: (page - 1) * limit, sort: { reverse: true, predicate: self.sortmethod }, limit: limit, did: departmentnames[self.department] }; console.log(info); ApiService.post('/lcourses', info).then(handleCourses); } else { var info = { // id: ApiService.gid, action: "getcourselist", page: page - 1, start: (page - 1) * limit, sort: { reverse: true, predicate: self.sortmethod }, limit: limit, search: searchmethod, }; // console.log(info); if (option) { if (!info.search) { info.search = {}; } if (groupType == 'group') { info.search.categoryTags = option; } else { info.search.industry = option; } } console.log(info); return ApiService.post('/lcourses', info).then(handleCourses); } } function getMyDepartments() { console.log("getMyDepartments"); if (loginService.user && (loginService.user.grole == 'dinspector' || loginService.user.grole == 'dadmin')) { var info = { action: "getmydepartment", }; ApiService.post('/departments', info).then(function(result) { if (result.data.success) { for (var i = 0; i < result.data.data.length; i++) { self.mydepartments.push(result.data.data[i]._id) } console.log(result.data.data); console.log(self.mydepartments); } }); } } getInfo(); this.department; this.listdepartment = function(department) { self.department = department; searchmethod = null; self.setting.items = []; page = 1; getcourses(); } this.list = function(key, title) { console.log(key, title); self.currentContent = self.content[title]; if (self.currentContent) { self.showTab = "positionReq"; } else { self.showTab = "positionList"; } /* self.clrCoursesSearchName(); // clear name search box console.log(key); option = key; searchmethod = null; this.option = option; self.setting.items = []; page = 1; getcourses(); */ self.clrCoursesSearchName(); // clear name search box //self.sortmethod = ""; option = key; //searchmethod = null; this.option = option; self.setting.items = []; page = 1; getcourses(); }; this.searchCourseByName = function(q) { searchmethod = { searchname: q }; if (self.mobileFlag) { self.setting.items = []; } getcourses(); }; this.searchPositionByName = function(q) { q = angular.lowercase(q); console.log(self.allkeys); angular.forEach(self.allkeys, function(item, index) { if (angular.lowercase(self.allkeys[index]).indexOf(q) > -1) { self.allkeyresult[index] = 1; } else self.allkeyresult[index] = 0; }) }; this.goToDetail = function(key) { self.list(key, key); }; });