UNPKG

unserver-unify

Version:

508 lines (479 loc) 16.4 kB
'use strict'; 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); } });