unserver-unify
Version:
508 lines (479 loc) • 16.4 kB
JavaScript
;
angular.module('bamboo.mystudy').controller('MySpaceSummaryCtrl', function($scope, ApiService, CommonService, $state, $rootScope, fullWidthService, TopicApi, loginService, uiCalendarConfig, $filter, $compile, CourseApi, AppConfig, UserService, $translate) {
var self = this;
this.isEvent = false;
$rootScope.appUrl = ApiService.APPURL;
// console.log(this.appUrl );
$scope.eventSources=[];
this.calendarDate = '';
this.yesterdayDate = new Date();
this.yesterdayDate.setDate(this.yesterdayDate.getDate() - 1);
console.log(this.yesterdayDate);
function getDayClass(data) {
return '';
}
$scope.inlineOptions = {
customClass: getDayClass,
minDate: new Date(),
showWeeks: false
};
console.log($state.current.name);
$rootScope.fullwidthflag = true;
$scope.$on("$destroy", function() {
console.log('-- destroy --');
console.log($state.current.name);
fullWidthService.listen();
});
console.log(loginService.user);
this.showTask = false;
function getBlogs() {
TopicApi.BlogApi({
action: 'gethotblogs'
}, function(data) {
self.blogs = data.data;
angular.forEach(self.blogs, function(topic) {
var user = {
id: topic.author_id,
avatar: topic.avatar_url,
}
topic.fullavatar = CommonService.getAvatarSrc(user);
})
console.log(self.blogs);
})
}
function getBBSs() {
TopicApi.BBSApi({
action: 'gettopbbss'
}, function(data) {
self.bbss = data.data;
angular.forEach(self.bbss, function(item) {
var user = {
id: item.author_id,
avatar: item.avatar_url,
}
item.photourl = CommonService.getAvatarSrc(user);
})
console.log(self.bbss);
})
}
function getHotTopics() {
ApiService.get('/hotmvtopics').then(function(result) {
// console.log(data);
if (result.data.success) {
console.log(result.data.data);
self.topics = result.data.data;
angular.forEach(self.topics, function(item) {
var user = {
id: item.author_id,
avatar: item.avatar_url,
}
item.photourl = CommonService.getAvatarSrc(user);
})
}
})
}
function getAssignmentExamInfo() {
var info = {
action: "getUserToDoTasks",
}
ApiService.post("/user", info).then(function(result) {
//console.log(result);
if (result.data.success) {
if (result.data.data) {
console.log(result.data.data);
var record = result.data.data;
self.totalExams = record.totalExams;
self.totalAssignments = record.totalAssignments;
self.exams = record.exams;
self.assignments = record.assignments;
if ((self.exams && self.exams.length) || (self.assignments && self.assignments.length)) {
self.showTask = true;
return;
}
}
getHotTopics();
getBlogs();
getBBSs()
}
});
}
//getMySpaceInfo();
function getLearningCounters() {
var info = {
action: 'getLearningCounters',
}
ApiService.post('/lcourses', info).then(function(result) {
if (result.data.success) {
console.log(result.data.data);
self.courseResult = result.data.data;
if (self.courseResult.totalresources) {
self.courseResult.completeness = self.courseResult.progressScore * 100 / self.courseResult.totalresources;
}
} else {
CommonService.showError(result.data.error);
}
})
}
if (loginService.school.courseFlag) {
getLearningCounters();
getAssignmentExamInfo();
}
function getJobCounters() {
var info = {
action: 'getJobCounters',
}
ApiService.post('/job', info).then(function(result) {
if (result.data.success) {
console.log(result.data.data);
self.JobResult = result.data.data;
if (self.JobResult.applications) {
self.JobResult.offerRate = self.JobResult.offer * 100 / self.JobResult.applications;
}
} else {
CommonService.showError(result.data.error);
}
})
}
if (loginService.school.jobFlag) {
getJobCounters();
}
if (!loginService.school.courseFlag || !loginService.school.jobFlag) {
loginService.getMyProfile().then(function(result) {
console.log(result);
self.user = result;
self.showActivity = true;
});
}
if (!loginService.school.courseFlag) {
getHotTopics();
getBlogs();
getBBSs();
}
var waterfall=contra;
waterfall.waterfall([getEvents,getSession,getMeeting,getTimerTasks],function(err){
console.log($filter('date')(self.calendarDate, "yyyy-MM-d"));
if(self.calendarDate!='')
{
self.uiConfig = {
calendar: {
now: $filter('date')(self.calendarDate,"yyyy-MM-d"),
defaultView: 'timelineDay',
height: 200,
// editable: true,
header: {
center: '',
/*TODO: make these work*/
right: 'prev,next'
},
timeFormat: 'h(:mm) a',
/*TODO: make these work*/
// eventClick: $scope.alertOnEventClick,
// eventDrop: $scope.alertOnDrop,
// eventResize: $scope.alertOnResize,
eventRender: self.eventRender,
}
};
self.eventsready = true;
}
});
function getEvents(callback)
{
var info = {
action: 'getMyNewEventRecords',
}
ApiService.post("/event", info).then(function(result) {
console.log(result);
if (result.data.success) {
console.log(result.data.data);
var events = result.data.data;
$scope.eventsdata = [];
angular.forEach(events, function(item, index) {
var endDate = moment(new Date(item.time)).add(item.len, 'hours');
console.log(item.time);
if(self.yesterdayDate<new Date(item.time)&&(self.calendarDate>=new Date(item.time)||self.calendarDate==''))
{
self.calendarDate = new Date(item.time);
}
console.log(self.calendarDate);
$scope.eventsdata.push({
title: "(E)"+item.eventName,
start: new Date(item.time),
end: new Date(endDate),
hint:'Event<br/>'+item.eventName,
stick: true,
url: ApiService.HOST + '/#/events/detail/' + item.eventId,
type:'Event'
});
});
//$scope.eventSources = [$scope.eventsdata];
$scope.eventSources.push($scope.eventsdata);
// console.log($scope.eventsdata);
console.log($scope.eventsdata);
console.log("-- ready");
console.log($scope.eventSources);
}
return callback();
});
}
function getSession(callback)
{
var info = {
action: 'getusersessions',
};
ApiService.post('/coursesession', info).then(function(data) {
if (data.data.success) {
var result = data.data.data;
var _sessions = result.items;
console.log(_sessions);
var eventdata = [];
var checkdate;
angular.forEach(_sessions, function(item, idx) {
for (var i = 0; i < item.repeatCounter; i++) {
var time = item.start;
switch (item.repeatType) {
case 'week':
time = moment(item.start).add(i, 'weeks').toDate();
break;
case 'month':
time = moment(item.start).add(i, 'months').toDate();
break;
case 'day':
time = moment(item.start).add(i, 'days').toDate();
break;
}
if (!checkdate || checkdate < time) {
if(self.yesterdayDate<new Date(time)&&(self.calendarDate>=new Date(time)||self.calendarDate==''))
{
self.calendarDate = new Date(time);
}
var endDate = moment(new Date(time)).add(item.len, 'hours');
eventdata.push({
title: "(S) "+item.name,
hint:'Session<br/>Course: '+item.coursename+'<br/> Session : '+item.name,
start: new Date(time),
end: new Date(endDate),
stick: true,
color:'#03A9F4',
type:'Session'
});
}
}
});
console.log(eventdata);
$scope.eventSources.push(eventdata);
}
return callback();
});
}
function getMeeting(callback)
{
var info = {
action: 'getmymeetings',
};
ApiService.post("/vmeeting", info).then(function(result) {
if (result.data.success) {
var _meetings = result.data.data.items;
console.log(_meetings);
var eventdata = [];
angular.forEach(_meetings, function(item) {
if (item.mtype == 'broadcast') {
var href = ApiService.APPURL + '/mymeetings/broadcast/' + item._id;
} else if (item.mtype == 'espx') {
var href = ApiService.APPURL + '/mymeetings/espx/' + item._id;
} else if (item.mtype == 'youtube') {
var href = ApiService.APPURL + '/mymeetings/youtube/' + item._id;
} else if (item.mtype == 'controlppt') {
var href = ApiService.APPURL + '/mymeetings/controlppt/' + item._id;
} else {
var href = ApiService.APPURL + '/mymeetings/vroom/' + item.type + '/' + item._id;
}
if(self.yesterdayDate<new Date(item.start)&&(self.calendarDate>=new Date(item.start)||self.calendarDate==''))
{
self.calendarDate = new Date(item.start);
}
var endDate = moment(new Date(item.start)).add(2, 'hours');
eventdata.push({
title: "(V) "+ item.name,
start: new Date(item.start),
end: new Date(endDate),
hint:"Video Meeting<br/>"+item.name,
stick: true,
color:'#FF9800',
url: href,
type:'Meeting'
});
});
$scope.eventSources.push(eventdata);
}
return callback();
});
}
function getTimerTasks(callback){
var info={
action:"getUserTimeTasks",
}
ApiService.post("/user", info).then(function(result) {
//console.log(result);
if (result.data.success&&result.data.data) {
console.log(result.data.data);
var examData=[];
angular.forEach(result.data.data.exams,function(exam){
var url=ApiService.APPURL +"exam/startpage/exam/" + exam._id;
var startDate = moment(new Date(exam.stop)).subtract(2, 'hours');
if(self.yesterdayDate<new Date(startDate)&&(self.calendarDate>=new Date(startDate)||self.calendarDate==''))
{
self.calendarDate = new Date(startDate);
}
examData.push({
start:new Date(startDate),
end:new Date(exam.stop),
title:"(E) "+exam.name,
hint:"Exam<br/>"+exam.name,
textColor:'yellow',
color:'#9C27B0',
url:url,
type:'Exam'
})
})
angular.forEach(result.data.data.assignments,function(exam){
var url=ApiService.HOST + '/#/mystudy/assignment/detail/' + exam._id;
var startDate = moment(new Date(exam.stop)).subtract(2, 'hours');
if(self.yesterdayDate<new Date(startDate)&&(self.calendarDate>=new Date(startDate)||self.calendarDate==''))
{
self.calendarDate = new Date(startDate);
}
examData.push({
start:new Date(startDate),
end:new Date(exam.stop),
title:"(A) "+exam.title,
hint:"Assignment<br/>"+exam.title,
textColor:'red',
color:'#8BC34A',
url:url,
type:'Assignment'
})
})
$scope.eventSources.push(examData);
}
return callback();
})
}
self.eventRender = function( event, element, view){
element.attr({'uib-tooltip-html': "\'<p style=color:#fff>" + (event.hint||event.title) + "</p>\'", 'tooltip-append-to-body': true});
$compile(element)($scope);
};
this.toggledrop = function() {
if ($scope.dropdown) {
$scope.dropdown = false;
} else {
$scope.dropdown = true;
}
};
function getOngoingCourses()
{
var info = {
action: "getMyRelaventCourses",
page: 1,
limit: 10,
};
CourseApi.lcApi(info, function(result) {
console.log(result);
self.ongoingCourses = result.courses;
angular.forEach(self.ongoingCourses, function(item, index) {
var id = item._id;
if (self.progress && self.progress[id] && self.progress[id].chapters && self.progress[id].resources) {
item.progress = parseInt(self.progress[id].chapters * 100 / self.progress[id].resources);
}
});
self.courseDivideCount = Math.ceil(self.ongoingCourses.length/2);
console.log(self.ongoingCourses);
});
}
function getMyProgress() {
var info = {
action: "getmyprogress",
}
CourseApi.lcApi(info, function(result) {
console.log(result);
self.progress = result;
getOngoingCourses();
});
}
getMyProgress();
getActivitySummary();
function getActivitySummary() {
var info = {
action: 'getuseractivity',
id: loginService.user._id,
}
console.log(info);
UserService.UserApi(info, function(result) {
if (!result) {
return;
}
//console.log(result.history);
var history=result.history;
var label = [];
var shortLabel=[];
var data = [];
var now=new Date;
var len=1000*60*60*24*60;
for (var key in history) {
var time=new Date(key);
if(now-time<len){
label.push(key);
// shortLabel.push(key.substring(5));
}
}
label.sort();
for (var i=0;i<label.length;i++){
var key=label[i];
data.push(parseInt(history[key].total/60));
shortLabel.push(key.substring(5));
}
// console.log(shortLabel);
var _colorstr = '24,164,107';
var _data = {
labels: shortLabel,
datasets: [{
label: $translate.instant('Usages'),
fillColor: 'rgba(' + _colorstr + ',1)',
strokeColor: 'rgba(' + _colorstr + ',1)',
pointColor: 'rgba(' + _colorstr + ',1)',
pointStrokeColor: '#fff',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(' + _colorstr + ',1)',
data: data,
}]
};
$scope.activitydata=_data;
var label1 = [];
var data1 = [];
for (var key in result.summary) {
label1.push($translate.instant(capitalizeFirstLetter(key)));
data1.push(parseInt(result.summary[key]/60));
}
//console.log(label1);
// console.log(data1);
var _colorstr = '24,164,107';
var _data1 = {
labels: label1,
datasets: [{
label: $translate.instant('Usages'),
fillColor: 'rgba(' + _colorstr + ',1)',
strokeColor: 'rgba(' + _colorstr + ',1)',
pointColor: 'rgba(' + _colorstr + ',1)',
pointStrokeColor: '#fff',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(' + _colorstr + ',1)',
data: data1,
}]
};
$scope.categorydata=_data1;
});
}
$scope.options = AppConfig.CHARTOPTIONS;
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
});