2010-03-12 9 views
2

Je travaille sur l'ajout d'une option d'affichage de jour à une solution de calendrier existante. Comme beaucoup de personnes implémentant leurs propres calendriers, j'essaie de modéliser Google Calendars. Ils ont une excellente solution de calendrier et leur vue de jour offre beaucoup de flexibilité. Pour la plupart, la mise en œuvre se passe bien; Cependant, j'ai des problèmes quand il s'agit d'événements contradictoires. Essentiellement, je veux que les événements partagent le même espace, côte à côte. Les événements qui commencent en même temps doivent avoir l'événement le plus long en premier. Dans les données exemple de je travaille, j'ai quatre événements:Vue du jour du calendrier en PHP

A: 10:30-11:30

B: 13:30-14h30

C: 10:30-11:00

D: 10h45 - 14:00

Je peux gérer A, C, et D très bien, le problème est livré avec D. A devrait être à gauche de C qui devrait être laissé de D; chacun prend un tiers de la largeur (sa largeur est fixe, donc je peux faire des calculs simples pour comprendre cela). Le problème est que B devrait être sous A et C, à gauche de D. Idéalement, B prendrait le même espace que A et C (deux tiers de largeur), mais je voudrais même se contenter de ne prendre que seulement une troisième largeur.

Mon tableau d'événements ressemble à ce qui suit:

$events = array(
    '1030' => array(
    'uniqueID1' => array(
     'start_time' => '1030', 
     'end_time' => '1130', 
    ), 
    'uniqueID2' => array(
     'start_time' => '1030', 
     'end_time' => '1100', 
    ), 
), 
    '1045' => array(
    'uniqueID3' => array(
     'start_time' => '1045', 
     'end_time' => '1400', 
    ), 
), 
    '1330' => array(
    'uniqueID3' => array(
     'start_time' => '1330', 
     'end_time' => '1430', 
    ), 
), 
); 

Mon plan est d'ajouter des index à chaque événement qui incluent le nombre d'événements est en conflit avec (donc je peux calculer la largeur) et quelle position dans cette série il devrait être (donc je peux calculer la valeur de gauche). Cependant, cela n'aide pas le B.

Je pense que je pourrais avoir besoin d'un algorithme qui utilise une géométrie de base et des matrices, mais je ne sais pas par où commencer.

Toute aide est grandement appréciée.

Répondre

2

Cela n'aide pas avec votre propre développement de calendrier personnalisé, mais comme vous essayez d'obtenir une interface google calendrier comme je peux fortement recommander le jQuery fullcalendar plugin.

Il prend un flux pour les données du calendrier, je suis actuellement en train de l'accrocher à un calendrier public Outlook Exchange, puis afficher dans les vues mois/semaine/jour. L'affichage du jour peut constituer un bon exemple de mise en œuvre de votre demande d'origine.

+0

C'est excellent! Je souhaite seulement que ce soit autour quand les vues de mois et de semaine ont été mises en application. Je peux utiliser ce plugin pour gérer tout le rendu, y compris le positionnement avec lequel je rencontrais des problèmes, et pointer un fichier sur mon site qui renvoie les événements (codé JSON bien sûr). Merci! – JamesArmes

+0

Pas de problème, espérons que cela fonctionne bien pour vous. Si vous avez besoin d'aide, envoyez-moi un message. :-) –

Questions connexes