У меня есть график цитопейзажа со следующими расширениями:
На моем графике у меня есть нормальные узлы с меньшими узлами рядом с ними (здесь желтым цветом). Эти меньшие узлы настроены на перемещение с помощью автоматического перемещения вместе со своим связанным узлом.
Это происходит с этой функцией:
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,
})
}
Если я перемещаю «родителя», он работает совершенно нормально, но если я использую функцию свертывания расширения «Развернуть-Свернуть», узлы отделяются от своего «родителя» и помещаются в верхний левый угол. Это событие свертывания используется на совершенно разных узлах.
Я пытался использовать эту функцию:
cy.nodes().on("expandcollapse.aftercollapse", function(event) { var node = this; ... })
К сожалению, он срабатывает до того, как макет рассчитывается расширением «Развернуть-Свернуть».
У кого-нибудь есть идеи, как управлять тем, что более мелкие узлы ВСЕГДА находятся в той же относительной позиции, что и их «родительские»?