2017-08-17 47 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( inputdata)之後,佈局allkind選項之前。

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); 

沒有他們的工作。大多數情況下,我會看到一個可以放大和縮小的大節點,但這顯然不是假設存在的。

有趣地我可以設置一個圖表,如果我手動設置後,並通過這個函數調用佈局前添加數據:

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

        } 
       }, 
…. 

任何人任何想法?

乾杯

揚科

回答