Compare commits
1 Commits
feature/ca
...
feature/st
| Author | SHA1 | Date | |
|---|---|---|---|
| c8ab6bf072 |
@@ -40,25 +40,6 @@ npm run build
|
|||||||
npm run preview
|
npm run preview
|
||||||
```
|
```
|
||||||
|
|
||||||
## Farbschlag-Katalog (AR-5)
|
|
||||||
|
|
||||||
Der Katalog lebt in `src/genetics/catalog.ts` (Single Source of Truth).
|
|
||||||
Nach jeder Änderung dort den Generator laufen lassen:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm run gen:catalog
|
|
||||||
```
|
|
||||||
|
|
||||||
Erzeugt zwei Artefakte und committet beide:
|
|
||||||
|
|
||||||
| Datei | Notation | Verwendung |
|
|
||||||
|---|---|---|
|
|
||||||
| `src/genetics/colorVarietySeed.generated.json` | Klammer (`e[f]`, `c[chm]`) | UI-Dropdowns, Frontend-Suche |
|
|
||||||
| `src/genetics/colorVarietySeed.backend.json` | Frozen symbols (`ef`, `cchm`) | EF-Seed-Migrationen (Pam, DATA-Lane) |
|
|
||||||
|
|
||||||
Der vitest-Drift-Guard (`catalog-drift.test.ts`) schlägt fehl, wenn
|
|
||||||
`generated.json` nach einer Katalog-Änderung nicht aktualisiert wurde.
|
|
||||||
|
|
||||||
## E2E-Tests (QA-1, Playwright)
|
## E2E-Tests (QA-1, Playwright)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -75,4 +56,4 @@ npx playwright test --project=phone # nur Smartphone-Viewport (390px)
|
|||||||
überspringen sich selbst; die übrigen legen eigene Datensätze an.
|
überspringen sich selbst; die übrigen legen eigene Datensätze an.
|
||||||
- Beide Viewports (Smartphone 390px, Laptop 1280px) laufen für jede Spec;
|
- Beide Viewports (Smartphone 390px, Laptop 1280px) laufen für jede Spec;
|
||||||
alle Assertions prüfen die deutschen Oberflächentexte direkt aus
|
alle Assertions prüfen die deutschen Oberflächentexte direkt aus
|
||||||
`src/strings/de.ts`.
|
`src/strings/de.ts`.
|
||||||
|
|||||||
@@ -54,6 +54,23 @@ test('unbekanntes Tier zeigt den deutschen Nicht-gefunden-Zustand', async ({ pag
|
|||||||
await expect(page.getByText(t.notFound).or(page.getByText(de.api.errors.notFound))).toBeVisible()
|
await expect(page.getByText(t.notFound).or(page.getByText(de.api.errors.notFound))).toBeVisible()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('Ahnen-Namen sind Links zur Tier-Detailseite (STAMMBAUM-OPEN)', async ({ page }) => {
|
||||||
|
skipUnlessMock()
|
||||||
|
await page.goto('/rennmaeuse/kruemel/stammbaum')
|
||||||
|
await expect(page.locator('.pedigree-card').first()).toBeVisible()
|
||||||
|
|
||||||
|
// Fridolin ist Vater von Krümel — sein Name-Link soll /rennmaeuse/fridolin öffnen
|
||||||
|
const nameLink = page.getByRole('link', { name: 'Fridolin' })
|
||||||
|
await expect(nameLink).toBeVisible()
|
||||||
|
// href korrekt gesetzt
|
||||||
|
await expect(nameLink).toHaveAttribute('href', '/rennmaeuse/fridolin')
|
||||||
|
// Tastatur-Navigation (umgeht Toolbar-Überlappung im SVG-Canvas, testet zugl. Accessibility)
|
||||||
|
await nameLink.focus()
|
||||||
|
await page.keyboard.press('Enter')
|
||||||
|
await expect(page.getByRole('heading', { name: 'Fridolin' })).toBeVisible()
|
||||||
|
await expect(page).toHaveURL(/\/rennmaeuse\/fridolin$/)
|
||||||
|
})
|
||||||
|
|
||||||
test('Namenloser Ahne zeigt Platzhalter in der Stammbaum-Karte (UI-POLISH-2)', async ({ page }) => {
|
test('Namenloser Ahne zeigt Platzhalter in der Stammbaum-Karte (UI-POLISH-2)', async ({ page }) => {
|
||||||
skipUnlessMock()
|
skipUnlessMock()
|
||||||
await page.goto('/rennmaeuse/nameless-stub/stammbaum')
|
await page.goto('/rennmaeuse/nameless-stub/stammbaum')
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
/**
|
|
||||||
* Katalog-Generator — AR-5
|
|
||||||
*
|
|
||||||
* Erzeugt zwei Artefakte aus catalog.ts (Single Source of Truth):
|
|
||||||
*
|
|
||||||
* colorVarietySeed.generated.json — Display-Notation (Klammer: e[f]/c[chm]/c[h])
|
|
||||||
* → Quelle für UI-Dropdowns, Frontend-Suche.
|
|
||||||
*
|
|
||||||
* colorVarietySeed.backend.json — Frozen internal symbols (ef/cchm/ch)
|
|
||||||
* → Quelle für künftige EF-Seed-Migrationen (Pam).
|
|
||||||
* NICHT in Bracket-Notation ändern — Backend-Parser
|
|
||||||
* erwartet frozen symbols (CR-11-Matcher-Guardrail).
|
|
||||||
*
|
|
||||||
* Ausführen nach jeder Änderung an catalog.ts:
|
|
||||||
* npm run gen:catalog
|
|
||||||
*
|
|
||||||
* Der vitest-Drift-Guard (catalog-drift.test.ts) schlägt fehl, wenn
|
|
||||||
* generated.json veraltet ist — Fehler macht den fehlenden Generator-Lauf sichtbar.
|
|
||||||
*/
|
|
||||||
import { BASE_COLORS, CATALOG, representativeGenotype } from './src/genetics/catalog.ts'
|
|
||||||
import { LOCUS_ORDER } from './src/genetics/loci.ts'
|
|
||||||
import type { Genotype } from './src/genetics/genotype.ts'
|
|
||||||
import { writeFileSync } from 'fs'
|
|
||||||
|
|
||||||
/** Internal (frozen) display string — concatenates canonical allele symbols without bracket mapping. */
|
|
||||||
function toInternalString(g: Genotype): string {
|
|
||||||
return LOCUS_ORDER.filter(
|
|
||||||
(locus) => locus !== 'Sls' || !(g.Sls[0] === 'sl' && g.Sls[1] === 'sl'),
|
|
||||||
)
|
|
||||||
.map((locus) => (g[locus][0] + g[locus][1]).replace(/\?/g, '-'))
|
|
||||||
.join(' ')
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Display artefact (bracket notation) ─────────────────────────────────────
|
|
||||||
const displayPath = './src/genetics/colorVarietySeed.generated.json'
|
|
||||||
writeFileSync(displayPath, JSON.stringify(CATALOG, null, 2) + '\n')
|
|
||||||
console.log(`[gen:catalog] display → ${displayPath} (${CATALOG.length} rows)`)
|
|
||||||
|
|
||||||
// ── Backend artefact (frozen internal symbols) ───────────────────────────────
|
|
||||||
const backendSeed = BASE_COLORS.map((entry, i) => ({
|
|
||||||
name: entry.name,
|
|
||||||
...(entry.english !== undefined ? { english: entry.english } : {}),
|
|
||||||
canonicalGenotype: toInternalString(representativeGenotype(entry)),
|
|
||||||
sortOrder: i,
|
|
||||||
...(entry.image !== undefined ? { image: entry.image } : {}),
|
|
||||||
}))
|
|
||||||
const backendPath = './src/genetics/colorVarietySeed.backend.json'
|
|
||||||
writeFileSync(backendPath, JSON.stringify(backendSeed, null, 2) + '\n')
|
|
||||||
console.log(`[gen:catalog] backend → ${backendPath} (${backendSeed.length} rows)`)
|
|
||||||
@@ -10,8 +10,7 @@
|
|||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"e2e": "playwright test",
|
"e2e": "playwright test"
|
||||||
"gen:catalog": "npx tsx gen-seed.mts"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
/**
|
|
||||||
* AR-5 Drift-Guard: colorVarietySeed.generated.json muss mit dem Live-Output
|
|
||||||
* aus catalog.ts übereinstimmen.
|
|
||||||
*
|
|
||||||
* Schlägt dieser Test fehl, wurde catalog.ts verändert ohne danach
|
|
||||||
* `npm run gen:catalog` auszuführen. Fix: `npm run gen:catalog` laufen lassen
|
|
||||||
* und die geänderten JSON-Dateien committen.
|
|
||||||
*/
|
|
||||||
import { readFileSync } from 'fs'
|
|
||||||
import { fileURLToPath } from 'url'
|
|
||||||
import { dirname, join } from 'path'
|
|
||||||
import { describe, it, expect } from 'vitest'
|
|
||||||
import { CATALOG } from '../catalog'
|
|
||||||
|
|
||||||
const __dir = dirname(fileURLToPath(import.meta.url))
|
|
||||||
|
|
||||||
describe('AR-5 Catalog drift-guard', () => {
|
|
||||||
it('colorVarietySeed.generated.json stimmt mit catalog.ts überein (sonst: npm run gen:catalog)', () => {
|
|
||||||
const jsonPath = join(__dir, '..', 'colorVarietySeed.generated.json')
|
|
||||||
const committed = JSON.parse(readFileSync(jsonPath, 'utf-8'))
|
|
||||||
// CATALOG is readonly — deep equality against the plain parsed array is sufficient.
|
|
||||||
expect(committed).toEqual(Array.from(CATALOG))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,426 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"name": "Pink Eyed White (PEW)",
|
|
||||||
"english": "Pink Eyed White",
|
|
||||||
"canonicalGenotype": "AA chch 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 chch DD EE GG PP spsp rere",
|
|
||||||
"sortOrder": 1,
|
|
||||||
"image": "hermelin.jpeg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Himalaya",
|
|
||||||
"english": "Himalayan",
|
|
||||||
"canonicalGenotype": "AA chch DD EE GG PP spsp rere",
|
|
||||||
"sortOrder": 2,
|
|
||||||
"image": "himalaya.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Zobel",
|
|
||||||
"english": "Sable",
|
|
||||||
"canonicalGenotype": "aa cchmcchm DD EE gg PP spsp rere",
|
|
||||||
"sortOrder": 3,
|
|
||||||
"image": "zobel.jpeg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Rotaugenschimmel",
|
|
||||||
"english": "Red-Eyed Roan",
|
|
||||||
"canonicalGenotype": "AA CC DD efef 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": "Dilute Gold",
|
|
||||||
"english": "dd Argente Golden",
|
|
||||||
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
|
||||||
"sortOrder": 15,
|
|
||||||
"image": "gold-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute 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 efef 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": "Dilute Agouti",
|
|
||||||
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
|
||||||
"sortOrder": 28,
|
|
||||||
"image": "agouti-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Silberagouti",
|
|
||||||
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
|
||||||
"sortOrder": 29,
|
|
||||||
"image": "silberagouti-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Kohlfuchs",
|
|
||||||
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
|
||||||
"sortOrder": 30,
|
|
||||||
"image": "kohlfuchs-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Anthrazit",
|
|
||||||
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
|
||||||
"sortOrder": 31,
|
|
||||||
"image": "anthrazit-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Algierfuchs",
|
|
||||||
"canonicalGenotype": "AA CC dd ee GG PP spsp rere",
|
|
||||||
"sortOrder": 32
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Goldfuchs",
|
|
||||||
"canonicalGenotype": "AA CC dd ee GG pp spsp rere",
|
|
||||||
"sortOrder": 33
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Rotfuchs",
|
|
||||||
"canonicalGenotype": "aa CC dd ee GG pp spsp rere",
|
|
||||||
"sortOrder": 34
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Polarfuchs",
|
|
||||||
"canonicalGenotype": "AA CC dd ee gg PP spsp rere",
|
|
||||||
"sortOrder": 35
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Silberschimmel",
|
|
||||||
"canonicalGenotype": "AA CC DD efef gg PP spsp rere",
|
|
||||||
"sortOrder": 36,
|
|
||||||
"image": "silberschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Polarfuchsschimmel",
|
|
||||||
"canonicalGenotype": "AA CC DD efef gg PP spsp rere",
|
|
||||||
"sortOrder": 37,
|
|
||||||
"image": "polarfuchsschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Algierfuchsschimmel",
|
|
||||||
"canonicalGenotype": "AA CC DD efef GG PP spsp rere",
|
|
||||||
"sortOrder": 38,
|
|
||||||
"image": "algierfuchsschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Kohlfuchsschimmel",
|
|
||||||
"canonicalGenotype": "aa CC DD efef GG PP spsp rere",
|
|
||||||
"sortOrder": 39,
|
|
||||||
"image": "kohlfuchsschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blaufuchsschimmel",
|
|
||||||
"canonicalGenotype": "aa CC DD efef gg PP spsp rere",
|
|
||||||
"sortOrder": 40,
|
|
||||||
"image": "blaufuchsschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Kohlfuchs, hell",
|
|
||||||
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
|
||||||
"sortOrder": 41,
|
|
||||||
"image": "kohlfuchs-hell.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Goldfuchs, hell",
|
|
||||||
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
|
||||||
"sortOrder": 42,
|
|
||||||
"image": "goldfuchs-hell.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Goldfuchsschimmel",
|
|
||||||
"canonicalGenotype": "AA CC DD efef GG pp spsp rere",
|
|
||||||
"sortOrder": 43,
|
|
||||||
"image": "goldfuchsschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Gold-Hell",
|
|
||||||
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
|
||||||
"sortOrder": 44,
|
|
||||||
"image": "gold-hell.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Blaufuchs, hell",
|
|
||||||
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
|
||||||
"sortOrder": 45,
|
|
||||||
"image": "blaufuchs-hell.jpeg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Rotfuchsschimmel",
|
|
||||||
"canonicalGenotype": "aa CC DD efef GG pp spsp rere",
|
|
||||||
"sortOrder": 46,
|
|
||||||
"image": "rotfuchsschimmel.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Polarfuchs, hell",
|
|
||||||
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
|
||||||
"sortOrder": 47,
|
|
||||||
"image": "polarfuchs-hell.jpeg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Kohlfuchsschimmel, hell",
|
|
||||||
"canonicalGenotype": "aa CC DD efef GG PP spsp rere",
|
|
||||||
"sortOrder": 48,
|
|
||||||
"image": "kohlfuchsschimmel-hell.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Rotfuchs, hell",
|
|
||||||
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
|
||||||
"sortOrder": 49,
|
|
||||||
"image": "rotfuchs-hell.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Kohlfuchs-Hell",
|
|
||||||
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
|
||||||
"sortOrder": 50,
|
|
||||||
"image": "kohlfuchs-hell-2.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Algierfuchs, hell",
|
|
||||||
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
|
||||||
"sortOrder": 51,
|
|
||||||
"image": "algierfuchs-hell.JPG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Topas",
|
|
||||||
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
|
||||||
"sortOrder": 52,
|
|
||||||
"image": "topas-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Blaufuchs",
|
|
||||||
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
|
||||||
"sortOrder": 53,
|
|
||||||
"image": "blaufuchs-dd.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Marder",
|
|
||||||
"canonicalGenotype": "aa cchmcchm DD EE GG PP spsp rere",
|
|
||||||
"sortOrder": 54,
|
|
||||||
"image": "marder.JPG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Siam",
|
|
||||||
"canonicalGenotype": "aa cchmch DD EE GG PP spsp rere",
|
|
||||||
"sortOrder": 55,
|
|
||||||
"image": "siam-marder-hell.JPG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Zobel-Hell",
|
|
||||||
"canonicalGenotype": "aa cchmch DD EE gg PP spsp rere",
|
|
||||||
"sortOrder": 56,
|
|
||||||
"image": "zobel-hell.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Agouti",
|
|
||||||
"canonicalGenotype": "AA cchmcchm DD EE GG PP spsp rere",
|
|
||||||
"sortOrder": 57,
|
|
||||||
"image": "agouti-cp.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Agouti-Hell",
|
|
||||||
"canonicalGenotype": "AA cchmch DD EE GG PP spsp rere",
|
|
||||||
"sortOrder": 58
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Silberagouti",
|
|
||||||
"canonicalGenotype": "AA cchmcchm DD EE gg PP spsp rere",
|
|
||||||
"sortOrder": 59,
|
|
||||||
"image": "silberagouti-cp.JPG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Silberagouti-Hell",
|
|
||||||
"canonicalGenotype": "AA cchmch DD EE gg PP spsp rere",
|
|
||||||
"sortOrder": 60
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Algierfuchs",
|
|
||||||
"canonicalGenotype": "AA cchmcchm DD ee GG PP spsp rere",
|
|
||||||
"sortOrder": 61,
|
|
||||||
"image": "algierfuchs-cp.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Algierfuchs-Hell",
|
|
||||||
"canonicalGenotype": "AA cchmch DD ee GG PP spsp rere",
|
|
||||||
"sortOrder": 62
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Polarfuchs",
|
|
||||||
"canonicalGenotype": "AA cchmcchm DD ee gg PP spsp rere",
|
|
||||||
"sortOrder": 63,
|
|
||||||
"image": "polarfuchs-cp.jpg"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Polarfuchs-Hell",
|
|
||||||
"canonicalGenotype": "AA cchmch DD ee gg PP spsp rere",
|
|
||||||
"sortOrder": 64
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Fuchs",
|
|
||||||
"canonicalGenotype": "AA cchmcchm dd ee GG PP spsp rere",
|
|
||||||
"sortOrder": 65
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Fuchs-Hell",
|
|
||||||
"canonicalGenotype": "AA cchmch dd ee GG PP spsp rere",
|
|
||||||
"sortOrder": 66
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Blaufuchs",
|
|
||||||
"canonicalGenotype": "AA cchmcchm dd ee gg PP spsp rere",
|
|
||||||
"sortOrder": 67
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Orangeschimmel",
|
|
||||||
"canonicalGenotype": "AA cchmcchm DD efef GG PP spsp rere",
|
|
||||||
"sortOrder": 68
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "CP-Orangeschimmel-Hell",
|
|
||||||
"canonicalGenotype": "AA cchmch DD efef GG PP spsp rere",
|
|
||||||
"sortOrder": 69
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -105,14 +105,14 @@
|
|||||||
"image": "rotfuchs.JPG"
|
"image": "rotfuchs.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Gold",
|
"name": "dd Gold",
|
||||||
"english": "dd Argente Golden",
|
"english": "dd Argente Golden",
|
||||||
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
||||||
"sortOrder": 15,
|
"sortOrder": 15,
|
||||||
"image": "gold-dd.jpg"
|
"image": "gold-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Platin",
|
"name": "dd Platin",
|
||||||
"english": "dd Lilac",
|
"english": "dd Lilac",
|
||||||
"canonicalGenotype": "aa CC dd EE GG pp spsp rere",
|
"canonicalGenotype": "aa CC dd EE GG pp spsp rere",
|
||||||
"sortOrder": 16,
|
"sortOrder": 16,
|
||||||
@@ -185,242 +185,222 @@
|
|||||||
"image": "platin-hell.jpg"
|
"image": "platin-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Agouti",
|
"name": "Agouti dd",
|
||||||
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
||||||
"sortOrder": 28,
|
"sortOrder": 28,
|
||||||
"image": "agouti-dd.jpg"
|
"image": "agouti-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Silberagouti",
|
"name": "Silberagouti dd",
|
||||||
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
||||||
"sortOrder": 29,
|
"sortOrder": 29,
|
||||||
"image": "silberagouti-dd.jpg"
|
"image": "silberagouti-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Kohlfuchs",
|
"name": "Kohlfuchs dd",
|
||||||
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
||||||
"sortOrder": 30,
|
"sortOrder": 30,
|
||||||
"image": "kohlfuchs-dd.jpg"
|
"image": "kohlfuchs-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Anthrazit",
|
"name": "Anthrazit dd",
|
||||||
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
||||||
"sortOrder": 31,
|
"sortOrder": 31,
|
||||||
"image": "anthrazit-dd.jpg"
|
"image": "anthrazit-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Dilute Algierfuchs",
|
|
||||||
"canonicalGenotype": "AA CC dd ee GG PP spsp rere",
|
|
||||||
"sortOrder": 32
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Goldfuchs",
|
|
||||||
"canonicalGenotype": "AA CC dd ee GG pp spsp rere",
|
|
||||||
"sortOrder": 33
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Rotfuchs",
|
|
||||||
"canonicalGenotype": "aa CC dd ee GG pp spsp rere",
|
|
||||||
"sortOrder": 34
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Dilute Polarfuchs",
|
|
||||||
"canonicalGenotype": "AA CC dd ee gg PP spsp rere",
|
|
||||||
"sortOrder": 35
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Silberschimmel",
|
"name": "Silberschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
||||||
"sortOrder": 36,
|
"sortOrder": 32,
|
||||||
"image": "silberschimmel.jpg"
|
"image": "silberschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Polarfuchsschimmel",
|
"name": "Polarfuchsschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
||||||
"sortOrder": 37,
|
"sortOrder": 33,
|
||||||
"image": "polarfuchsschimmel.jpg"
|
"image": "polarfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Algierfuchsschimmel",
|
"name": "Algierfuchsschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 38,
|
"sortOrder": 34,
|
||||||
"image": "algierfuchsschimmel.jpg"
|
"image": "algierfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchsschimmel",
|
"name": "Kohlfuchsschimmel",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 39,
|
"sortOrder": 35,
|
||||||
"image": "kohlfuchsschimmel.jpg"
|
"image": "kohlfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blaufuchsschimmel",
|
"name": "Blaufuchsschimmel",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] gg PP spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] gg PP spsp rere",
|
||||||
"sortOrder": 40,
|
"sortOrder": 36,
|
||||||
"image": "blaufuchsschimmel.jpg"
|
"image": "blaufuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchs, hell",
|
"name": "Kohlfuchs, hell",
|
||||||
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
"sortOrder": 41,
|
"sortOrder": 37,
|
||||||
"image": "kohlfuchs-hell.jpg"
|
"image": "kohlfuchs-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Goldfuchs, hell",
|
"name": "Goldfuchs, hell",
|
||||||
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
||||||
"sortOrder": 42,
|
"sortOrder": 38,
|
||||||
"image": "goldfuchs-hell.jpg"
|
"image": "goldfuchs-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Goldfuchsschimmel",
|
"name": "Goldfuchsschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp rere",
|
||||||
"sortOrder": 43,
|
"sortOrder": 39,
|
||||||
"image": "goldfuchsschimmel.jpg"
|
"image": "goldfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gold-Hell",
|
"name": "Gold-Hell",
|
||||||
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
||||||
"sortOrder": 44,
|
"sortOrder": 40,
|
||||||
"image": "gold-hell.jpg"
|
"image": "gold-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blaufuchs, hell",
|
"name": "Blaufuchs, hell",
|
||||||
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
||||||
"sortOrder": 45,
|
"sortOrder": 41,
|
||||||
"image": "blaufuchs-hell.jpeg"
|
"image": "blaufuchs-hell.jpeg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Rotfuchsschimmel",
|
"name": "Rotfuchsschimmel",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] GG pp spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG pp spsp rere",
|
||||||
"sortOrder": 46,
|
"sortOrder": 42,
|
||||||
"image": "rotfuchsschimmel.jpg"
|
"image": "rotfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Polarfuchs, hell",
|
"name": "Polarfuchs, hell",
|
||||||
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
||||||
"sortOrder": 47,
|
"sortOrder": 43,
|
||||||
"image": "polarfuchs-hell.jpeg"
|
"image": "polarfuchs-hell.jpeg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchsschimmel, hell",
|
"name": "Kohlfuchsschimmel, hell",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 48,
|
"sortOrder": 44,
|
||||||
"image": "kohlfuchsschimmel-hell.jpg"
|
"image": "kohlfuchsschimmel-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Rotfuchs, hell",
|
"name": "Rotfuchs, hell",
|
||||||
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
||||||
"sortOrder": 49,
|
"sortOrder": 45,
|
||||||
"image": "rotfuchs-hell.jpg"
|
"image": "rotfuchs-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchs-Hell",
|
"name": "Kohlfuchs-Hell",
|
||||||
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
"sortOrder": 50,
|
"sortOrder": 46,
|
||||||
"image": "kohlfuchs-hell-2.jpg"
|
"image": "kohlfuchs-hell-2.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Algierfuchs, hell",
|
"name": "Algierfuchs, hell",
|
||||||
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
||||||
"sortOrder": 51,
|
"sortOrder": 47,
|
||||||
"image": "algierfuchs-hell.JPG"
|
"image": "algierfuchs-hell.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Topas",
|
"name": "Topas dd",
|
||||||
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
||||||
"sortOrder": 52,
|
"sortOrder": 48,
|
||||||
"image": "topas-dd.jpg"
|
"image": "topas-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Dilute Blaufuchs",
|
"name": "Blaufuchs dd",
|
||||||
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
||||||
"sortOrder": 53,
|
"sortOrder": 49,
|
||||||
"image": "blaufuchs-dd.jpg"
|
"image": "blaufuchs-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Marder",
|
"name": "Marder",
|
||||||
"canonicalGenotype": "aa c[chm]c[chm] DD EE GG PP spsp rere",
|
"canonicalGenotype": "aa c[chm]c[chm] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 54,
|
"sortOrder": 50,
|
||||||
"image": "marder.JPG"
|
"image": "marder.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Siam",
|
"name": "Siam",
|
||||||
"canonicalGenotype": "aa c[chm]c[h] DD EE GG PP spsp rere",
|
"canonicalGenotype": "aa c[chm]c[h] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 55,
|
"sortOrder": 51,
|
||||||
"image": "siam-marder-hell.JPG"
|
"image": "siam-marder-hell.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Zobel-Hell",
|
"name": "Zobel-Hell",
|
||||||
"canonicalGenotype": "aa c[chm]c[h] DD EE gg PP spsp rere",
|
"canonicalGenotype": "aa c[chm]c[h] DD EE gg PP spsp rere",
|
||||||
"sortOrder": 56,
|
"sortOrder": 52,
|
||||||
"image": "zobel-hell.jpg"
|
"image": "zobel-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Agouti",
|
"name": "CP-Agouti",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD EE GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 57,
|
"sortOrder": 53,
|
||||||
"image": "agouti-cp.jpg"
|
"image": "agouti-cp.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Agouti-Hell",
|
"name": "CP-Agouti-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD EE GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 58
|
"sortOrder": 54
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Silberagouti",
|
"name": "CP-Silberagouti",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD EE gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE gg PP spsp rere",
|
||||||
"sortOrder": 59,
|
"sortOrder": 55,
|
||||||
"image": "silberagouti-cp.JPG"
|
"image": "silberagouti-cp.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Silberagouti-Hell",
|
"name": "CP-Silberagouti-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD EE gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD EE gg PP spsp rere",
|
||||||
"sortOrder": 60
|
"sortOrder": 56
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Algierfuchs",
|
"name": "CP-Algierfuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee GG PP spsp rere",
|
||||||
"sortOrder": 61,
|
"sortOrder": 57,
|
||||||
"image": "algierfuchs-cp.jpg"
|
"image": "algierfuchs-cp.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Algierfuchs-Hell",
|
"name": "CP-Algierfuchs-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD ee GG PP spsp rere",
|
||||||
"sortOrder": 62
|
"sortOrder": 58
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Polarfuchs",
|
"name": "CP-Polarfuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD ee gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee gg PP spsp rere",
|
||||||
"sortOrder": 63,
|
"sortOrder": 59,
|
||||||
"image": "polarfuchs-cp.jpg"
|
"image": "polarfuchs-cp.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Polarfuchs-Hell",
|
"name": "CP-Polarfuchs-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD ee gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD ee gg PP spsp rere",
|
||||||
"sortOrder": 64
|
"sortOrder": 60
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Fuchs",
|
"name": "CP-Fuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] dd ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee GG PP spsp rere",
|
||||||
"sortOrder": 65
|
"sortOrder": 61
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Fuchs-Hell",
|
"name": "CP-Fuchs-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] dd ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] dd ee GG PP spsp rere",
|
||||||
"sortOrder": 66
|
"sortOrder": 62
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Blaufuchs",
|
"name": "CP-Blaufuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] dd ee gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee gg PP spsp rere",
|
||||||
"sortOrder": 67
|
"sortOrder": 63
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Orangeschimmel",
|
"name": "CP-Orangeschimmel",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 68
|
"sortOrder": 64
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Orangeschimmel-Hell",
|
"name": "CP-Orangeschimmel-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 69
|
"sortOrder": 65
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -377,7 +377,13 @@ function PedigreeCard({
|
|||||||
<div className="pedigree-card__body">
|
<div className="pedigree-card__body">
|
||||||
<div className="pedigree-card__name">
|
<div className="pedigree-card__name">
|
||||||
<SexIcon gender={g.gender} />
|
<SexIcon gender={g.gender} />
|
||||||
<span className="pedigree-card__nametext">{g.name || de.pages.gerbils.nameless}</span>
|
<Link
|
||||||
|
to={`/rennmaeuse/${g.id}`}
|
||||||
|
className="pedigree-card__nametext"
|
||||||
|
onClick={(e) => e.stopPropagation()}
|
||||||
|
>
|
||||||
|
{g.name || de.pages.gerbils.nameless}
|
||||||
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
{farbschlag && (
|
{farbschlag && (
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -134,6 +134,12 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pedigree-card__nametext:hover {
|
||||||
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pedigree-card__sex--male {
|
.pedigree-card__sex--male {
|
||||||
|
|||||||
Reference in New Issue
Block a user