You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Balkan Chart API中动态重定位子节点并保持图表高度一致?

使用Balkan Chart API开发固定高度组织结构图的问题

我正在用Balkan Chart API开发组织结构图,需求是父节点展开时动态重定位子节点,核心目标是展开/折叠节点时保持图表整体高度不变。

问题描述

我需要实现所有level 2节点始终可见的功能,当level 2节点展开时,其子节点要调整位置,但不能改变图表的整体高度。尝试用set方法实现时,频繁遇到子节点找不到、重定位后图表渲染异常的问题。

当前实现方案

我写了一个函数,试图根据父节点位置上下移动子节点:

function moveChildNodes(chart, parentNode) {
    console.log("Moving child nodes for parent:", parentNode);
    
    var childrenIds = parentNode.childrenIds;

    if (!Array.isArray(childrenIds) || childrenIds.length === 0) {
        console.log("No child nodes found for parent node with ID:", parentNode.id);
        return; // Exit if no children
    }

    var parentNodeElement = chart.getNodeElement(parentNode.id);
    if (!parentNodeElement) {
        console.error("Parent node element not found for ID:", parentNode.id);
        return; // Skip if parent is not found
    }

    var baseY = parentNodeElement.getBoundingClientRect().top;
    var nodeHeight = parentNodeElement.getBoundingClientRect().height;

    childrenIds.forEach(function (childId, index) {
        console.log("Looking for child node ID:", childId);
        
        var childNodeElement = chart.getNodeElement(childId);
        if (!childNodeElement) {
            console.error("Child node element not found for ID:", childId);
            return; // Skip if child is not found
        }

        var newY = baseY + (nodeHeight * (index + 1)); // Calculate new Y position

        // Attempt to set the new position using the chart API
        chart.set(childId, { y: newY });
    });

    chart.draw(); // Redraw the chart to apply changes
}

遇到的问题

  • 子节点找不到:有时会触发“子节点元素未找到”的错误提示
  • 无move方法:找不到官方提供的用于动态重定位节点的move方法
  • 定位逻辑问题:当前计算新位置的逻辑无法实现“保持图表高度一致”的目标

求助需求

  1. 在Balkan Chart API中,重定位子节点的正确方法是什么?
  2. 是否有官方示例或文档可以指导实现该功能?
  3. 如何确保展开/折叠节点时,图表的整体高度始终保持一致?

内容的提问来源于stack exchange,提问作者Mahdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 20:32:19