I am creating fullcalendar to create events. I get the value from rest api from looping start date and end date. My idea is when there is no data that day I want to show event and vacant day, but always I am getting end of the loop date. Please guide what can i do to get incremental value.
I am sure it have ajax asynchronous issue due to that it is happening. I just need help for that
My codes
var startDate = calendar.fullCalendar('getView').start;
var endDate = calendar.fullCalendar('getView').end;
$.ajax({
url: "/_api/lists/getbytitle('Item')/items?$select=Title,Category&$orderby=Category&$filter=Category eq '" + $("#items").val() + "'",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" }
}).then(function (data) {
var promises = data.d.results.map(function (item, i) {
var _url = "/_api/lists/getbytitle('ItemRequestLog')/items?$select=Title,ItemRequest/Title,DateRequestedFrom,DateRequestedTo&$expand=ItemRequest&$filter=Title eq '" + item.Title + "'";
for (var d = new Date(startDate.format()); d < new Date(endDate.format()); d.setDate(d.getDate() + 1)) {
var e = moment(d).add(1, 'days'); console.log(d) //here value is good
_url += " and (DateRequestedFrom ge datetime'" + d.toISOString() + "') and (DateRequestedTo le datetime'" + e.toISOString() + "')";
$.ajax({
url: _url,
method: "GET",
headers: { "Accept": "application/json; odata=verbose" }
}).then(function (data) {
if (data.d.results.length == 0) {
console.log(d) //here I am getting end of the loop value
event.title = item.Title;
event.start = d;
event.end = e;
event.allDay = true;
event.color = "yellow";
$('#calendar').fullCalendar('renderEvent', event, true);
}
var promises = data.d.results.map(function (itemLog, i) {
event.title = itemLog.Title;
event.start = moment(itemLog.DateRequestedFrom);
event.end = moment(itemLog.DateRequestedTo);
event.allDay = false;
event.color = "red";
$('#calendar').fullCalendar('renderEvent', event, true);
});
})
_url = "/_api/lists/getbytitle('ItemRequestLog')/items?$select=Title,ItemRequest/Title,DateRequestedFrom,DateRequestedTo&$expand=ItemRequest&$filter=Title eq '" + item.Title + "'";
}
});
});
Kindly help how resolve it.