最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

angular - How to programmatically update position of a nodegroup? - Stack Overflow

programmeradmin1浏览0评论

When trying to redraw, the position of the node/group doesn't update on the jsPlumb 6.81.0.

The event is fired correctly, but the updateNode or Group dooes not do anything on the position.

May I know what we need to do to make it work correctly ?

surface?.bind(EVENT_NODE_MOVE, (event: VertexMovedParams<unknown>) => {
    const group = toolkit?.getGroup(`group-${event.vertex.id}`);
    console.log(group);
    if (group) {
        toolkit?.updateGroup(group, {
        left: event.pos.x - 8,
        top: event.pos.y + 217,
    });
    //surface.repaint(group, true);
}
});

I'm trying to make move my node programmatically with the bind event.

When trying to redraw, the position of the node/group doesn't update on the jsPlumb 6.81.0.

The event is fired correctly, but the updateNode or Group dooes not do anything on the position.

May I know what we need to do to make it work correctly ?

surface?.bind(EVENT_NODE_MOVE, (event: VertexMovedParams<unknown>) => {
    const group = toolkit?.getGroup(`group-${event.vertex.id}`);
    console.log(group);
    if (group) {
        toolkit?.updateGroup(group, {
        left: event.pos.x - 8,
        top: event.pos.y + 217,
    });
    //surface.repaint(group, true);
}
});

I'm trying to make move my node programmatically with the bind event.

Share Improve this question edited Mar 12 at 10:11 ahuemmer 2,05913 gold badges27 silver badges36 bronze badges asked Mar 11 at 20:10 Arthur KleinArthur Klein 1
Add a comment  | 

1 Answer 1

Reset to default 0

To programmatically update the position of a node or group in jsPlumb, you must update both the toolkit model and the DOM element's position, as jsPlumb does not automatically sync rendering with model updates.

surface?.bind(EVENT_NODE_MOVE, (event: VertexMovedParams<unknown>) => {
    const group = toolkit?.getGroup(`group-${event.vertex.id}`);
    console.log(group);
    
    if (group) {
        toolkit?.updateGroup(group, {
            left: event.pos.x - 8,
            top: event.pos.y + 217,
        });

        // Update the DOM element's position programmatically
        const domElement = surface?.getRenderedGroup(group); // Get the rendered DOM element
        if (domElement) {
            domElement.style.left = `${event.pos.x - 8}px`;
            domElement.style.top = `${event.pos.y + 217}px`;
        }

        surface.repaint(group, true);
    }
});
发布评论

评论列表(0)

  1. 暂无评论