2017-09-08 4 views
0

Je dois obtenir les nœuds connectés à un nœud donné, et les mettre en évidence. La fonction "composants" semble bonne pour cela, mais ma traversée échoue. La collection de composants affiche une taille de un et seul le nœud d'origine est mis en surbrillance.Iterate connecté nœuds dans cytoscape.js

cynode = cy.getElementById(idstr); 
comps = cynode.components();  
for (i = 0; i < comps.length; i++) /* really there's only one component */ 
{ 
    comp = comps[i]; 
    alert(comp.size()); /* this always returns 1!! */ 
    comp.nodes().addClass('nodehlt'); /* only the original node gets highlighted */ 
} 

Répondre

1

De la documentation:

eles.components(): Obtenez les composants connectés, ne considérant que les éléments de la collection d'appel. Un tableau de collections est renvoyé, chaque collection représentant un composant.

Si l'ensemble d'éléments que vous considérez n'est qu'un seul noeud, il ne peut y avoir qu'un seul composant.

Vous devez obtenir les composants de l'ensemble du graphique (cy.elements.components()) - ou du sous-graphique qui vous intéresse. Parmi ces composants, vous devez ensuite trouver celui qui contient le nœud d'intérêt.

+0

Super, merci. Ma confusion était que je pensais que ce serait de retourner les composants connectés aux éléments de l'ensemble appelant. –

+0

La quasi-totalité de l'API est structurée de sorte que vous pouvez effectuer des requêtes qui ne prennent en compte qu'un sous-graphe particulier - la collection appelante. Si la fonction fonctionnait comme vous l'avez décrit, vous devez supprimer des éléments du graphique pour effectuer des requêtes de sous-graphe. – maxkfranz