【发布时间】:2018-09-06 19:06:56
【问题描述】:
目标:
- 元素需要是使用多种布局(dagre 和 grid)的位置
- 复合/父元素必须使用 dagre 布局定位
- Child 元素必须使用 grid 布局放置在单列中(如项目列表)
问题: 在我使用 dagre 布局后,我尝试为复合节点制作布局,但它使用新布局重置所有元素,而我想将父节点保留为 dagre 定位它们
JSFIDDLE: https://jsfiddle.net/bababalcksheep/jwm701oe/
代码:
var cy = window.cy = cytoscape({
container: document.getElementById('cy'),
boxSelectionEnabled: false,
autounselectify: true,
layout: {
name: 'dagre'
},
style:[{selector:'node',css:{'content':'data(id)','text-valign':'center','text-halign':'center','shape':'rectangle'}},{selector:'$node > node',css:{'padding-top':'10px','padding-left':'10px','padding-bottom':'10px','padding-right':'10px','text-valign':'top','text-halign':'center','background-color':'#bbb'}},{selector:'edge',css:{'target-arrow-shape':'triangle'}},{selector:':selected',css:{'background-color':'black','line-color':'black','target-arrow-color':'black','source-arrow-color':'black'}}],
elements:{nodes:[{data:{id:'items-a',name:'items-a'}},{data:{id:'a-1',name:'a-1',parent:'items-a'}},{data:{id:'a-2',name:'a-2',parent:'items-a'}},{data:{id:'items-b',name:'items-b'}},{data:{id:'b-1',name:'b-1',parent:'items-b'}},{data:{id:'b-2',name:'b-2',parent:'items-b'}},{data:{id:'items-c',name:'items-c'}},{data:{id:'c-1',name:'c-1',parent:'items-c'}},{data:{id:'c-2',name:'c-2',parent:'items-c'}}],edges:[{'data':{'source':'items-a','target':'items-b'}},{'data':{'source':'items-b','target':'items-c'}}]},
ready: function () {
//.
//
cy = this;
// sort child nodes with grid layout using 1 column
/*
var parentNodes = cy.nodes(':parent');
parentNodes.descendants().layout({
name: 'grid',
cols: 1
}).run();
*/
//
//
}
});
【问题讨论】: