unserver-unify
Version:
235 lines (222 loc) • 8.39 kB
JavaScript
;
angular.module('bamboo.mystudy').controller('MyEventsCtrl', function(ApiService, loginService, $scope, $compile, uiCalendarConfig, $translate, $rootScope) {
var _self = this;
var defaultEventPhoto = ApiService.SHOST + "/public/images/details.png";
if (loginService.school.eventphoto) {
defaultEventPhoto = ApiService.SHOST + "/public/" + ApiService.RES + "/school/" + ApiService.gid + "/" + loginService.school.eventphoto;
}
$scope.eventSources=[];
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');
$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);
// _self.eventsready = true;
console.log("-- ready");
console.log($scope.eventSources);
_self.eventsready = true;
}
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) {
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;
}
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');
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');
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();
})
}
var waterfall=contra;
waterfall.waterfall([getEvents,getSession,getMeeting,getTimerTasks],function(err){
_self.eventsready = true;
_self.calendarData = angular.copy($scope.eventSources);
console.log($scope.eventSources);
});
$scope.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);
};
$scope.uiConfig = {
calendar: {
//defaultView: 'timelineDay',
height: 500,
// editable: true,
header: {
left: 'title month1 agendaWeek timelineDay',
center: '',
/*TODO: make these work*/
right: 'today prev,next'
},
// buttonText: {
// today: $translate.instant('Today'),
// month: $translate.instant('Month'),
// week: $translate.instant('Week'),
// day: $translate.instant('Day')
// },
locale: ($rootScope.currentLanguage == 'Chinese')?'zh-cn':'en',
timeFormat: 'h(:mm) a',
/*TODO: make these work*/
// eventClick: $scope.alertOnEventClick,
// eventDrop: $scope.alertOnDrop,
// eventResize: $scope.alertOnResize,
eventRender: $scope.eventRender,
}
};
$scope.typeSearch = function() {
console.log($scope.type);
var events = [];
angular.forEach(_self.calendarData, function(data) {
angular.forEach(data, function(e) {
if($scope.type[e.type]) {
events.push(e);
}
});
});
//uiCalendarConfig.calendars['myCalendar'].fullCalendar('removeEvents');
$scope.eventSources = events;
console.log($scope.eventSources);
uiCalendarConfig.calendars['myCalendar'].fullCalendar('removeEvents');
uiCalendarConfig.calendars['myCalendar'].fullCalendar('addEventSource',$scope.eventSources);
};
});