unserver-unify
Version:
161 lines (155 loc) • 4.66 kB
JavaScript
angular.module('bamboo.material').controller('MaterialListCtrl', function($scope, ApiService, $stateParams, loginService) {
var _self = this;
console.log("---- 'MaterialListCtrl' -----");
this.defaultPhoto = "assets/images/material.png";
this.photoUrl = ApiService.SHOST + '/material/';
this.items = [];
this.itemNumber = 6;
this.page = 0;
this.currentPage = 1;
this.user = loginService.user;
this.category;
this.selected = false;
this.materialgroup = ApiService.materialgroup;
this.materialkeys = ApiService.school.materialkeys;
_self.shareFlag = $stateParams.share;
$scope.setting = {
pageSize: _self.itemNumber,
currentPage: (_self.page + 1),
};
var mygroup;
if (loginService.user) {
loginService.getMyProfile().then(function(result) {
mygroup = result.mgroup;
});
} else {
mygroup = "FFFF";
}
var currentcat = null;
function getitems(cat) {
var info = {
start: (_self.currentPage - 1) * _self.itemNumber,
limit: _self.itemNumber,
action: "getenablematerials",
};
currentcat = cat;
if (cat) {
if (!info.search) {
info.search = {};
}
info.search.category = cat;
}
console.log(info);
ApiService.post("/material", info).then(function(result) {
console.log(result);
if (result.data.success) {
console.log(result.data.data.items);
_self.items = result.data.data.items
console.log(_self.mygroup);
console.log(cat)
angular.forEach(_self.items, function(item, index) {
if (item.public) {
item.url = ".detail";
} else if ((!_self.user.grole && !_self.user.is_admin) || (_self.user.grole && _self.user.grole == "user")) {
if (item.category.indexOf(_self.mygroup) > -1) {
item.url = ".detail";
} else {
item.url = ".info";
}
} else {
item.url = ".detail";
}
});
_self.catCount = result.data.data.counter;
$scope.articleCounter = result.data.data.counter;
if (!_self.totalCount || _self.totalCount < result.data.data.counter) {
_self.totalCount = result.data.data.counter;
}
}
});
};
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);
}
}
}
}
this.pageChanged = function(page) {
_self.currentPage = page;
getitems(currentcat);
}
function generateCategoryList() {
var catList = [];
console.log(_self.materialgroup);
getArray(_self.materialgroup, catList, 0, '');
console.log(catList);
if (!_self.materialkeys) {
$scope.catitems = catList;
} else {
var keyindex = {};
var results = [];
angular.forEach(catList, function(val, index) {
var key = val.title;
keyindex[key] = val;
})
angular.forEach(_self.materialkeys, 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();
getitems();
}
generateCategoryList();
function getlateststatus() {
ApiService.get('/materialcatnumber').then(function(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;
if (result.data.data[key]) {
catitem.counter = result.data.data[key];
}
}
}
});
}
this.list = function(key) {
console.log(key);
getitems(key);
}
});