Предыдущий пост, который привел к этой проблеме: Полный календарь с использованием ресурсов как функции с меню выбора
Основываясь на моем предыдущем сообщении, у меня есть проблема с использованием 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);
},
Вот моя функция toggleresource:
// 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.
У меня нет никаких специальных стилей для календаря, и я не использую никаких тем, которые избавили бы от этого: по крайней мере, не то, что я вижу сейчас.
Вот 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 исчезает после повторной загрузки ресурсов. Интересно, может это глюк?