I am trying to push an array of Events objects into the Events[] array, with the attributes title, startTime and endTime.
The array of objects seem to be pushed to the events array upon printing console.log(events). However, it is not rendering on my calendar.
Link to plugin used: https://github.com/twinssbc/Ionic-Calendar
$scope.loadEvents = function () {
$scope.calendar.eventSource = getEvents();
};
//I replaced CreateRandomEvents() with getEvents().
function getEvents(object){
TimeSlotsModel.all()
.then(function (result) {
vm.data = result.data.data;
var events = [];
angular.forEach(vm.data, function(value,key) {
var eventName = value.name;
var startDate = new Date(value.startDate);
var endDate = new Date(value.endDate);
var selectedStartingTime =new Date(value.startTime * 1000 );
var selectedEndingTime = new Date(value.endTime * 1000);
//timing is not right, needs fixing
startTime = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate(),selectedStartingTime.getHours(), selectedStartingTime.getUTCMinutes());
endTime = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(),selectedEndingTime.getUTCHours(), selectedEndingTime.getUTCMinutes());
// console.log(startTime);
events.push({
title: 'Event -' + eventName,
startTime: startTime,
endTime: endTime,
allDay: false
});
console.log(events);
console.log(value);
//value is the object!!
})
return events;
})
}
The original function provided is this:
function createRandomEvents() {
var events = [];
for (var i = 0; i < 20; i += 1) {
var date = new Date(); //(if not parameters are passed through, Date(); returns today's date)
var eventType = Math.floor(Math.random() * 2);
var startDay = Math.floor(Math.random() * 90) - 45;
var endDay = Math.floor(Math.random() * 2) + startDay;
var startTime;
var endTime;
if (eventType === 0) {
startTime = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + startDay));
if (endDay === startDay) {
endDay += 1;
}
endTime = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + endDay));
events.push({
title: 'All Day - ' + i,
startTime: startTime,
endTime: endTime,
allDay: true
});
} else {
var startMinute = Math.floor(Math.random() * 24 * 60);
var endMinute = Math.floor(Math.random() * 180) + startMinute;
startTime = new Date(date.getFullYear(), date.getMonth(), date.getDate() + startDay, 0, date.getMinutes() + startMinute);
endTime = new Date(date.getFullYear(), date.getMonth(), date.getDate() + endDay, 0, date.getMinutes() + endMinute);
events.push({
title: 'Event - ' + i,
startTime: startTime,
endTime: endTime,
allDay: false
});
}
}
return events;
}
})
Could anyone point out to me what I am doing wrong?
EDIT: HTML File Used:
<ion-view view-title={{viewTitle}} >
<ion-nav-buttons side="right">
<button class="button " ng-disabled="isToday()" ng-click="today()">Today</button>
<button class="button" ng-click="changeMode('month')">M</button>
<button class="button" ng-click="changeMode('week')">W</button>
<button class="button" ng-click="changeMode('day')">D</button>
<button class="button" ng-click="loadEvents()">Load Events</button>
</ion-nav-buttons>
<ion-content scroll="false" class="main-content ">
<!-- <ion-header-bar align-title="left" class="bar-positive">
{{viewTitle}} -->
<calendar ng-model="calendar.currentDate"
calendar-mode="calendar.mode"
event-source="calendar.eventSource"
show-weeks="calendar.showWeeks"
range-changed="reloadSource(startTime, endTime)"
event-selected="onEventSelected(event)"
title-changed="onViewTitleChanged(title)"
time-selected="onTimeSelected(selectedTime)"
></calendar>
</ion-content>
</ion-view>
</div>
</ion-content>
</ion-view>