Как загрузить события в календарь FullCalendar при первой загрузке? - PullRequest
0 голосов
/ 26 июня 2018

Как заставить мой календарь отображаться только после того, как данные события были получены с помощью 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?Как бы я решил эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...