2017-08-17 98 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 

        } 
       }, 
…. 

任何人任何想法?

干杯

扬科

回答