UNPKG

unserver-unify

Version:

235 lines (222 loc) 8.39 kB
'use strict'; 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); }; });