2017-07-06 30 views
0

私はネットワークにノードとエッジを動的に追加しています。 追加する前に、それらがデータセットにまだ存在していないことを確認します。 ノード/エッジを追加すると、manipulationが方法であることがわかりません。コンソール/ログが表示されません。 http://visjs.org/docs/network/manipulation.htmlvis.js beforeAddNodeハンドラ

manipulation: { 
     enabled: false, 
     addNode: function (data, callback) { 
      console.log('add', data); 
      callback(data); 
     }, 
     editNode: function (data, callback) { 
      console.log('edit', data); 
      callback(data); 
     }, 
     addEdge: function (data, callback) { 
      console.log('add edge!', data); 
      callback(data); 
     } 
} 

答えて

1

私はあなたがそれを行うことができる方法をお見せするためにスニペットを追加しました。

ブール値がありますので、変更してその効果を確認できます。

このブール値の代わりに、ノードがDataSetに存在するかどうかをチェックするための関数を実行できます。

// create an array with nodes 
 
    var nodes = new vis.DataSet([ 
 
    {id: 1, label: 'Node 1'}, 
 
    {id: 2, label: 'Node 2'}, 
 
    {id: 3, label: 'Node 3'}, 
 
    {id: 4, label: 'Node 4'}, 
 
    {id: 5, label: 'Node 5'} 
 
    ]); 
 

 
    // create an array with edges 
 
    var edges = new vis.DataSet([ 
 
    {from: 1, to: 3}, 
 
    {from: 1, to: 2}, 
 
    {from: 2, to: 4}, 
 
    {from: 2, to: 5} 
 
    ]); 
 

 
    // create a network 
 
    var container = document.getElementById('mynetwork'); 
 
    var data = { 
 
    nodes: nodes, 
 
    edges: edges 
 
    }; 
 
    var options = { 
 
    manipulation: { 
 
     enabled: false, 
 
     addNode: function (data, callback) { 
 
      console.log('add', data); 
 
      var idExist = true; // you can change it to false to see addition 
 
      if(idExist){ 
 
       callback(null); 
 
       console.log('node exist!!!, not added'); 
 
      } 
 
      else{ 
 
       callback(data); 
 
      } 
 
     }, 
 
     editNode: function (data, callback) { 
 
      console.log('edit', data); 
 
      callback(data); 
 
     }, 
 
     addEdge: function (data, callback) { 
 
      console.log('add edge!', data); 
 
      callback(data); 
 
     } 
 
    } 
 
    }; 
 
    var network = new vis.Network(container, data, options); 
 
    
 
    function addNode(){ 
 
    network.enableEditMode(); 
 
    network.addNodeMode(); 
 
    console.log('click on canvas to add node!'); 
 
    } 
 

 
#mynetwork { 
 
     width: 600px; 
 
     height: 400px; 
 
     border: 1px solid lightgray; 
 
    } 
 

 
    p { 
 
     max-width: 600px; 
 
    }
<!doctype html> 
 
<html> 
 
<head> 
 
    <title>Network | Basic usage</title> 
 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.20.0/vis.min.js"></script> 
 
    <link href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.20.0/vis.min.css" rel="stylesheet" type="text/css"/> 
 
</head> 
 
<body> 
 
<button onclick="addNode()"> add node</button> 
 
<div id="mynetwork"></div> 
 

 

 

 
</body> 
 
</html>

+0

感謝!私は 'network.enableEditMode();が見つかりませんでした。 network.addNodeMode() 'の前にそれはなぜ私のために働かなかったのですか – alfredopacino

関連する問題