unserver-unify
Version:
279 lines (269 loc) • 9.78 kB
JavaScript
;
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
}
};
});