如何在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方法 - 定位逻辑问题:当前计算新位置的逻辑无法实现“保持图表高度一致”的目标
求助需求
- 在Balkan Chart API中,重定位子节点的正确方法是什么?
- 是否有官方示例或文档可以指导实现该功能?
- 如何确保展开/折叠节点时,图表的整体高度始终保持一致?
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

