2011-04-11 4 views
2

Je sais que Protovis n'est pas vraiment destiné à être utilisé de cette façon, mais y a-t-il une solution pour détruire ce qui est actuellement dans un panneau et add() et ré-add()?Renvoyer la force de Protovis

Je travaille sur une visualisation qui a été construite pour être statique et essaye de la migrer pour la mettre à jour périodiquement via WebSockets.

Répondre

5

Oui, vous pouvez faire en sorte que Protovis soit rendu sans détruire le panneau. Vous pouvez mettre à jour les données utilisées par un panneau et appeler à nouveau le rendu. Par exemple:

var data = [1, 2, 3]; 

var panel = new pv.Panel() 
    .data(data) 
    .add(pv.Bar) 
    ... 

panel.render(); // initial render 

data = [4, 5, 6]; 
panel.data(data); // update the data 
panel.render(); // re-render 
+0

Merci! J'ai fini par travailler en rendant tous les enfants du panel invisibles et en rajoutant de nouveaux enfants, car en fait, même si la solution ci-dessus fonctionne, elle ne s'étend pas à des choses comme le changement d'échelle basé sur des limites de données. Si vous représentez des données de 1 à 10 et que la prochaine version de vos données va de 1 à 50, vous ne pouvez pas redimensionner votre graphique en mettant à jour les données, n'est-ce pas? – nicolaskruchten

+0

Nicolas, Vous avez raison, lorsque vous ajustez vos données, vous devez reconstruire vos objets d'échelle si vous souhaitez modifier leur domaine ou leur plage en fonction des données. – bsterne

Questions connexes