2010-06-13 4 views
5

J'utilise la disposition Protovis Arc et je souhaite colorier les liens entre les noeuds en fonction de la propriété 'value' définie dans l'ensemble de données. Comment puis-je y accéder?Accès à l'attribut value dans les lignes Protovis

Dataset est défini comme: nœuds: ... {nodeName: "Livres"} ...

Liens: ... {source: 1, cible: 4, valeur : 20} ...

arc.link.add (pv.Ligne) .strokeStyle (fonction (d) d.value> 10? "# Cc0000": "#eeeeee"); - ne fonctionne pas

Répondre

4

La propriété d fait référence au noeud. Il n'y a pas d'attribut value défini sur le nœud dans ce cas; les poids de liens sont définis sur les liens , ce qui explique pourquoi la fonction de propriété ne fait pas ce que vous attendez.

Vous pouvez réécrire votre fonction de propriété pour accéder aux données de liaison (plutôt que de nœud). Les données de liaison est associé au panneau parent du lien, et est disponible comme second argument:

.strokeStyle(function(d, p) p.value > 10 ? "#c00" : "#eee") 

Il y a plus d'une explication dans le layout documentation. Et voir aussi la référence API pv.Layout.Network:

La marque link est ajouté à un panneau enfant , dont la propriété est data définie comme la propriété de mise en page links. La propriété data du lien est alors un tableau à deux éléments du nœud source et un nœud cible. Ainsi, poperties tels que strokeStyle et fillStyle peuvent être remplacées pour calculer les propriétés de soit les données de noeud (le premier argument ) ou les données de liaison (le second argument , les données de panneau parent) dynamiquement.

Questions connexes