7
votes

JQUERY FullCalendar Tri des événements

J'ai de nombreux événements qui sont tous les événements de la journée et tous commencent à la fois. Je crée les événements dans l'ordre que j'aimerais qu'ils apparaissent sur la vue du calendrier complet, mais ils semblent toujours être triés d'une autre manière.

Comment puis-je avoir les événements triés par ordre alphabétique ou par leur identifiant?

EDIT: Ajout d'exemple de tableau de données. Dans le calendrier, je m'attendais à ce que l'événement du superviseur apparaisse d'abord chaque jour, comme il est alphabétiquement, il est avant Tech1 et Tech2, et son identifiant est également un numéro de bailleur que les événements suivants. Au lieu de cela, je reçois un ordre aléatoire chaque jour.

par exemple:

jour de 2011-11-05 La commande s'affiche comme Tech2, Tech1, Tech1, Tech1, Tech2, Superviseur.

Jour de 2011- 11-06 La commande s'affiche comme superviseure, Tech1, Tech1, Tech1, Tech2, Tech2.

J'exige que le tri au moins soit cohérent de jour en jour, et d'être idéalement dans l'ordre alphabétique du titre du titre. , ou dans l'ordre séquentiel de l'ID. xxx

EDIT2: il apparaît que ce problème n'existe que dans Google Chrome. Les événements rendent dans l'ordre que je m'attends à ce que ce soit à la fois par IE9 ainsi que FF8. Chrome 15, que je me développe, semble être le seul navigateur effectué.

chrome chrome Firefox firefox


0 commentaires

5 Réponses :


7
votes

J'ai trouvé que Chrome respecte l'heure de début. Lors de la construction de l'événement, j'ajoute simplement une seconde à chaque élément de la liste. Dans l'exemple, j'ai des résultatsset avec chacune des valeurs de la date spécifique des colonnes. Démarrer est dans la colonne 0 et le titre est dans la colonne 1 dans les RESUSSET.

Dans mon exemple, je suis ce qui suit: P>

var events=[
{id:1, title:'Supervisor',start:'2011-11-05T00:00:01-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:2, title:'Tech2',start:'2011-11-05T00:00:02-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:3, title:'Tech2',start:'2011-11-05T00:00:03-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:4, title:'Tech1',start:'2011-11-05T00:00:04-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:5, title:'Tech1',start:'2011-11-05T00:00:05-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:6, title:'Tech1',start:'2011-11-05T00:00:06-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:7, title:'Supervisor',start:'2011-11-06T00:00:07-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:8, title:'Tech2',start:'2011-11-06T00:00:08-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:9, title:'Tech2',start:'2011-11-06T00:00:09-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:10, title:'Tech1',start:'2011-11-06T00:00:10-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:11, title:'Tech1',start:'2011-11-06T00:00:11-05:00',st_hours:10,ot_hours:0,allDay:true},
{id:12, title:'Tech1',start:'2011-11-06T00:00:12-05:00',st_hours:10,ot_hours:0,allDay:true}];


4 commentaires

Excellent conseil, cela aide-t-il en fait rendre les événements dans l'ordre souhaité. Merci beaucoup!


@kalee est en retard mais j'utilisais de cette façon pour commander mes événements, mais cela cesse de travailler pour des événements multi-journées, n'importe quelle idée, comment puis-je commander des événements multiday ??


Les œuvres sont parfaites pour les événements d'une journée, n'ont pas essayé de multiples. Merci.


La raison pour laquelle des événements sur la taille de laïde semblent irrections, est-ce que cela met 100 fois plus d'emphase sur la longueur que le temps de départ. Il n'y a pas de bon moyen d'obtenir des événements plus courts à apparaître au-dessus des événements avec une durée plus longue.



0
votes

dans le fichier FullCalendar.js , il existe une fonction appelée xxx

Vous pouvez définir vos propres règles telles que retour seg1.id -seg2 .Id pour commander des événements par ID.


0 commentaires

6
votes


Salut,

Pour ceux qui continuent à rechercher une meilleure solution à cela, il existe maintenant un nouvel événement dans la version 2.4.0 de FullCalendar appelé EventOrder .

Par défaut, FullCalendar décide que les événements avec des durées plus longues et des heures de début plus antérieures sont triées au-dessus d'autres événements. Cependant, les événements ont souvent le même temps et la même durée de début, ce qui est particulièrement vrai pour les événements d'une journée. Par défaut, lorsque cela se produit, les événements sont triés par ordre alphabétique par titre. EventOrder offre la possibilité de remplacer ce comportement .


0 commentaires

2
votes

J'aimerais ajouter quelque chose à la réponse à Ragaingainthemachine.

Si vous souhaitez remplacer complètement le tri par date de début (ALLDYSLOT & MOIS & BASICS Vues). Par exemple, pour les trier par couleur. P>

1.Initialise EventOrder à Couleur. P>

EventOrder: «Couleur, démarrez ' P>

2.Changeez la fonction comparative. p> xxx pré>

dans ce cas seulement je Voulez-vous trier l'événement par couleur dans la vue "Basicveek". Ensuite, j'ai supprimé les tests EventStarTMS & EventDurationMs. P>

Supprimer: P>

seg1.eventStartMS - seg2.eventStartMS || // earlier events go first
seg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first


1 commentaires

Merci, vous m'avez sauvé un peu de temps en regardant le code source, la petite mise à jour, la fonction est désormais appelée comparaisantventesegs



1
votes

version minifiée du tri par couleur.

 compareSegs:function(a,b){if(this.view.name=="basicWeek"){return b.event.allDay-a.event.allDay||B(a.event,b.event,this.view.eventOrderSpecs)}else{return a.eventStartMS-b.eventStartMS||b.eventDurationMS-a.eventDurationMS||b.event.allDay-a.event.allDay||B(a.event,b.event,this.view.eventOrderSpecs)}


0 commentaires