2010-08-16 6 views
5

En utilisant le flot de jQuery, il est possible de sélectionner des éléments en les survolant. Dans les options, la grille [mouseActiveRadius] peut être définie sur un nombre pour indiquer la longueur souhaitée du rayon du cercle de sélection. Par exemple, si vous le définissez sur 10, tout événement de survol de la souris mettra en surbrillance le point le plus proche dans un cercle de 10 pixels de rayon. Cependant, je souhaite plutôt dire à flot de planer le point le plus proche dans la direction x (au lieu de la période de point la plus proche). EG dans cet exemple: le point 1 est évidemment beaucoup plus proche de x que le point 2, mais je veux quand même que le point 2 soit choisi pour le flot, car il est plus proche dans la direction x.Algorithme Flot mousehover à détecter purement basé sur x emplacement?

  x 
1 







      2 

Est-il possible de le faire avec des plugins/fonctionnalités intégrées, ou dois-je écrire une fonction extension de comportement par défaut de Flot?

Répondre

4

La seule façon que j'ai trouvé est de changer la source. (Il suce ok, mais il est souvent préférable un hack bien commenté qu'un non maintenable solution)

Trouver ce code: (function findNearbyItem(), en ligne 2278 sur ma révision)

if (s.lines.show || s.points.show) { 
        for (j = 0; j < points.length; j += ps) { 
         var x = points[j], points[j + 1]; 
         if (x == null) 
          continue; 

Modification:

if (s.lines.show || s.points.show) { 
        for (j = 0; j < points.length; j += ps) { 
         var x = points[j], y =0; // points[j + 1]; 
         if (x == null) 
          continue; 

Espérons que cette réponse aidera n'importe qui avec le même problème.

0

y = 0 ne fonctionnera pas pour les grandes valeurs y. y = axisy.datamin résout le problème.

Questions connexes