我正在创建一个交互式家谱创建者,这与更简单的版本不同,后者是简单的谱系图/树。
我的要求(基于familyecho.com)是:
- 多个合作伙伴与您通常看到的简单的 2 父母对 1 孩子。
- 多个兄弟姐妹
- 伴侣不一定要生孩子
- 不必总是有父母“对”,可以只有一个父亲/母亲
我遇到的问题是:我正在根据“当前”节点/家庭成员生成偏移量,当我通过第一代时说,2 个父母,它重叠。
重叠示例以及未在同一 X 轴上绘制伙伴的示例:
这是我遇到问题的实际应用程序和主 js 文件。这是我创建的一个简化的 jsfiddle,它演示了父/偏移量问题,尽管我确实必须为此解决重叠问题,此外还要确保合作伙伴与其他合作伙伴在同一 x 轴上绘制。
我该如何解决这个和未来可能的重叠冲突?我是否需要某种重绘功能来检测碰撞并在检测时调整每个块的偏移量?我正在尝试使其无缝,因此完成的重绘数量有限。
计算相对于“上下文”或当前节点的偏移量的示例:
var offset = getCurrentNodeOffset();
if ( relationship == RELATIONSHIPS.PARTNER ) {
var t = offset.top; // same level
var l = offset.left + ( blockWidth + 25 );
} else {
var t = offset.top - (blockHeight + 123 ); // higher
var l = offset.left - ( blockWidth - 25 );
}