Kendo Scheduler - функция checkAvailability, которая оценивает данные повторения
У меня есть планировщик Kendo (календарь для бронирования комнат для совещаний) с функцией с именем checkAvailability
это оценивает, существует ли резервирование в определенное время.
Когда я вставляю бронирование, можно сообщить, хотите ли вы повторить его (ежедневно, еженедельно, ежемесячно и т. Д.).
когда checkAvailability
Функция оценивает этот конкретный случай (с повторением), она проверяет только дату начала, а не другие повторяющиеся дни, потому что end
значение даты одинаково для start
значение даты. Это вызывает вставку бронирования в уже загруженное расписание.
Вот мой код прямо сейчас:
function checkAvailability(start, end, isAllDay, event, resources) {
if (roomIsOccupied(start, end, isAllDay, event, resources)) {
setTimeout(function () {
errorMessage("Esta sala não está disponível neste período de tempo!");
}, 0);
return false;
}
return true;
}
function roomIsOccupied(start, end, isAllDay, event, resources) {
var occurrences = occurrencesInRangeByResource(start, end, isAllDay, "RoomId", event, resources);
if (occurrences.length > 0) {
return true;
}
return false;
}
function occurrencesInRangeByResource(start, end, isAllDay, resourceFieldName, event, resources) {
var scheduler = $("[data-role=scheduler]").getKendoScheduler();
var occurrences = scheduler.occurrencesInRange(start, end, isAllDay);
var idx = occurrences.indexOf(event);
if (idx > -1) {
occurrences.splice(idx, 1);
}
event = $.extend({}, event, resources);
return filterByResource(occurrences, resourceFieldName, event[resourceFieldName]);
}
function filterByResource(occurrences, resourceFieldName, value) {
var result = [];
var occurrence;
for (var idx = 0, length = occurrences.length; idx < length; idx++) {
occurrence = occurrences[idx];
var resourceValue = occurrence[resourceFieldName];
if (resourceValue === value) {
result.push(occurrence);
} else if (resourceValue instanceof kendo.data.ObservableArray) {
if (value) {
for (var i = 0; i < value.length; i++) {
if (resourceValue.indexOf(value[i]) !== -1) {
result.push(occurrence);
break;
}
}
}
}
}
return result;
}