UNPKG

unserver-unify

Version:

279 lines (269 loc) 9.78 kB
'use strict'; angular.module('bamboo.event').controller('EventsCtrl', function($scope, ApiService, $state, $stateParams, $filter, $compile, uiCalendarConfig) { var _self = this; this.page = 0; this.pastEventPage = 0; $scope.eventsdata = []; $scope.eventSources = [$scope.eventsdata]; //$scope.eventSources = []; var defaultEventPhoto = 'assets/images/event_no-img1.jpg'; console.log($stateParams); _self.shareFlag = $stateParams.share; this.setting = { hasPhoto: true, rowClass: "col-md-6", listName: "events", emptyTitle: 'No Event!', viewPrefix: 'index.events.detail', imageFolderPrefix: ApiService.SHOST + '/public/' + ApiService.RES + '/' + 'schoolevent' + '/', defaultImage: defaultEventPhoto, pageSize: 6, currentPage: (_self.page + 1), // itemlist: [], ctrl: this, }; this.pastEventSetting = { hasPhoto: true, rowClass: "col-md-6", listName: "pastEvents", emptyTitle: 'No Event!', viewPrefix: 'index.events.detail', imageFolderPrefix: ApiService.SHOST + '/public/' + ApiService.RES + '/' + 'schoolevent' + '/', defaultImage: defaultEventPhoto, pageSize: 6, currentPage: (_self.pastEventPage + 1), pastEvent:true, ctrl: this, }; this.pageChanged = function(newPage,past) { var page = newPage - 1; if(past&&_self.pastEventSetting.totalCount>(page*_self.pastEventSetting.pageSize)){ getPastEvents(page); } else if(_self.setting.totalCount>(page*_self.setting.pageSize)) { getInfo(page); } }; getInfo(0); this.pastPageChanged = function(newPage) { }; getPastEvents(0); var itemContainer = []; function getRecent() { var info = { action: "getrecents", } if (ApiService.school.excludedepartmentFlag) { info.action = "getgrouprecents"; } ApiService.post("/event", info).then(function(result) { if (result.data.success) { // console.log(result.data.data); _self.weeks = result.data.data.weeks; _self.coming = result.data.data.coming; angular.forEach(_self.weeks, function(item, index) { var startDate = $filter('date')(item.start, "yyyy/MM/d"); var endDate = $filter('date')(item.time, "yyyy/MM/d"); if (startDate == endDate) { item.display = startDate; } else { item.display = startDate + ' - ' + endDate; } }); angular.forEach(_self.coming, function(item, index) { var startDate = $filter('date')(item.start, "yyyy/MM/d"); var endDate = $filter('date')(item.time, "yyyy/MM/d"); if (startDate == endDate) { item.display = startDate; } else { item.display = startDate + ' - ' + endDate; } }); } // console.log(result.data); }); }; function getExpired() { var info = { action: "getexpired", } ApiService.post("/event", info).then(function(result) { if (result.data.success) { console.log(result.data.data); _self.expired = result.data.data; angular.forEach(_self.expired, function(item, index) { var startDate = $filter('date')(item.start, "yyyy/MM/d"); var endDate = $filter('date')(item.time, "yyyy/MM/d"); if (startDate == endDate) { item.display = startDate; } else { item.display = startDate + ' - ' + endDate; } }); } // console.log(result.data); }); }; getRecent(); getExpired() function getPastEvents(page) { var info = { start: page * 6, limit: 6, action: "getExpiredEvents" }; console.log(info); ApiService.post("/event", info).then(function(result) { console.log(result); if (result.data.success) { _self.pastEventSetting.items = result.data.data.items; console.log(_self.pastEventSetting.items); _self.pastEventSetting.totalCount = result.data.data.counter; angular.forEach(_self.pastEventSetting.items, function(item, index) { var startDate = $filter('date')(item.start, "yyyy/MM/d"); var endDate = $filter('date')(item.time, "yyyy/MM/d"); if (startDate == endDate) { item.display = startDate; } else { item.display = startDate + ' - ' + endDate; } }); } }); } function getInfo(page) { var info = { start: page * 6, limit: 6, action: "getvalidevents" }; if (ApiService.school.excludedepartmentFlag) { info.action = "getgroupvalidevents"; } ApiService.post("/event", info).then(function(result) { if (result.data.success) { // $scope.eventsdata=[]; _self.setting.items = result.data.data.items; console.log(_self.setting.items); itemContainer = _self.setting.items; _self.setting.totalCount = result.data.data.counter; //$scope.item.counter = result.data.data.counter; //console.log($scope.item.counter); var dates = []; _self.setting.itemlist = []; // $scope.eventsdata = []; // angular.forEach(_self.setting.items, function(item, index) { // var startDate = $filter('date')(item.start, "yyyy/MM/d"); // var endDate = $filter('date')(item.time, "yyyy/MM/d"); // if (startDate == endDate) { // item.display = startDate; // } else { // item.display = startDate + ' - ' + endDate; // } // item.repeatCounter = item.repeatCounter || 1; // 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; // } // var info = { // title: item.name, // start: time, // stick: true, // url: ApiService.HOST + '/#/events/detail/' + item._id // } // // var key = time.toISOString(); // $scope.eventsdata.push(info); // } // // for (var d = new Date(item.start); d <= new Date(item.time); d.setDate(d.getDate())) { // /* $scope.eventsdata.push({ // title: item.name, // start: item.start, // stick: true, // allDay: true, // url: ApiService.HOST + '/#/events/detail/' + item._id // }); */ // // } // }); // $scope.eventSources = [$scope.eventsdata]; _self.eventsready = true; console.log("-- ready"); } }); } $scope.uiConfig = { calendar: { height: 1000, // editable: true, header: { left: 'title', center: '', /*TODO: make these work*/ right: 'today prev,next' }, timeFormat: 'HH:mm', eventSources: [{ events: function(start, end, timezone, callback) { console.log('new date range start : ', start, 'new date range end : ',end); var events = []; var info = { action: "getMonthEvents", time: new Date(start) }; console.log(info); ApiService.post("/event", info).then(function(result) { console.log(result); if (result.data.success) { var items = result.data.data; angular.forEach(items, function(item, index) { var startDate = $filter('date')(item.start, "yyyy/MM/d"); var endDate = $filter('date')(item.time, "yyyy/MM/d"); if (startDate == endDate) { item.display = startDate; } else { item.display = startDate + ' - ' + endDate; } item.repeatCounter = item.repeatCounter || 1; 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; } var info = { title: item.name, start: time, stick: true, url: ApiService.HOST + '/#/events/detail/' + item._id } events.push(info); } }); console.log(events); callback(events); } }); } }] /*TODO: make these work*/ // eventClick: $scope.alertOnEventClick, // eventDrop: $scope.alertOnDrop, // eventResize: $scope.alertOnResize, // eventRender: $scope.eventRender } }; });