2010-12-08 4 views
0

Ich entwickle eine Anwendung, um einen On-Call-Kalender zu verwalten, mit FullCalendar, um es zu rendern. Die meisten Veranstaltungen sind 1 Woche lang, beginnend am Dienstag um 8:00 Uhr morgens bis zum folgenden Dienstag um 8:00 Uhr morgens. Ein anderes Ereignis, vermutlich mit einer anderen Bereitschaftsperson, wird diesem Ereignis folgen.FullCalendar zeigt Ereignisse der letzten Woche unter diesen Wochen Ereignisse

Während eines Funktionstests im Eingangsbereich bemerkte jemand, dass die Ansicht des Monatskalenders schwer zu lesen war, da das Ereignis der vorherigen Woche nicht an der Spitze des Stapels lag, sondern unterhalb des Ereignisses, das in dieser Woche begann. Beim Betrachten nimmt das Auge wahr, dass es eine Linie nach unten gehen sollte, um die verbleibende Zeitlinie zu sehen, da das Ereignis von letzter Woche da ist, anstatt sich auf die nächste Woche zu bewegen.

ich untersucht, was ich glaube, das Problem zu sein:

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

die Ereignisse für eine Zeile sortiert, aber die Länge der Veranstaltung bei der Berechnung verwendet. Da das Ereignis der aktuellen Woche eine längere Dauer hat, wird es immer nach oben sortiert. Um zu testen, habe ich die Startdaten auf Mittwoch geändert, also sind die Dauern näher. Dies führt dazu, dass die Ereignisse so aussehen, wie ich es erwarte, wobei die Ereignisse der letzten Woche ganz oben und diese Wochen ganz unten stehen.

Ich dachte, wenn eines der Ereignisse im Vergleich in dieser Woche nicht startet, dann sollte es nur basierend auf den Startzeiten verglichen werden. Ich änderte die Funktion zu sein:

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); 
}

Das löste mein Problem, und das Rendering sieht jetzt gut aus - und besteht den Flur Test. Was ich nicht weiß, ist, ob dies in anderen Bereichen Auswirkungen hätte. Ich habe mir die anderen Ansichten (Monat, Woche, Tag) angeschaut und sie scheinen alle auch richtig zu rendern. Ich bin mit FullCalendar nicht vertraut genug, um einen Bug oder eine Feature-Anfrage zu diesem Thema einzureichen, oder wenn dies sogar als ein Fehler angesehen wird.

Ich frage mich, ob das, was ich geändert habe, korrekt ist, oder ob es nicht eine bessere Modifikation wäre, dieses Problem zu beheben.

Danke!

Im Folgenden werde ich die json Ergebnisse für das, was angezeigt werden soll:


[{"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"}]

Antwort

0

klingt wie Sie dieses Problem zu lösen versuchen: http://code.google.com/p/fullcalendar/issues/detail?id=510

Ich glaube nicht, Ihre mod jede unerwünschte verursachen Verhalten, wird es nur brechen, wenn Sie 2 Ereignisse haben, die beide in eine zweite Zeile umbrechen, und garantieren, dass sie in der gleichen Reihenfolge bleiben. Eine kugelsichere Lösung würde ein gutes Stück weiterer Arbeit erfordern, in der Hoffnung, irgendwann auf dieses Problem zu kommen.