Add a radial fan-chart view of the pedigree
Add a Fan / Tree toggle in the pedigree header. The fan places the dog in a centre disc with each generation as a ring fanning outward, so up to nine generations fit in one compact circle instead of a tree that doubles in width every generation. Inner rings are labelled; tap any wedge for that dog's details. Pedigree-collapse dogs keep their stable hue, and tapping one lights up every wedge of that dog. The existing zoom applies to the fan too. Render dispatch is factored into renderPedigree(); the collapse-highlight now works on any element (tree card or fan wedge) carrying a data-dogkey.
This commit is contained in:
@@ -1285,3 +1285,46 @@ section.collapsed > :not(h2) { display: none; }
|
||||
cursor: pointer;
|
||||
}
|
||||
.ped-toggle:hover { border-color: var(--accent); color: var(--accent); }
|
||||
|
||||
/* ---- radial fan chart ---- */
|
||||
.ped-fan { display: block; margin: 0 auto; max-width: none; }
|
||||
.ped-wedge {
|
||||
cursor: pointer;
|
||||
stroke: var(--border);
|
||||
stroke-width: 1;
|
||||
/* outer rings tint gradually darker for depth */
|
||||
fill: color-mix(in srgb, var(--accent-soft) calc(var(--gen, 1) * 7%), var(--surface));
|
||||
transition: filter 0.1s ease;
|
||||
}
|
||||
.ped-wedge:hover { filter: brightness(0.95); }
|
||||
/* a dog that appears more than once is filled with its stable hue */
|
||||
.ped-wedge-repeat { fill: hsl(var(--repeat-hue, 0), 60%, 80%); stroke: hsl(var(--repeat-hue, 0), 45%, 60%); }
|
||||
.ped-wedge.ped-lit {
|
||||
fill: hsl(var(--repeat-hue, 0), 72%, 62%);
|
||||
stroke: hsl(var(--repeat-hue, 0), 72%, 38%);
|
||||
stroke-width: 2;
|
||||
}
|
||||
.ped-wedge-label {
|
||||
font-size: 8px;
|
||||
fill: var(--text);
|
||||
text-anchor: middle;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
}
|
||||
.ped-fan-center { fill: var(--accent); stroke: none; cursor: pointer; }
|
||||
.ped-fan-center-label {
|
||||
fill: #fff;
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
dominant-baseline: central;
|
||||
pointer-events: none;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root:not([data-theme="light"]) .ped-wedge-label { fill: var(--text); }
|
||||
}
|
||||
.pedigree-caption {
|
||||
margin: 10px 0 0;
|
||||
font-size: 0.85rem;
|
||||
color: var(--muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user