FullCalendar отображает события прошлых недель ниже событий этой недели - PullRequest
0 голосов
/ 08 декабря 2010

Я разрабатываю приложение для управления календарем по вызову, используя FullCalendar для его рендеринга.Большинство событий продолжительностью 1 неделя начинаются в 8:00 утра вторника и заканчиваются в следующий вторник в 8:00 утра.За этим событием последует другое событие, предположительно с другим человеком по вызову.

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

Я исследовал то, что считаюпроблема:

function segCmp(a, b) {  
    return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);  
}

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

Я думал, что если одно из событий в сравнении не начнется на этой неделе, тоего следует сравнивать только на основе времени начала.Я изменил функцию так:

function segCmp(a, b) {
    if (a.isStart == false || b.isStart == false) {
        return (a.event.start - b.event.start);
    }
    return (b.msLength - a.msLength) * 100 + (a.event.start - b.event.start);
}

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

Мне интересно, правильно ли то, что я изменил, или это не то, чтоЛучшей модификацией было бы решение этой проблемы.

Спасибо!

Ниже приведены результаты json для отображения:


[{"title":"Person 1 - OnCall (OSS On Call)","id":12,"allDay":false,"start":"2010-11-30T15:00:00.0000000Z","end":"2010-12-07T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/12"},  
{"title":"Person 2 - OnCall (OSS On Call)","id":13,"allDay":false,"start":"2010-12-07T15:00:00.0000000Z","end":"2010-12-14T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/13"},  
{"title":"Person 3 - OnCall (OSS On Call)","id":14,"allDay":false,"start":"2010-12-14T15:00:00.0000000Z","end":"2010-12-21T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/14"},  
{"title":"Person 4 - OnCall (OSS On Call)","id":15,"allDay":false,"start":"2010-12-21T15:00:00.0000000Z","end":"2010-12-28T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/15"},  
{"title":"Person 5 - OnCall (OSS On Call)","id":16,"allDay":false,"start":"2010-12-28T15:00:00.0000000Z","end":"2011-01-04T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/16"},  
{"title":"Person 6 - OnCall (OSS On Call)","id":17,"allDay":false,"start":"2011-01-04T15:00:00.0000000Z","end":"2011-01-11T15:00:00.0000000Z","editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/17"},  
{"title":"Christmas","id":2,"allDay":true,"start":"2010-12-25T07:00:00.0000000Z","end":null,"editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/2"},  
{"title":"New Years Eve","id":3,"allDay":true,"start":"2010-12-31T07:00:00.0000000Z","end":null,"editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/3"},  
{"title":"New Years Day","id":4,"allDay":true,"start":"2011-01-01T07:00:00.0000000Z","end":null,"editable":false,"className":"fc-event-title-calendar","url":"/TimeManagement/Edit/4"}]

1 Ответ

0 голосов
/ 31 декабря 2010

звучит так, как будто вы пытаетесь решить эту проблему: http://code.google.com/p/fullcalendar/issues/detail?id=510

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...