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;
}

0 ответов

Другие вопросы по тегам