import { useEffect, useState } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { ArrowLeft, GitBranch, AlertCircle, Loader } from 'lucide-react' import axios from 'axios' import PedigreeTree from '../components/PedigreeTree' import { transformPedigreeData, formatCOI, getPedigreeCompleteness } from '../utils/pedigreeHelpers' function PedigreeView() { const { id } = useParams() const navigate = useNavigate() const [loading, setLoading] = useState(true) const [error, setError] = useState('') const [dog, setDog] = useState(null) const [pedigreeData, setPedigreeData] = useState(null) const [coiData, setCoiData] = useState(null) const [generations, setGenerations] = useState(5) useEffect(() => { fetchPedigreeData() }, [id, generations]) const fetchPedigreeData = async () => { setLoading(true) setError('') try { const pedigreeRes = await axios.get(`/api/pedigree/${id}`) const dogData = pedigreeRes.data setDog(dogData) const treeData = transformPedigreeData(dogData, generations) setPedigreeData(treeData) try { const coiRes = await axios.get(`/api/pedigree/${id}/coi`) setCoiData(coiRes.data) } catch (coiError) { console.warn('COI calculation unavailable:', coiError) setCoiData(null) } setLoading(false) } catch (err) { console.error('Error fetching pedigree:', err) setError(err.response?.data?.error || 'Failed to load pedigree data') setLoading(false) } } const completeness = pedigreeData ? getPedigreeCompleteness(pedigreeData, generations) : 0 const coiInfo = formatCOI(coiData?.coi) if (loading) { return (
Loading pedigree data...
{error}
Registration: {dog.registration_number}
)}Add parent information to this dog to build the pedigree tree.