[英]Display JSON data in Cytoscape.js
我正在 Java Web 应用程序中以编程方式生成一个图形,该图形应该发送到 Cytoscape.js (2.7.10) 以便在那里显示。 为了将数据从应用程序传输到 Cytoscape.js,我使用 gson (2.8.1) 构建了一个 JSON 对象。 到达 JavaScript 部分的数据如下所示:
{"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"}}]}]}
设置细胞景观“窗口”看起来像这样
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)。
喜欢
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
}
},
….
有人知道吗?
干杯
扬科
您的 JSON 无效。 查看规范: http : //js.cytoscape.org/#notation/elements-json
elements
要么是一个数组要么是一个对象——而不是一个包裹在另一个中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.