2010-06-13 16 views
5

Ich benutze Protovis Arc-Layout und ich würde gerne Verbindungen zwischen Knoten knüpfen, die der Eigenschaft 'value' entsprechen, die im Dataset definiert ist. Wie kann ich darauf zugreifen?Zugriff auf Wertattribut in Protovis-Zeilen

Datensatz wird so definiert: Nodes: ... {nodeName: "Bücher" } ...

Links: ... {source: 1, Target: 4, value : 20} ...

arc.link.add (pv.Line). Strichart (Funktion (d) d.value> 10? "# Cc0000": "#eeeeee"); - funktioniert nicht

Antwort

4

Die Eigenschaft d bezieht sich auf den Knoten. Es gibt kein value Attribut, das in diesem Fall auf dem Knoten definiert ist; Die Verbindungsgewichte sind auf den Links definiert, weshalb die Eigenschaftsfunktion nicht das tut, was Sie erwarten.

Sie können Ihre Eigenschaftsfunktion neu schreiben, um auf die Verbindungsdaten (statt Knoten) zuzugreifen. Die Verbindungsdaten werden mit dem Link-Mutterplatte zugeordnet ist, und wird als das zweite Argument zur Verfügung:

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

es mehr von einer Erklärung ist in der layout documentation. Und auch die pv.Layout.Network API-Referenz:

Die link Markierung hinzugefügt wird, um ein Kind Panel, dessen data Eigenschaft ist definiert als das Layout links Eigenschaft. Die data-Eigenschaft der Verknüpfung ist dann ein Zwei-Elemente-Array des Quellknotens und des Zielknotens. Somit poperties solche wie strokeStyle und fillStyle kann außer Kraft gesetzt werden, um Eigenschaften zu berechnen entweder von der Knotendaten (die erste Argument) oder die Verbindungsdaten (die zweite Argument, die Mutterplatte Daten) dynamisch.