Предыдущий пост, который привел к этой проблеме: Полный календарь с использованием ресурсов в качестве функции с меню выбора
Исходя из моего предыдущего поста, у меня возникла проблема с использованием fullcalendar 4. Когда я использую ресурсы в качестве функции, мои блоки на весь день не совпадают с временными интервалами моего планировщика. Вы можете видеть это на картинке.
Вот моя функция ресурсов:
resources: function(fetchInfo, successCallback, failureCallback) {
// Filter resources by whether their id is in visibleResourceIds.
var filteredResources = [];
filteredResources = resourceData.filter(function(x) {
return visibleResourceIds.indexOf(x.id) !== -1;
});
successCallback(filteredResources);
},
Вот моя функция переключения ресурсов:
// menu button/dropdown will trigger this function. Feed it resourceId.
function toggleResource(resourceId) {
visibleResourceIds = [];
//if select all... see if undefined from loading on initial load = true
if ((resourceId == '') || (resourceId === undefined)) {
$.map( resourceData, function( value, index ) {
visibleResourceIds.push(value.id);
});
}
var index = visibleResourceIds.indexOf(resourceId);
if (index !== -1) {
visibleResourceIds.splice(index, 1);
} else {
visibleResourceIds.push(resourceId);
}
calendar.refetchResources();
Другой связанный код (при изменении меню ресурсы выбранного элемента меню отображаются только в полном календаре):
var resourceData = [];
var visibleResourceIds = [];
$.getJSON('ajax_get_json.php?what=schedule_providers_at_location',
function(data) {
$.each(data, function(index) {
resourceData.push({
id: data[index].value,
title: data[index].text
});
});
});
$('#toggle_providers_calendar').change(function() {
toggleResource($('#toggle_providers_calendar').val());
});
Ресурсы очень хорошо показывают / скрывают, основываясь на выбранном ресурсе меню, но посмотрите на дневные блоки - они не выстраиваются в линию после того, как ресурсы по какой-то причине были перезагружены. Они исправляют себя, поскольку пользователь перемещается по планировщику, хотя!
ОБНОВЛЕНИЕ НИЖЕ
После осмотра выглядит, как при вызове refetchevents, класс .fc-week теряет следующий css:
style="border-right-width: 1px; margin-right: 20px;"
Вот полная фотография календаря при начальной загрузке:
После того, как я щелкну одну из навигационных стрелок, строки за весь день встречаются с остальным временем календаря, потому что этот стиль применяется к .fc-week.
У меня нет специальных css, примененных к календарю, и я не использую какие-либо темы, которые бы избавились от этого: по крайней мере, не то, что я вижу сейчас.
Вот HTML-код, в котором находится календарь:
<div class="portlet-body">
<div class='loader'></div>
<div class="row">
<div id="calendar_full" style="padding-left: 10px; padding-right: 15px;"></div>
</div>
</div>
Чтобы это исправить, я могу добавить следующую строку после повторного получения ресурсов в моей функции toggleResources:
$('#calendar_full .fc-week').css('border-right-width', '1px').css('margin-right', '20px');
Я буду продолжать выяснять, почему этот css исчезает после повторного добавления ресурсов. Интересно, может ли это быть глюк?