mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-10 07:52:13 +00:00
placement : le côté extérieur de la branche prime sur le centre ; oncles et tantes ne montent pas
- Une branche au bout de sa fratrie pose ses belles-familles au-delà, jamais dans la fratrie des aînés : la branche de Paul passe à droite d'Eugénie et de Louise, hors de la ligne d'Auguste et Yvonne. - Une belle-famille qui monte au-dessus des parents du conjoint se réduit aux parents si elle y amène des oncles ou tantes ; une simple colonne d'ancêtres reste dessinée (archétype issue-67 inchangé). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a1203fa767
commit
bfa85f83fc
1 file changed
+16
-3
@@ -451,7 +451,9 @@ function layoutOnce(graphData, referenceId, forcedSide, familyTabs = true) {
|
||||
owner.hingeEdges.push([pu, id])
|
||||
continue
|
||||
}
|
||||
const side = forcedSide.get(id) ?? (chain.length > 3 ? (chain.indexOf(id) < chain.length / 2 ? -1 : 1) : (outer || (chain.indexOf(id) < chain.length / 2 ? -1 : 1)))
|
||||
// Le côté extérieur de la branche prime : une branche au bout de sa fratrie pose ses belles-familles au-delà,
|
||||
// jamais dans la fratrie des aînés (Patch, 20/10 : la branche de Paul à droite d'Eugénie)
|
||||
const side = (chain.length === 3 && outer) ? outer : (forcedSide.get(id) ?? (chain.length > 3 ? (chain.indexOf(id) < chain.length / 2 ? -1 : 1) : (chain.indexOf(id) < chain.length / 2 ? -1 : 1)))
|
||||
const saved = anchor
|
||||
const tabsBefore = tabs.length
|
||||
const externalBefore = new Set(externalEdges)
|
||||
@@ -484,10 +486,21 @@ function layoutOnce(graphData, referenceId, forcedSide, familyTabs = true) {
|
||||
// ces parents : des ancêtres plus larges grimperaient dans les rangées des aînés de la lignée et s'y
|
||||
// glisseraient entre deux frères (Patch, 20/10, Marc et Sophie entre Anaïs et Germaine). Les parents
|
||||
// restent, le reste devient un onglet. Des ancêtres en colonne au-dessus des parents restent dessinés.
|
||||
// Une toute petite famille (jusqu'à FAMILY_INLINE_MAX personnes au-delà des parents) reste dessinée.
|
||||
// Une toute petite famille (jusqu'à FAMILY_INLINE_MAX personnes au-delà des parents) reste dessinée,
|
||||
// à condition que ce qui est au-dessus des parents tienne dans leur largeur (une colonne d'ancêtres),
|
||||
// sinon elle déborderait dans les rangées des aînés (Paul et ses frères dans la fratrie de Catherine)
|
||||
const deep = [...block.rows.keys()].some(g => g < gen - 1)
|
||||
const beyondParents = deep ? [...block.members].filter(m => byId.get(m)?._type === 'person' && chainOf.get(m) !== pc).length : 0
|
||||
if (parentsOnly || (deep && beyondParents > FAMILY_INLINE_MAX)) entry.block = reduceToParents(entry)
|
||||
// Au-dessus des parents, seuls les ancêtres en ligne directe du conjoint sont admis : des oncles ou tantes
|
||||
// élargiraient ces rangées et la famille se glisserait dans la fratrie des aînés de la lignée
|
||||
const ancestors = new Set()
|
||||
for (const stack = [id]; stack.length;) {
|
||||
const u = parentUnionOf.get(stack.pop())
|
||||
if (!u) continue
|
||||
for (const k of [byId.get(u)?._data?.p1Key, byId.get(u)?._data?.p2Key]) if (k && !ancestors.has(k)) { ancestors.add(k); stack.push(k) }
|
||||
}
|
||||
const collaterals = deep && [...block.members].some(m => { const n = byId.get(m); return n?._type === 'person' && n._generation < gen - 1 && !ancestors.has(m) })
|
||||
if (parentsOnly || (deep && (beyondParents > FAMILY_INLINE_MAX || collaterals))) entry.block = reduceToParents(entry)
|
||||
built.push(entry)
|
||||
orient(chain, kidOfChain ?? (chain.length === 3 ? (chain[0] === id ? chain[2] : chain[0]) : null), side)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user