unserver-unify
Version:
393 lines (369 loc) • 11.6 kB
JavaScript
;
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();
}
});