- genotype.ts: toDisplayString zeigt ef→e[f], cchm→c[chm], ch→c[h] (Display-only;
Storage-Contract unverändert). E-Locus Display-Rank E>e>ef: {ef,e} Paar
rendert als ee[f] statt e[f]e (Züchterin-Konvention, Julian-Feedback).
- genotype.ts: normalizeToken akzeptiert Klammer-Eingabe (e[f], c[chm], c[h],
[-]) → interne Symbole; vollständiger Round-Trip Display→Parse.
- genetics.test.ts: Katalog-Regex auf [A-Za-z[\]?-]+ erweitert; GEN-3h
Notation-Fixtures (C/Zuleika/Milka-Orakel, Klammer-Round-Trip, E-Sortierung).
- colorVarietySeed.generated.json: neu generiert (66 Zeilen mit Klammer-Notation).
Gate: build ✓ eslint ✓ vitest 91/91 ✓ e2e 120/120 ✓
407 lines
9.9 KiB
JSON
407 lines
9.9 KiB
JSON
[
|
|
{
|
|
"name": "Pink Eyed White (PEW)",
|
|
"english": "Pink Eyed White",
|
|
"canonicalGenotype": "AA c[h]c[h] DD EE GG pp spsp rere",
|
|
"sortOrder": 0,
|
|
"image": "rotaugen-weiss-pew-d-sep-e-sep.jpg"
|
|
},
|
|
{
|
|
"name": "Hermelin",
|
|
"english": "Dark Tailed White",
|
|
"canonicalGenotype": "aa c[h]c[h] DD EE GG PP spsp rere",
|
|
"sortOrder": 1,
|
|
"image": "hermelin.jpeg"
|
|
},
|
|
{
|
|
"name": "Himalaya",
|
|
"english": "Himalayan",
|
|
"canonicalGenotype": "AA c[h]c[h] DD EE GG PP spsp rere",
|
|
"sortOrder": 2,
|
|
"image": "himalaya.jpg"
|
|
},
|
|
{
|
|
"name": "Zobel",
|
|
"english": "Sable",
|
|
"canonicalGenotype": "aa c[chm]c[chm] DD EE gg PP spsp rere",
|
|
"sortOrder": 3,
|
|
"image": "zobel.jpeg"
|
|
},
|
|
{
|
|
"name": "Rotaugenschimmel",
|
|
"english": "Red-Eyed Roan",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp rere",
|
|
"sortOrder": 4,
|
|
"image": "rotaugen-schimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Agouti",
|
|
"english": "Golden Agouti",
|
|
"canonicalGenotype": "AA CC DD EE GG PP spsp rere",
|
|
"sortOrder": 5,
|
|
"image": "agouti-mit-erklaerung-der-genloci.JPG"
|
|
},
|
|
{
|
|
"name": "Schwarz",
|
|
"english": "Black",
|
|
"canonicalGenotype": "aa CC DD EE GG PP spsp rere",
|
|
"sortOrder": 6,
|
|
"image": "schwarz.jpg"
|
|
},
|
|
{
|
|
"name": "Silberagouti",
|
|
"english": "Grey Agouti",
|
|
"canonicalGenotype": "AA CC DD EE gg PP spsp rere",
|
|
"sortOrder": 7,
|
|
"image": "silberagouti.jpg"
|
|
},
|
|
{
|
|
"name": "Anthrazit",
|
|
"english": "Slate",
|
|
"canonicalGenotype": "aa CC DD EE gg PP spsp rere",
|
|
"sortOrder": 8,
|
|
"image": "anthrazit.jpg"
|
|
},
|
|
{
|
|
"name": "Algierfuchs",
|
|
"english": "Dark-Eyed Honey",
|
|
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
|
"sortOrder": 9,
|
|
"image": "algierfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Blau",
|
|
"english": "Blue",
|
|
"canonicalGenotype": "aa CC dd EE GG PP spsp rere",
|
|
"sortOrder": 10,
|
|
"image": "blau-schwarz-dd.JPG"
|
|
},
|
|
{
|
|
"name": "Gold",
|
|
"english": "Argente Golden",
|
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
|
"sortOrder": 11,
|
|
"image": "gold.jpg"
|
|
},
|
|
{
|
|
"name": "Platin",
|
|
"english": "Lilac",
|
|
"canonicalGenotype": "aa CC DD EE GG pp spsp rere",
|
|
"sortOrder": 12,
|
|
"image": "platin.JPG"
|
|
},
|
|
{
|
|
"name": "Goldfuchs",
|
|
"english": "Yellow Fox",
|
|
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
|
"sortOrder": 13,
|
|
"image": "goldfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Rotfuchs",
|
|
"english": "Argente Nutmeg",
|
|
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
|
"sortOrder": 14,
|
|
"image": "rotfuchs.JPG"
|
|
},
|
|
{
|
|
"name": "dd Gold",
|
|
"english": "dd Argente Golden",
|
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
|
"sortOrder": 15,
|
|
"image": "gold-dd.jpg"
|
|
},
|
|
{
|
|
"name": "dd Platin",
|
|
"english": "dd Lilac",
|
|
"canonicalGenotype": "aa CC dd EE GG pp spsp rere",
|
|
"sortOrder": 16,
|
|
"image": "platin-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Altweiss (REW)",
|
|
"canonicalGenotype": "aa CC DD EE gg pp spsp rere",
|
|
"sortOrder": 17,
|
|
"image": "altweiss-rew.jpeg"
|
|
},
|
|
{
|
|
"name": "Apricot (Blassfuchs)",
|
|
"canonicalGenotype": "AA CC DD ee gg pp spsp rere",
|
|
"sortOrder": 18,
|
|
"image": "apricot-blassfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchs",
|
|
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
|
"sortOrder": 19,
|
|
"image": "blaufuchs.jpg"
|
|
},
|
|
{
|
|
"name": "C-Separator",
|
|
"canonicalGenotype": "aa CC DD ee gg pp spsp rere",
|
|
"sortOrder": 20,
|
|
"image": "c-separator.jpg"
|
|
},
|
|
{
|
|
"name": "Elfenbein",
|
|
"canonicalGenotype": "AA CC DD EE gg pp spsp rere",
|
|
"sortOrder": 21,
|
|
"image": "elfenbein.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs",
|
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
|
"sortOrder": 22,
|
|
"image": "kohlfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Polarfuchs",
|
|
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
|
"sortOrder": 23,
|
|
"image": "polarfuchs.jpg"
|
|
},
|
|
{
|
|
"name": "Saphir",
|
|
"canonicalGenotype": "aa CC DD EE GG pp spsp rere",
|
|
"sortOrder": 24,
|
|
"image": "saphir.jpg"
|
|
},
|
|
{
|
|
"name": "Orangeschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp rere",
|
|
"sortOrder": 25,
|
|
"image": "schimmel-orangeschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Topas",
|
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
|
"sortOrder": 26,
|
|
"image": "topas.jpg"
|
|
},
|
|
{
|
|
"name": "Platin-Hell",
|
|
"canonicalGenotype": "aa CC DD EE GG pp spsp rere",
|
|
"sortOrder": 27,
|
|
"image": "platin-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Agouti dd",
|
|
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
|
"sortOrder": 28,
|
|
"image": "agouti-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Silberagouti dd",
|
|
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
|
"sortOrder": 29,
|
|
"image": "silberagouti-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs dd",
|
|
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
|
"sortOrder": 30,
|
|
"image": "kohlfuchs-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Anthrazit dd",
|
|
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
|
"sortOrder": 31,
|
|
"image": "anthrazit-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Silberschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
|
"sortOrder": 32,
|
|
"image": "silberschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Polarfuchsschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
|
"sortOrder": 33,
|
|
"image": "polarfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Algierfuchsschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp rere",
|
|
"sortOrder": 34,
|
|
"image": "algierfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchsschimmel",
|
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
|
"sortOrder": 35,
|
|
"image": "kohlfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchsschimmel",
|
|
"canonicalGenotype": "aa CC DD e[f]e[f] gg PP spsp rere",
|
|
"sortOrder": 36,
|
|
"image": "blaufuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs, hell",
|
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
|
"sortOrder": 37,
|
|
"image": "kohlfuchs-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Goldfuchs, hell",
|
|
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
|
"sortOrder": 38,
|
|
"image": "goldfuchs-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Goldfuchsschimmel",
|
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp rere",
|
|
"sortOrder": 39,
|
|
"image": "goldfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Gold-Hell",
|
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
|
"sortOrder": 40,
|
|
"image": "gold-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchs, hell",
|
|
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
|
"sortOrder": 41,
|
|
"image": "blaufuchs-hell.jpeg"
|
|
},
|
|
{
|
|
"name": "Rotfuchsschimmel",
|
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG pp spsp rere",
|
|
"sortOrder": 42,
|
|
"image": "rotfuchsschimmel.jpg"
|
|
},
|
|
{
|
|
"name": "Polarfuchs, hell",
|
|
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
|
"sortOrder": 43,
|
|
"image": "polarfuchs-hell.jpeg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchsschimmel, hell",
|
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
|
"sortOrder": 44,
|
|
"image": "kohlfuchsschimmel-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Rotfuchs, hell",
|
|
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
|
"sortOrder": 45,
|
|
"image": "rotfuchs-hell.jpg"
|
|
},
|
|
{
|
|
"name": "Kohlfuchs-Hell",
|
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
|
"sortOrder": 46,
|
|
"image": "kohlfuchs-hell-2.jpg"
|
|
},
|
|
{
|
|
"name": "Algierfuchs, hell",
|
|
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
|
"sortOrder": 47,
|
|
"image": "algierfuchs-hell.JPG"
|
|
},
|
|
{
|
|
"name": "Topas dd",
|
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
|
"sortOrder": 48,
|
|
"image": "topas-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Blaufuchs dd",
|
|
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
|
"sortOrder": 49,
|
|
"image": "blaufuchs-dd.jpg"
|
|
},
|
|
{
|
|
"name": "Marder",
|
|
"canonicalGenotype": "aa c[chm]c[chm] DD EE GG PP spsp rere",
|
|
"sortOrder": 50,
|
|
"image": "marder.JPG"
|
|
},
|
|
{
|
|
"name": "Siam",
|
|
"canonicalGenotype": "aa c[chm]c[h] DD EE GG PP spsp rere",
|
|
"sortOrder": 51,
|
|
"image": "siam-marder-hell.JPG"
|
|
},
|
|
{
|
|
"name": "Zobel-Hell",
|
|
"canonicalGenotype": "aa c[chm]c[h] DD EE gg PP spsp rere",
|
|
"sortOrder": 52,
|
|
"image": "zobel-hell.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Agouti",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE GG PP spsp rere",
|
|
"sortOrder": 53,
|
|
"image": "agouti-cp.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Agouti-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD EE GG PP spsp rere",
|
|
"sortOrder": 54
|
|
},
|
|
{
|
|
"name": "CP-Silberagouti",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE gg PP spsp rere",
|
|
"sortOrder": 55,
|
|
"image": "silberagouti-cp.JPG"
|
|
},
|
|
{
|
|
"name": "CP-Silberagouti-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD EE gg PP spsp rere",
|
|
"sortOrder": 56
|
|
},
|
|
{
|
|
"name": "CP-Algierfuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee GG PP spsp rere",
|
|
"sortOrder": 57,
|
|
"image": "algierfuchs-cp.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Algierfuchs-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD ee GG PP spsp rere",
|
|
"sortOrder": 58
|
|
},
|
|
{
|
|
"name": "CP-Polarfuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee gg PP spsp rere",
|
|
"sortOrder": 59,
|
|
"image": "polarfuchs-cp.jpg"
|
|
},
|
|
{
|
|
"name": "CP-Polarfuchs-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD ee gg PP spsp rere",
|
|
"sortOrder": 60
|
|
},
|
|
{
|
|
"name": "CP-Fuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee GG PP spsp rere",
|
|
"sortOrder": 61
|
|
},
|
|
{
|
|
"name": "CP-Fuchs-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] dd ee GG PP spsp rere",
|
|
"sortOrder": 62
|
|
},
|
|
{
|
|
"name": "CP-Blaufuchs",
|
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee gg PP spsp rere",
|
|
"sortOrder": 63
|
|
},
|
|
{
|
|
"name": "CP-Orangeschimmel",
|
|
"canonicalGenotype": "AA c[chm]c[chm] DD e[f]e[f] GG PP spsp rere",
|
|
"sortOrder": 64
|
|
},
|
|
{
|
|
"name": "CP-Orangeschimmel-Hell",
|
|
"canonicalGenotype": "AA c[chm]c[h] DD e[f]e[f] GG PP spsp rere",
|
|
"sortOrder": 65
|
|
}
|
|
]
|