강제 지정 네트워크에서 노드를 클릭하여 막 대형 차트의 내용을 업데이트하려고합니다. 현재, 메인 패널에서 "mousemove"이벤트를 사용하여 변수 "activeNode"를 업데이트하는 "point"이벤트를 사용하여 어떤 행에 액세스하려고하는지 알려줍니다. 메인 패널의 포인트 이벤트가 activeNode를 업데이트하지 않고 항상 디폴트 값으로 설정된다는 사실에 문제가 있습니다. 이 문제를 해결하기 위해 어디에서나 시도해 보았습니다.하지만 좀 더 근본적인 개념이 빠져 있다고 생각합니다. 여기 강제 지정 네트워크에서 노드를 클릭하여 외부 막 대형 차트를 업데이트하는 방법
은 ... 코드입니다var w = document.body.clientWidth,
h = document.body.clientHeight,
colors = pv.Colors.category19(),
activeNode = 0;
var vis = new pv.Panel()
.width(w)
.height(h)
.fillStyle("white")
.event("mousemove", pv.Behavior.point(Infinity));
var force = vis.add(pv.Layout.Force)
.width(w-200)
.nodes(miserables.nodes)
.links(miserables.links);
force.link.add(pv.Line);
force.node.add(pv.Dot)
.def("o",-1)
.size(function(d) (d.linkDegree + 10) * Math.pow(this.scale, -1.5))
.fillStyle(function(d) d.fix ? "brown" : colors(d.group))
.strokeStyle(function() this.fillStyle().darker())
.lineWidth(1)
.title(function(d) this.index)
.event("mousedown", pv.Behavior.drag())
.event("drag", force)
.event("point", function() {activeNode = this.index; return vis;});
vis.add(pv.Label).top(20).left(w/2).text("activeNode = " + activeNode);
vis.add(pv.Bar)
.data(topw[activeNode].splice(0))
.top(function(d) this.index * 30)
.left(w-80)
.width(15)
.height(20)
.anchor("left").add(pv.Label)
.textAlign("right")
.text(function(d) d[0]);
vis.render();
감사합니다 - 당신은 더 많은 또는 덜 protovis 마스터 그래서 나는이 질문들을 많이 보았다. – shigeta
@shigeta - 나는 다른 Protovis 질문에 대한 답변을 얻기 위해 당신의 뻔뻔한 노력을 보았습니다 :). 명백하게 그것은 효과가있었습니다 - 아첨에 하나를 얻으십시오. – nrabinowitz