Я создаю создателя интерактивного генеалогического древа, в отличие от более простых версий, которые представляют собой простые родословные диаграммы/деревья.Как предотвратить перекрытие в генераторе генеалогического древа?
Требование шахтного (на основе familyecho.com) являются:
- несколько партнеров против только простого 2 родителя 1 ребенком, что вы обычно видите.
- несколько братьев и сестер
- партнеры обязательно не должны иметь детей
- там действительно всегда не должны быть родителем «пара», может быть просто один отец/мать
Проблема Я встречаюсь: я создаю смещения на основе «текущего» узла/члена семьи, и когда я прохожу мимо первого поколения, скажем, 2 родителя, он перекрывается.
Пример перекрытия, а также партнер не нарисованы на одной и той же оси X:
Здесь actual app и main js file, где у меня вопрос. И вот simplified jsfiddle, который я создал, который демонстрирует проблему с родительским/смещением, хотя мне действительно нужно разрешить перекрытие для этого вообще, в дополнение к тому, чтобы партнеры были нарисованы на той же оси x, что и другие партнеры.
Как я могу решить это и возможные конфликты на будущих перекрытиях? Нужна ли мне некоторая функция перерисовки, которая обнаруживает collisions и корректирует смещения каждого блока при обнаружении? Я пытаюсь сделать его бесшовным, поэтому выполняется ограниченное количество перерисовки.
Пример расчета смещения относительно «контекста» или текущего узла:
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);
}
На вопрос о пересекающемся дедушке/бабушке все, что вам нужно сделать, это растянуть расстояние между родителями, о которых идет речь, возможно? – Rodrigo
Вы пробовали выкладывать узлы сверху вниз вместо текущего подхода вверх? Вы получаете перекрытие, потому что (по крайней мере, в примере JavaScript) вы позиционируете родителей на основании положения ребенка. Это терпит неудачу, потому что он не учитывает узлы-братья, когда он добавляет новых родителей, а просто отбрасывает их туда и надеется на лучшее. – aroth
@Rodrigo - Я считаю, что я это пробовал, но столкнулся с чем-то другим.Я попытаюсь воссоздать его в другой скрипке. –