Доступ к атрибуту value в строках Protovis

Я использую макет Protovis Arc и хочу покрасить связи между узлами в соответствии со свойством «значение», определенным в наборе данных. Как я могу получить к нему доступ?

Набор данных определяется следующим образом: Узлы: ... {nodeName:"Books"} ...

Ссылки: ... {источник: 1, цель: 4, значение: 20} ...

arc.link.add(pv.Line).strokeStyle(function(d) d.value > 10 ? "#cc0000" : "#eeeeee"); - не работает


person Luce    schedule 13.06.2010    source источник


Ответы (1)


Свойство d относится к узлу. В этом случае для узла не определен атрибут value; веса ссылок определены для ссылок, поэтому функция свойства не делает того, что вы ожидаете.

Вы можете переписать функцию свойств для доступа к данным ссылки (а не узла). Данные ссылки связаны с родительской панелью ссылки и доступны в качестве второго аргумента:

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

Дополнительные пояснения приведены в документации по макету. См. также pv.Layout.Network справочник по API:

Метка link добавляется к дочерней панели, свойство data которой определяется как свойство links макета. Тогда свойство data ссылки представляет собой двухэлементный массив исходного узла и целевого узла. Таким образом, свойства, такие как strokeStyle и fillStyle, могут быть переопределены для динамического вычисления свойств либо из данных узла (первый аргумент), либо из данных ссылки (второй аргумент; данные родительской панели).

person mbostock    schedule 13.06.2010