2017-08-17 175 views
1

私は、Java Webアプリケーションでグラフを生成しています。そこに表示するためにCytoscape.js(2.7.10)に送信する必要があります。アプリケーションからCytoscape.jsにデータを転送するには、gson(2.8.1)を使用してJSONオブジェクトを作成します。次のようにJavaScriptのパートに到着したデータが見えます:Cytoscape.jsでJSONデータを表示

{"elements":[{"nodes":[{"group":"nodes","data":{"id":"a","name":"Eins"}},{"group":"nodes","data":{"id":"b","name":"Zwei"}},{"group":"nodes","data":{"id":"c","name":"Drei"}},{"group":"nodes","data":{"id":"d","name":"Vier"}}]},{"edges":[{"group":"edges","data":{"id":"e","name":"1-2","source":"a","target":"b"}},{"group":"edges","data":{"id":"f","name":"2-3","source":"b","target":"c"}},{"group":"edges","data":{"id":"g","name":"2-4","source":"b","target":"d"}}]}]} 

cytoscapeの設定「ウィンドウが」この

return function(callbackuri, inputdata, divname, title, colorstr) { 
      console.log("CytoScape Test ver:0.1.9"); 
      console.log("Data String send to cyto * "+inputdata+" *"); 
       var cy = cytoscape({ 
        container : $('#cy'), 
        elements: JSON.parse(inputdata), 
        style: [ 
          { 
           selector: 'node', 
           style: { 
            'label': 'data(name)', 
            'width': '60px', 
            'height': '60px', 
            'color': 'blue', 
            'background-fit': 'contain', 
            'background-clip': 'none' 
           } 
          }, { 
           selector: 'edge', 
           style: { 
            'text-background-color': 'yellow', 
            'text-background-opacity': 0.4, 
            'width': '6px', 
            'target-arrow-shape': 'triangle', 
            'control-point-step-size': '140px' 
           } 
          } 
         ] 
       }); 
       // 
       cy.layout(concentric_options); 
       cy.fit(); 
     }) 

のように見える私はまた、要素を介して、セットアップをスキップしようとした:JSON.parse(入力データ)を設定し、レイアウトの前にすべてのオプションを指定します。それらの

var eles = cy.add(JSON.parse(inputdata)); 
    cy.json(JSON.parse(inputdata)); 
    cy.json(JSON.stringify(inputdata)); 
    cy.add(JSON.parse(inputdata)) 
    cy.load(JSON.parse(inputdata)); 
    cy.load(inputdata); 

と同様にいずれも動作しません。たいていの場合、ズームとパンが可能な大きなノードが1つ表示されますが、それは明らかにそこにあるとは限りません。

Funnily Iセットアップできます私は、セットアップ後にこの関数呼び出しを経由してレイアウトする前にデータを追加する場合は、手動でグラフ:

   var eles = cy.add([ { 
        group : "nodes", 
        data : { 
         id : "n0", 
         name : "A", 
         weight : 75 
        } 
       }, { 
        group : "nodes", 
        data : { 
         id : "n1", 
         name : "B", 
         weight : 75 

        } 
       }, 
…. 

誰でも任意のアイデア?

乾杯

ヤンコ

答えて