2017-03-16 1 views
0

レンダリングするcytoscape.jsグラフがあります。私はノードを配置するためにプリセットレイアウトを利用することに興味があります。 cytoscape.jsのドキュメントでは、プリセットのレイアウトについては、以下を示していますCytoscape.jsプリセットレイアウトドキュメント

var options = { 
    name: 'preset', 
    positions: undefined, // map of (node id) => (position obj); or function(node){ return somPos; } 
    zoom: undefined, // the zoom level to set (prob want fit = false if set) 
    pan: undefined, // the pan level to set (prob want fit = false if set) 
    fit: true, // whether to fit to viewport 
    padding: 30, // padding on fit 
    animate: false, // whether to transition the node positions 
    animationDuration: 500, // duration of animation in ms if enabled 
    animationEasing: undefined, // easing of animation if enabled 
    ready: undefined, // callback on layoutready 
    stop: undefined // callback on layoutstop 
}; 

いくつかのいずれかが、それは私がすべて格納し、次の

// map of (node id) => (position obj); or function(node){ return somPos; } 

を言うときドキュメントが何を意味するかの例を私は理解するのに役立つか、与えることができます次の列

id, origin, destination, x position, y position

とMySQLデータベーステーブル内のノードはcytoscape.js位置がdictiを取るんこれは次のようになります。

{'id': 1, {'x':10, 'y':45}}, {'id': 2, {'x':21, 'y':32}}など?

答えて

1

これは、としてpositionsを設定すると、各ノードの位置を取得する関数を作成する必要があることを意味します。例えば

cy.nodes().forEach(function(n){ 
    var x = n.data("x"); 
    var y = n.data("y"); 
}); 

このあなたのノードの位置を返す必要があります。あなたはそれを作成しているときは、ノードの位置を設定することができます

EDIT

。たとえば、次のように多くのための

var elements; 
 
    elements: [{"data":{"id":"yourID","name":"name"},"position"{"x":"0.0","y":"0.0"}}];

、Cytoscape jsのサイト上でthisデモを参照してください。ここで彼らは手動で位置を設定します。

+0

元の質問で返信いただきありがとうございます。それらを取得するよりもポジションを設定する方法についての詳細です。 – ForgottenKahz

+0

編集を参照してください。私はあなたを助けて欲しい! – MFigueredo

+0

エレメントJSONの位置を@MFigueredoの例のように定義すると、initで 'layout:{name: 'preset'}'を指定する以外に何もする必要はありません。既定では、プリセットレイアウトは何もせず、既に定義された位置だけを使用します。レイアウトの他の機能は、手動で新しい位置を指定したり、アニメーションなどを使用したりする場合です。 – maxkfranz

関連する問題