少し古いバージョンのdagre-d3ライブラリ(4.11)を使用したソリューションが見つかりました。誰かが最新のバージョンで問題を見つけることができれば、それも役立ちます。ありがとうございましたDagreを使用してズームした後にHTMLを再レンダリングするd3
私はDagre d3を使用してグラフを描画しています。
私が最初に私のグラフを描画すると、ユーザーが特定のノード上でクリックしたとき、私は
g = new dagreD3.graphlib.Graph()
.setGraph({})
.setDefaultEdgeLabel(function() { return {}; });
var svg = d3.select("svg"),
inner = svg.select("g");
svgGroup = svg.append("g");
var render = new dagreD3.render();
render(d3.select("svg g"), g);
var zoom = d3.behavior.zoom().on("zoom", function() {
inner.attr("transform", "translate(" + d3.event.translate + ")" +
"scale(" + d3.event.scale + ")");
currentZoomScale = d3.event.scale;
currentPosition = d3.event.translate;
});
svg.call(zoom);
はその後、私はそのノードのラベルにHTMLを追加したいです。うまくズームや再後
g.node(id).label += "<div>" + inputTemplate + "</div>";
var zoom = d3.behavior.zoom()
.scale(currentZoomScale)
.on("zoom", function() {
inner.attr("transform", "translate(" + d3.event.translate + ")" + "scale(" + d3.event.scale + ")")
});
svg.call(zoom);
d3.select("svg").on("dblclick.zoom", null);
inner.attr("transform", "translate(" + currentPosition + ")" + "scale(" + currentZoomScale + ")");
私は
currentPosition
と
currentZoomScale
を維持することによって、私は、グラフの滞在を確認することができるだろうと思った
:これは私が次のように行うのグラフを、私は再レンダリングしない限り表示されません。 -レンダリング。しかし、そうではありません。私はにズームインするとき、すべての私のノードが、私はズームアウト場合より小さく、かつ大きくなる。
を使用すると、「うまくとどまる」とはどういう意味ですか? –