2010-12-08 2 views
0

Je suis en train de développer une application pour gérer un calendrier sur appel, en utilisant FullCalendar pour le rendre. La plupart des événements durent une semaine, débutant à 8h00 le mardi et se terminant le mardi suivant à 8h00. Un autre événement, vraisemblablement avec une personne différente sur appel, suivra cet événement. Lors d'un test d'utilisabilité en couloir, quelqu'un a indiqué que l'affichage du calendrier mensuel était difficile à lire car l'événement des semaines précédentes ne se trouvait pas en haut de la pile, mais en dessous de l'événement qui commence pendant cette semaine. En visionnant, l'œil perçoit qu'il devrait descendre d'une ligne pour voir le temps restant parce que l'événement de la semaine dernière est là, au lieu de descendre à la semaine suivante.FullCalendar affichant les événements de la semaine dernière sous cette semaine évènements

Je crois ce que j'enquête être le problème:

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

trie les événements pour une ligne, mais utilise la longueur de l'événement dans le calcul. Comme l'événement de la semaine en cours aura une durée plus longue, il sera toujours classé au sommet. Pour tester, j'ai changé les dates de début à mercredi donc les durées sont plus proches. Cela provoque les événements à rendre comme je m'attendais, avec les événements de la semaine dernière en haut et cette semaine en bas.

Je pensais que si l'un des événements de la comparaison ne commence pas cette semaine, alors il devrait seulement être comparé en fonction des heures de début. J'ai modifié la fonction d'être:

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

Ceci a résolu mon problème, et le rendu semble maintenant bon - et passe le test de couloir. Ce que je ne sais pas, c'est si cela aurait un impact dans d'autres domaines. J'ai jeté un coup d'oeil aux autres vues (mois, semaine, jour) et elles semblent toutes être correctement rendues correctement. Je ne suis pas assez familier avec FullCalendar pour écrire un bug ou une demande de fonctionnalité à ce sujet, ou si cela serait considéré comme un bug.

Je me demande si ce que j'ai modifié est correct, ou si ce n'est pas une meilleure modification pour résoudre ce problème.

Merci!

Ci-dessous j'ai les résultats JSON pour ce qui devrait être affiché:


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

Répondre

0

semble que vous essayez de résoudre ce problème: http://code.google.com/p/fullcalendar/issues/detail?id=510

je ne pense pas que votre mod causera une indésirable comportement, il va juste casser quand vous avez 2 événements qui sont à la fois l'emballage à une deuxième rangée, garantissant qu'ils restent dans le même ordre. une solution pare-balles nécessiterait beaucoup de travail supplémentaire, dans l'espoir d'arriver à ce problème à un moment donné.

Questions connexes