Как заставить мой календарь отображаться только после того, как данные события были получены с помощью API Outlook Outlook REST.
$('#calendarBox').fullCalendar({
height: 500,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,basicWeek,basicDay'
},
disableDragging: true,
editable: false,
timezone: 'local',
eventLimit:true,
views:{
eventLimit:4
},
events: function(start, end, timezone, callback) {
//This functon executes every time the calendar changes views.
//the "start" and "end" variables contain the date values
//for the first and last day visible in the calendar.
//we need to convert these dates to a formate that the
//REST query recognizes
var startString = (start._d).getUTCFullYear() +"-"+
("0" + ((start._d).getUTCMonth()+1)).slice(-2) +"-"+
("0" +(start._d).getUTCDate()).slice(-2) + "T" +
("0" +(start._d).getUTCHours()).slice(-2) + ":" +
("0" +(start._d).getUTCMinutes()).slice(-2) + ":" +
("0" +(start._d).getUTCSeconds()).slice(-2)+ "Z";
var endString = (end._d).getUTCFullYear() +"-"+
("0" + ((end._d).getUTCMonth()+1)).slice(-2) +"-"+
("0" +(end._d).getUTCDate()).slice(-2) + "T" +
("0" +(end._d).getUTCHours()).slice(-2) + ":" +
("0" +(end._d).getUTCMinutes()).slice(-2) + ":" +
("0" +(end._d).getUTCSeconds()).slice(-2) +"Z";
//execute the outlook REST query passing in the token in the header
var call = $.ajax({
url: "https://outlook.office.com/api/v1.0/me/calendarview?startDateTime="+startString+"&endDateTime=" + endString + "&top=100",
type: "GET",
dataType: "json",
headers: {
Accept: "application/json;odata.metadata=minimal;odata.streaming=true",
'Authorization': "Bearer " + accessToken
}
});
call.done(function (data,textStatus, jqXHR){
var events = [];
//loop through the returned events and push them
//into the events array that will be displayed in the calendar.
for (index in data.value)
{
events.push({
title: data.value[index].Subject,
start: data.value[index].Start
});
}
callback(events);
});
call.fail(function (jqXHR,textStatus,errorThrown){
alert("Error retrieving events: " + jqXHR.responseText);
console.log("error retrieveing events.")
});
}
});
Так я инициализирую календарь, но сначала при загрузке его в Интернетена странице, у меня будет календарь, отображаемый без его событий, как можно видеть на скриншоте. 1
Я знаю, что он может извлекать события из моего календаря Outlook, потому что если бы я должен былнажимая кнопки на карте, например, переход на предыдущий месяц, календарь отображает события на нем.Возможно, при первой загрузке календарь отображается быстрее, чем он может получить данные о событиях из API Outlook Outlook REST?Как бы я решил эту проблему.