Когда я щелкаю один узел, я хочу обновить макет, указав высокий коэффициент для выбранного узла.
// 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();
не имеет параметров.