1

ページのデフォルトとして階層レイアウトを使用しています。いくつかの頂点 ("2") を他の要素 ("2.1"..."2.3") のコンテナーとして使用したいと考えています。

どうすればそれを達成できますか?

var graph = new mxGraph(document.getElementById('graphContainer'));
var layout =  new mxHierarchicalLayout(graph);

graph.getModel().beginUpdate();
try {
  var parent = graph.getDefaultParent();
  var v0 = graph.insertVertex(parent, null, "0", 0, 0, 240, 30);
  var v1 = graph.insertVertex(parent, null, "1", 0, 0, 240, 30);

  graph.insertEdge(parent, null, null, v0, v1);

  var v2 = this.graph.insertVertex(parent, null, "2", 0, 0, 240, 30, 'o1');
  graph.insertEdge(parent, null, null, v1, v2);

  graph.insertVertex(v2, null, "2.1", 0, 0, 220, 30);
  graph.insertVertex(v2, null, "2.2", 0, 0, 220, 30);
  graph.insertVertex(v2, null, "2.3", 0, 0, 220, 30);

  var v3 = this.graph.insertVertex(parent, null, "3", 0, 0, 240, 30);
  graph.insertEdge(parent, null, null, v1, v3);

  layout.execute(parent);

} finally {
  graph.getModel().endUpdate();
}
<script src="http://jgraph.github.io/mxgraph/javascript/src/js/mxClient.js"></script>
<div id="graphContainer" />

4

1 に答える 1

0

beginUpdate()との間のセクションは、endUpdate()すべて 1 つの複合操作です。mxGraph は変更ごとにモデルを更新しますが、モデル変更イベントのみを発生させ、 の後に再描画しendUpdate()ます。

したがって、レイアウトを順番に呼び出すだけで、元に戻すことができる 1 つの操作として発生します。

最も子のセルから一番上のコンテナーにレイアウトする場合は、次のように切り替える必要がある場合があります。

mxHierarchicalLayout.resizeParent

mxHierarchicalLayout.moveParent

true。詳細については、クラス API 仕様の関連エントリを参照してください。

于 2015-10-07T08:17:45.970 に答える