当我单击一个节点时,我想通过给选定的节点一个高的因子来刷新布局。
// tap/click
cy.on('tap', 'node', function (evt) {
var node = evt.target;
var tmp = cy.layout(cyLayoutOptions["concentric"]);
tmp.run();
resetZoom();
resetCenter();
});
// grid
sort: function (a, b) {
var aFactor = a.selected() ? 99 : 1;
var bFactor = b.selected() ? 99 : 1;
console.log("a、b factor: " + aFactor + ", " + bFactor);
return aFactor * a.degree() - bFactor * b.degree();
},
position: function (node) {
var isSelected = node.selected();
if (isSelected) {
return { row: 0, col: 0 };
}
}
// concentric
concentric: {
name: "concentric",
nodeDimensionsIncludeLabels: true,
concentric: function (node) {
var factor = node.selected() ? 99 : 1;
return node.degree() * factor;
},
levelWidth: function (nodes) {
return nodes.maxDegree();// / 4;
}
},
布局是否有些延迟?无论是网格还是同心,当我单击一个节点时都没有更改,然后再次单击同一节点并将其更改为我的预期状态,例如同心。
当我第一次单击节点时,应该只选择它,但布局没有变化:
然后,我再次单击同一节点,它将更改为我的预期状态:
似乎有一个延迟。是否有一些选项可以使布局方法立即更新?但是方法layout.run();
没有参数。