Пропавшие события в конце недели (после 7:00 вечера) с gcalFeed - PullRequest
0 голосов
/ 01 октября 2010

У меня есть реализация FullCalendar, использующая канал Календаря Google для катка сообщества.

Кажется, все работает нормально, за исключением того, что последние два события недели отсутствуют с 19:00 в субботу. Я попытался удалить события, добавив другое событие. Переименование событий, удаление других событий, чтобы увидеть, если их слишком много.

XML-фид действителен. Я не знаю, что еще делать. Там нет ошибки JavaScript.

Это URL для календаря (http://www.google.com/calendar/feeds/0vf900bq0u01v826rjvirb02b4%40group.calendar.google.com/public/basic), и это код, который я использую:

$(function() {
    $('#fullcal').fullCalendar({

        events:          
            $.fullCalendar.gcalFeed('http://www.google.com/calendar/feeds/0vf900bq0u01v826rjvirb02b4%40group.calendar.google.com/public/basic',
             {
                // put your options here
                className:       'gcal-event',
                currentTimezone: 'America/Denver'
             }
        ),
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        defaultView: 'agendaWeek',
        eventClick: function(event) {
            window.open(event.url, 'gcalevent', 'width=700,height=600');
            return false;
        },

        loading: function(bool) {
            if (bool) {
                $('#loading').show();
            } else {
                $('#loading').hide();
            }
        }
    });
});

1 Ответ

0 голосов
/ 20 сентября 2014

Я знаю, что об этом спрашивали несколько лет назад, но я только что натолкнулся на это, и у меня есть уродливый обходной путь, который может помочь другим в этом вопросе.

Вот как у меня все выглядит правильно с повесткой дня:

При инициализации Fullcalendar установите defaultView в значение «месяц». Затем установите для lazyFetching значение true. Теперь установите метод загрузки, чтобы изменить тип представления. Инициализация должна выглядеть примерно так:

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: ''
        },      
        defaultView: 'month',
        allDayDefault: false,
        timeFormat: '',
        allDaySlot: false,
        editable: false,
        lazyFetching: true,
        eventLimit: false,          

        events: 'https://www.google.com/calendar/feeds/mycalendarURL',

        loading: function(bool) {
            $('#calendar').fullCalendar( 'changeView', 'agendaWeek' );
            }

    });

Хотите верьте, хотите нет, но исходное представление за месяц не отображается; единственное, что появляется, - это вид повестки дня - по крайней мере, сейчас, когда я тестирую его здесь, в Safari на моем Mac.

По сути, этот метод взлома устанавливает представление в представление, которое, по-видимому, правильно собирает все события, затем представление переключается на то, что мы действительно хотим видеть. При включении lazyFetching события, которые уже загружены, остаются загруженными.

Обратите внимание, что если пользователь перейдет в далёкие будущие или прошлые события, нужно будет загрузить больше событий. Когда это происходит, все снова выходит из строя, даже если пользователь возвращается туда, откуда начал. Для моего приложения я ограничиваю просмотр небольшим диапазоном дат, так что это нормально. Для других приложений это может быть проблемой.

Надеюсь, что когда-нибудь появится правильное решение, потому что я нашел по крайней мере еще трех человек, которые видели эту проблему после того, как я искал в интернете, пытаясь найти решение. Надеюсь, мое решение взломать поможет другим, пока это не будет официально исправлено.

...