j. Modification dynamique des temps d'un timeNode - ThomasDejoux/timesheets.js GitHub Wiki

Actuellement, le fait de ne pas pouvoir modifier les temps d'un timeNode est très contraignant. En effet, il est nécessaire de supprimer un timeNode et de le recréer si le temps n'est pas bon. Il a donc été décidé de pouvoir modifier la taille d'un timeNode. Plusieurs solutions s'offrent à nous pour cette fonctionnalité. En premier, celle qui a été développée consiste à redessiner le timeNode après chaque modification des champs time. La Deuxième, non implémentée pour l'instant, consiste en l'utilisation d'un Drag'n'Drop sur les extrémités d'un timeNode.

Dans cette page, nous parlerons donc de la première solution. Pour développer cette fonctionnalité, nous avons voulu tirer parti de l'événement timeupdate déjà créé mais celui ci nous posait des problèmes puisque l'événement était déclenché par trop de fonctionnalités différentes ce qui entrainait des bugs de modification des timeNode. Pour palier à ce problème, nous avons enlevé l'événement timeupdate et l'avons remplacé par 2 événements distincts: "change" et "keypress". Chacun des 2 événements effectuant des actions différentes. Ainsi, nous n'avons plus de problème lors des modifications des temps d'un timeNode.

EDIT 03/03/2012 : Il est maintenant possible de changer le temps dans les champs début et fin grâce à la molette de la souris. Faire rouler vers le haut permet d'incrémenter le temps et inversement vers le bas.

Il existe néanmoins un bug non résolu à ce jour. Lorsque l'on modifie le temps de début et que l'on créé le timenode, tout se passe bien sauf que la barre du waveform indiquant le temps courant (currentTime) se replace automatiquement sur le temps sélectionné avant de changer le champ texte. Ce qui fait que si l'on veut modifier le timenode juste après l'avoir créé, le temps de début étant modifié, le timenode sera modifié en prenant en compte ce temps erroné et il faudra donc remettre le temps manuellement. Aucune solution n'a été trouvé pour l'instant. De plus, une manipulation déconcertante permet de contourner le problème, il suffit de mettre un "alert()" et le bug disparait.

Quand à la fonctionnalité Drag'n'Drop, elle sera développée en fonction du temps disponible à la fin du projet.