Есть некоторая задержка для обновления макета в cytoscape.js? - PullRequest
0 голосов
/ 10 июля 2019

Когда я щелкаю один узел, я хочу обновить макет, указав высокий коэффициент для выбранного узла.

// 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;
        }
    },

Есть ли задержка для макета? Независимо от того, является ли он сеточным или концентрическим, когда я щелкаю по одному узлу, изменений нет, затем я снова щелкаю по тому же узлу, и он переходит в ожидаемое состояние, например концентрическими.

Когда я щелкаю узел в первый раз, его нужно просто выбрать, но макет не изменился:

screenshot: no change after 1st click

Затем я снова щелкаю по тому же узлу, и он меняется на ожидаемое состояние:

screenshot: layout refreshed after 2nd click

Похоже, что есть задержка. Есть ли возможность сделать метод макета незамедлительным? Но метод layout.run(); не имеет параметров.

...