7
votes

Comment redimensionner un graphique à flot lorsque sa taille contenant div change la taille

J'utilise la bibliothèque de graphique FLOT JQuery Plugin et je n'ai pas trouvé de bonne façon de manipuler le redimensionnement du graphique lorsqu'il contient

modifier la taille (par exemple, en raison du redimensionnement de la fenêtre ). Lors de la manipulation de l'événement OnResize, je suis assuré que la largeur et la hauteur du contenant
sont mises à jour à la taille correcte, puis ont essayé d'appeler à la fois setupgrid et dessinez sur l'objet de la parcelle mais sans effet. J'ai eu un certain succès avec l'approche de simplement retirer et laver le contenant
et replier le graphique. Cependant, cela semble être sujette à rester bloqué dans des boucles d'événement de redimensionnement infinies si je dois ajouter d'autres éléments
au document en même temps (comme pour les info-bulles du graphique) comme je ' m Devineux Ceux-ci peuvent également déclencher des événements de redimensionnement? Y a-t-il un bon moyen de gérer cela que je manque?

(J'utilise également ExplorerCanvas pour IE afin de pouvoir utiliser Flot, si cela pourrait avoir quelque chose à voir avec cela. Je n'ai pas encore essayé dans aucun autre navigateur)


0 commentaires

5 Réponses :


0
votes

J'ai semblé avoir trouvé une solution, même si je ne suis pas tout à fait sûr pourquoi ça fonctionne. J'utilise toujours l'approche de l'élimination et de la réduisant le contenant

du document et republier le graphique. Cependant, où j'avais déjà fait xxx

qui semblait être enclin à entrer dans ce qui semblait être une boucle infinie en fonction de ce que le redrawfunc a fait au document.

Au lieu de cela, j'ai essayé d'utiliser la liaison de redimensionnement de JQuery xxx

jusqu'à présent, peu importe les autres changements que je fais au document dans le redrawfuncc je n'ai pas eu de problème avec cette approche qui reste bloquée dans une boucle encore. Je ne sais tout simplement pas pourquoi.


0 commentaires

17
votes

J'ai trouvé simplement la liaison à l'événement de redimensionnement sur la fenêtre et appeler la parcelle fonctionne vraiment bien. Par exemple, j'ai mes données et options stockées dans des variables de la page. Ensuite, je l'ai configuré sur $ (document) .Readady ():

$ (fenêtre) .Resize (fonction (fonction () {$ .Plot ($ ('# graph_div'), données, opts);});


2 commentaires

Voici un exemple de travail de leur site: personnes.iola.dk/olau/flot/ Exemples / ReSize.html


J'aime bien la façon dont vous avez fait cela. Il supprime également la nécessité du plugin de redimensionnement. Le seul inconvénient que j'ai remarqué est un léger adugnant lors du redimensionnement, mais rien de majeur. Merci!



3
votes

Je viens de trouver une solution à cela moi-même. J'ai enveloppé mon appel à $. Terrain () afin que ce soit la cause initiale de mon problème spécifique, mais FLOT a refusé de redimensionner rapidement même lorsque j'ai utilisé la jQuery redimensionner < / code> événement. Voici mon code change que tout corrigé: xxx


0 commentaires

8
votes

La dernière version du API FLOT DOCS , au moins, décrit un événement de redimensionnement qui fonctionne comme annoncé.

redimensionner ()

dit à FLOT de redimensionner la toile de dessin à la taille de la espace réservé. Vous devez exécuter setupgrid () et dessiner () après Le redimensionnement de la toile est une opération destructrice. Ceci est utilisé à l'intérieur par le plugin de redimensionnement.


1 commentaires

tracé.Resize (); Plot.SetupGrid (); Plot.Draw (); fonctionne pour moi où la parcelle est la suivante: var tracé = $ .Plot ($ ('# graph_div'), données, opts);



3
votes

Le moyen le plus simple consiste à utiliser le plugin de redimensionnement. Il est démontré ici: http://www.flotcharts.org/flot/examples/resize/

mais vous n'ajoutez que xxx


0 commentaires