Как я могу предотвратить перемещение узлов, которые установлены с помощью automove, layouter? - PullRequest
1 голос
/ 26 марта 2020

У меня есть график цитопейзажа со следующими расширениями:

На моем графике у меня есть нормальные узлы с меньшими узлами рядом с ними (здесь желтым цветом). Эти меньшие узлы настроены на перемещение с помощью автоматического перемещения вместе со своим связанным узлом.

enter image description here

Это происходит с этой функцией:

private addCircle(nodeId: string, circleText: string): void {
        var parentNode = this.graph.getElementById(nodeId)
        if (parentNode.data('isCircle') || parentNode.data('circleId')) return

        var px = parentNode.position('x') + 10
        var py = parentNode.position('y') - 10

        var circleId = (this.graph.nodes().size() + 1).toString()
        parentNode.data('circleId', circleId)
        this.graph
            .add({
                group: 'nodes',
                data: { id: circleId, name: circleText },
                position: { x: px, y: py },
                classes: 'XorGroup_' + circleText,
            })
            .unselectify()
            .ungrabify()

        this.graph.automove({
            nodesMatching: this.graph.getElementById(circleId),
            reposition: 'drag',
            dragWith: parentNode,
        })
    }

Если я перемещаю «родителя», он работает совершенно нормально, но если я использую функцию свертывания расширения «Развернуть-Свернуть», узлы отделяются от своего «родителя» и помещаются в верхний левый угол. Это событие свертывания используется на совершенно разных узлах.

enter image description here

Я пытался использовать эту функцию:

cy.nodes().on("expandcollapse.aftercollapse", function(event) { var node = this; ... })

К сожалению, он срабатывает до того, как макет рассчитывается расширением «Развернуть-Свернуть».

У кого-нибудь есть идеи, как управлять тем, что более мелкие узлы ВСЕГДА находятся в той же относительной позиции, что и их «родительские»?

...