Я разрабатываю приложение для управления календарем по вызову, используя 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"}]