|
|
@@ -320,7 +320,7 @@
|
|
320
|
320
|
<div class="family-tree-diagram">
|
|
321
|
321
|
<div class="family-tree-svg-container">
|
|
322
|
322
|
|
|
323
|
|
- <svg #familyTreeSvg width="3000" height="3000">
|
|
|
323
|
+ <svg #familyTreeSvg width="1000" height="1000">
|
|
324
|
324
|
|
|
325
|
325
|
@for (
|
|
326
|
326
|
layout of unitLayouts;
|
|
|
@@ -339,15 +339,23 @@
|
|
339
|
339
|
as childLayout
|
|
340
|
340
|
) {
|
|
341
|
341
|
|
|
342
|
|
- <line [attr.x1]="layout.x + 160" [attr.y1]="layout.y + 80" [attr.x2]="layout.x + 160"
|
|
343
|
|
- [attr.y2]="((layout.y + 80) + childLayout.y) / 2" stroke="black" stroke-width="2" />
|
|
|
342
|
+ <!-- 親から中間点 -->
|
|
344
|
343
|
|
|
345
|
|
- <line [attr.x1]="layout.x + 160" [attr.y1]="((layout.y + 80) + childLayout.y) / 2"
|
|
346
|
|
- [attr.x2]="childLayout.x + 160" [attr.y2]="((layout.y + 80) + childLayout.y) / 2" stroke="black"
|
|
|
344
|
+ <line [attr.x1]="getCenterX(layout)" [attr.y1]="getBottomCenterY(layout)"
|
|
|
345
|
+ [attr.x2]="getCenterX(layout)" [attr.y2]="getMiddleY(layout, childLayout)" stroke="black"
|
|
347
|
346
|
stroke-width="2" />
|
|
348
|
347
|
|
|
349
|
|
- <line [attr.x1]="childLayout.x + 160" [attr.y1]="((layout.y + 80) + childLayout.y) / 2"
|
|
350
|
|
- [attr.x2]="childLayout.x + 160" [attr.y2]="childLayout.y" stroke="black" stroke-width="2" />
|
|
|
348
|
+ <!-- 横線 -->
|
|
|
349
|
+
|
|
|
350
|
+ <line [attr.x1]="getCenterX(layout)" [attr.y1]="getMiddleY(layout, childLayout)"
|
|
|
351
|
+ [attr.x2]="getCenterX(childLayout)" [attr.y2]="getMiddleY(layout, childLayout)" stroke="black"
|
|
|
352
|
+ stroke-width="2" />
|
|
|
353
|
+
|
|
|
354
|
+ <!-- 子へ -->
|
|
|
355
|
+
|
|
|
356
|
+ <line [attr.x1]="getCenterX(childLayout)" [attr.y1]="getMiddleY(layout, childLayout)"
|
|
|
357
|
+ [attr.x2]="getCenterX(childLayout)" [attr.y2]="getTopCenterY(childLayout)" stroke="black"
|
|
|
358
|
+ stroke-width="2" />
|
|
351
|
359
|
|
|
352
|
360
|
}
|
|
353
|
361
|
|
|
|
@@ -360,30 +368,36 @@
|
|
360
|
368
|
track layout.node.unit.id
|
|
361
|
369
|
) {
|
|
362
|
370
|
|
|
|
371
|
+ <!-- 夫婦線 -->
|
|
|
372
|
+
|
|
363
|
373
|
@if (
|
|
364
|
374
|
layout.node.unit.husband &&
|
|
365
|
375
|
layout.node.unit.wife
|
|
366
|
376
|
) {
|
|
367
|
377
|
|
|
368
|
|
- <line [attr.x1]="layout.x + 140" [attr.y1]="layout.y + 35" [attr.x2]="layout.x + 180"
|
|
369
|
|
- [attr.y2]="layout.y + 35" stroke="red" stroke-width="2" />
|
|
|
378
|
+ <line [attr.x1]="layout.x + PERSON_WIDTH" [attr.y1]="layout.y + PERSON_HEIGHT / 2"
|
|
|
379
|
+ [attr.x2]="layout.x + PERSON_WIDTH + SPOUSE_GAP" [attr.y2]="layout.y + PERSON_HEIGHT / 2"
|
|
|
380
|
+ stroke="red" stroke-width="2" />
|
|
370
|
381
|
|
|
371
|
382
|
}
|
|
372
|
383
|
|
|
373
|
|
-
|
|
374
|
384
|
<!-- 夫 -->
|
|
375
|
385
|
|
|
376
|
386
|
@if (
|
|
377
|
387
|
layout.node.unit.husband
|
|
378
|
388
|
) {
|
|
379
|
389
|
|
|
380
|
|
- <rect [attr.x]="layout.x" [attr.y]="layout.y" width="140" height="70" fill="#dbeafe" stroke="black"
|
|
|
390
|
+ <rect [attr.x]="getHusbandX(layout)" [attr.y]="layout.y" [attr.width]="PERSON_WIDTH"
|
|
|
391
|
+ [attr.height]="PERSON_HEIGHT" fill="#dbeafe"
|
|
|
392
|
+ [attr.stroke]="selectedFamily?.id === layout.node.unit.husband?.id ? '#2563eb' : 'black'"
|
|
381
|
393
|
class="family-node" (click)="selectFamily(layout.node.unit.husband!)" />
|
|
382
|
|
- <text [attr.x]="layout.x + 10" [attr.y]="layout.y + 40" class="family-text" (click)="selectFamily(layout.node.unit.husband!)">
|
|
383
|
394
|
|
|
384
|
|
- {{
|
|
385
|
|
- layout.node.unit.husband.name
|
|
386
|
|
- }}
|
|
|
395
|
+ <text [attr.x]="getHusbandTextX(layout)" [attr.y]="layout.y + 20"
|
|
|
396
|
+ style="writing-mode: vertical-rl;"
|
|
|
397
|
+ [attr.stroke-width]="selectedFamily?.id === layout.node.unit.husband?.id ? 3 : 1"
|
|
|
398
|
+ class="family-text" (click)="selectFamily(layout.node.unit.husband!)">
|
|
|
399
|
+
|
|
|
400
|
+ {{ layout.node.unit.husband.name }}
|
|
387
|
401
|
|
|
388
|
402
|
</text>
|
|
389
|
403
|
|
|
|
@@ -395,14 +409,17 @@
|
|
395
|
409
|
layout.node.unit.wife
|
|
396
|
410
|
) {
|
|
397
|
411
|
|
|
398
|
|
- <rect [attr.x]="layout.x + 180" [attr.y]="layout.y" width="140" height="70" fill="#fde2e2"
|
|
399
|
|
- stroke="black" class="family-node" (click)="selectFamily(layout.node.unit.wife!)" />
|
|
|
412
|
+ <rect [attr.x]="getWifeX(layout)" [attr.y]="layout.y" [attr.width]="PERSON_WIDTH"
|
|
|
413
|
+ [attr.height]="PERSON_HEIGHT" fill="#fde2e2"
|
|
|
414
|
+ [attr.stroke]="selectedFamily?.id === layout.node.unit.wife?.id ? '#dc2626' : 'black'"
|
|
|
415
|
+ class="family-node" (click)="selectFamily(layout.node.unit.wife!)" />
|
|
400
|
416
|
|
|
401
|
|
- <text [attr.x]="layout.x + 190" [attr.y]="layout.y + 40" class="family-text" (click)="selectFamily(layout.node.unit.husband!)">
|
|
|
417
|
+ <text [attr.x]="getWifeTextX(layout)" [attr.y]="layout.y + 20"
|
|
|
418
|
+ style="writing-mode: vertical-rl;"
|
|
|
419
|
+ [attr.stroke-width]="selectedFamily?.id === layout.node.unit.wife?.id ? 3 : 1" class="family-text"
|
|
|
420
|
+ (click)="selectFamily(layout.node.unit.wife!)">
|
|
402
|
421
|
|
|
403
|
|
- {{
|
|
404
|
|
- layout.node.unit.wife.name
|
|
405
|
|
- }}
|
|
|
422
|
+ {{ layout.node.unit.wife.name }}
|
|
406
|
423
|
|
|
407
|
424
|
</text>
|
|
408
|
425
|
|