placement : les parents du conjoint juste au-dessus de lui

- La rangée des parents n'est réservée que sur la moitié de l'enfant de la lignée, pour tout couple : au-dessus
  du conjoint, ses propres parents se posent (Louis et Joséphine au-dessus de Victor, 936 → 138 px).
- Un enfant parti dans un onglet ne laisse plus de place fantôme : ses parents se centrent sur les enfants
  dessinés.
- Cinq archétypes mis à jour : les parents du conjoint collés au-dessus de lui.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
IliesAllaliandClaude Fable 5.1 committed 2026-10-20 10:20:40 +02:00
1 parent a562ad9c6e
commit a1203fa767
6 files changed
+55 -51

No files matched your search

@@ -2,12 +2,12 @@
│
┬────┴
│
SP────•───SM Pa────•───Ma
│ │
┬────────┼────────────────┬ ┼────────┬
│ │ │ │ │
S2 S3 S────•────E E2
│
┬───┴────┬
│ │
K1 K2
SP────•───SM Pa────•───Ma
│ │
┬────────┼────────┬ ┼────────┬
│ │ │ │ │
S2 S3 S────•────E E2
│
┬───┴────┬
│ │
K1 K2
@@ -10,12 +10,12 @@ A2────•───A2w
│
┬────┴
│
A3────•───A3w B0────•───B0w
│ │
┬────┴ ┬────────────────┴────┬
│ │ │
X────•────Y S
│
┼
│
K
A3────•───A3w B0────•───B0w
│ │
┴─┬ ┬──────┴────┬
│ │ │
X────•────Y S
│
┼
│
K
@@ -2,16 +2,16 @@ GGGa───•──GGGb
│
┬────┴
│
GGa───•───GGb GGy┄┄┄•┄┄? GGx┄┄┄┄•┄┄?
│ │ │
┬────┴ ┬──────┴ ┬─────────────────┴
│ │ │
GM1───•───GF1 GM2───•───GF2
│ │
┬────┴ ┬────────────────┴
│ │
M────•────F
│
┼
│
Kid
GGa───•───GGb GGy┄┄┄•┄┄┄? GGx┄┄┄┄•┄┄?
│ │ │
┬┴ ┬┴ ┬──────┴
│ │ │
GM1───•───GF1 GM2────•───GF2
│ │
┴─┬ ┬──────┴
│ │
M─────•────F
│
┼
│
Kid
@@ -1,9 +1,9 @@
Pierre───•──Odile Louis──•─Helene
│ │
┬────────┬────┴───┬────────────┬ ┬────────┬───┴────┬────────┬────────┬
│ │ │ │ │ │ │ │ │
Luc Paul Mireil Nadia──•──Marc Claire Julien Sophie Eric
│
┼
│
Anais
Pierre───•──Odile Louis──•─Helene
│ │
┬────────┬────┴───┬────────┬ ┬────────┬───┴────┬────────┬────────┬
│ │ │ │ │ │ │ │ │
Luc Paul Mireil Nadia──•──Marc Claire Julien Sophie Eric
│
┼
│
Anais
@@ -1,9 +1,9 @@
A────•───Aw B────•───Bw C────•───Cw
│ │ │
┬───┴────────────────┬ ┬────┴───┬ ┬────────────────┴
│ │ │ │ │
A2 A1────•───B1 B2─────•───C1
│ │
┼ ┼
│ │
X Y
A────•───Aw B────•───Bw C────•───Cw
│ │ │
┬───┴──────┬ ┬────┴───┬ ┬──────┴
│ │ │ │ │
A2 A1────•───B1 B2────•───C1
│ │
┼ ┼
│ │
X Y
@@ -349,7 +349,9 @@ function layoutOnce(graphData, referenceId, forcedSide, familyTabs = true) {
// Belle-famille en construction : une chaîne dont aucun membre du sang n'est enfant de cette union, mais
// dont un membre du sang a ses parents ailleurs, ira sous ces parents-là (le sang de la référence gagne)
const duSang = anchor && !kc.some(id => blood.has(id) && parentUnionOf.get(id) === unionId) && kc.some(id => blood.has(id) && byId.get(id)._type === 'person' && parentUnionOf.has(id))
if (placed.has(kc) || tabOfChain.has(kc) || duSang) {
// Un enfant parti dans un onglet ne laisse pas de place vide : ses parents se centrent sur les enfants dessinés
if (tabOfChain.has(kc)) return
if (placed.has(kc) || duSang) {
external.push({ kid, unionId })
externalEdges.add(`${unionId}>${kid}`)
childBlocks.push({ ...ghostBlock(kid), unionId })
@@ -547,8 +549,10 @@ function layoutOnce(graphData, referenceId, forcedSide, familyTabs = true) {
}
// Sur un remariage où l'enfant de la lignée est à un bout, seule sa moitié est réservée : au-dessus des
// ex-conjoints, la carte ou la famille du conjoint peut se poser.
// Seule la moitié de l'enfant de la lignée est réservée pour ses parents : au-dessus du conjoint, ses propres
// parents peuvent se poser (Patch, 20/10 : « Louis et Joséphine devraient être au-dessus de Victor »)
const parentsSpan = (rx) => {
if (chain.length > 3 && kidOfChain) {
if (kidOfChain && (chain.indexOf(kidOfChain) === 0 || chain.indexOf(kidOfChain) === chain.length - 1)) {
const k = rx + offsets.get(kidOfChain)
return chain.indexOf(kidOfChain) === 0 ? [rx - FAMILY_GAP, k + byId.get(kidOfChain).width + FAMILY_GAP] : [k - FAMILY_GAP, rx + rowW + FAMILY_GAP]
}