7.7 KiB
7.7 KiB
Sprint 1 Complete: Interactive Pedigree Tree ✅
What Was Built
A fully interactive, production-ready pedigree tree visualization system for BREEDR.
Components Created
-
PedigreeTree.jsx - Core D3 tree visualization component
- Interactive zoom and pan controls
- Color-coded nodes (blue for males, pink for females)
- Click-to-navigate functionality
- Responsive design
- COI display with risk indicators
- Legend for visual reference
-
PedigreeTree.css - Complete styling
- Polished UI with controls overlay
- Mobile-responsive breakpoints
- Print-friendly styles
- Smooth animations and transitions
-
pedigreeHelpers.js - Utility functions
transformPedigreeData()- Converts API data to D3 tree formatcountAncestors()- Counts total ancestorsgetGenerationCounts()- Analyzes generation distributionisPedigreeComplete()- Checks pedigree completenessfindCommonAncestors()- Identifies shared ancestorsformatCOI()- Formats COI with risk levelsgetPedigreeCompleteness()- Calculates completeness percentage
-
PedigreeView.jsx - Full page implementation
- Stats dashboard showing COI, completeness, generation selector
- Loading and error states
- Breadcrumb navigation
- Help tips for users
- Responsive grid layout
Features
✅ Interactive Controls
- Zoom In/Out buttons
- Reset view button
- Mouse wheel zoom
- Click and drag to pan
- Touch support for mobile
✅ Visual Enhancements
- Color-coded by sex (♂ blue, ♀ pink)
- Registration numbers displayed
- Birth years shown
- Clean, modern design
- Smooth animations
✅ Data Display
- COI with color-coded risk levels:
- Green (≤5%): Low inbreeding, excellent diversity
- Yellow (5-10%): Moderate inbreeding, acceptable with caution
- Red (>10%): High inbreeding, consider genetic diversity
- Pedigree completeness percentage
- Generation selector (3, 4, or 5 generations)
- Progress bars and visual indicators
✅ Navigation
- Click any node to view that dog's profile
- Back to Profile button
- Breadcrumb navigation
- Deep linking support
✅ Responsive Design
- Desktop optimized
- Tablet friendly
- Mobile responsive
- Print-friendly layout
Installation & Setup
1. Install Dependencies
The required dependencies should already be in package.json:
cd client
npm install
Key dependencies:
react-d3-tree: ^3.6.2 - D3 tree visualizationdate-fns: ^2.30.0 - Date formatting utilitiesd3: ^7.9.0 - D3 core library
2. Deploy the Branch
git checkout feature/enhanced-litters-and-pedigree
git pull origin feature/enhanced-litters-and-pedigree
3. Restart the Application
With Docker:
docker-compose down
docker-compose up --build -d
Without Docker:
# Terminal 1 - Server
cd server
npm install
npm run dev
# Terminal 2 - Client
cd client
npm install
npm run dev
4. Access the Pedigree
Navigate to any dog and access the pedigree at:
http://localhost:5173/pedigree/:dogId
For example:
http://localhost:5173/pedigree/1
Testing Checklist
Basic Functionality
- Pedigree page loads without errors
- Tree displays correctly for dogs with parents
- Nodes show correct information (name, registration, birth year)
- Colors are correct (blue=male, pink=female)
Interactive Controls
- Zoom in button works
- Zoom out button works
- Reset button returns to default view
- Mouse wheel zoom works
- Click and drag panning works
Navigation
- Clicking a node navigates to that dog's profile
- Back to Profile button works
- Generation selector changes displayed generations
Data Display
- COI displays correctly with proper color
- Pedigree completeness calculates accurately
- Stats update when generation selector changes
Edge Cases
- Handles dogs with no parents gracefully
- Handles dogs with only one parent
- Handles incomplete pedigrees
- Shows appropriate message when no data available
Responsive Design
- Works on desktop (1920x1080)
- Works on tablet (768x1024)
- Works on mobile (375x667)
- Print view displays correctly
API Requirements
The pedigree tree depends on these existing API endpoints:
Required Endpoints
-
GET
/api/pedigree/:id- Get pedigree tree- Must return nested sire/dam objects
- Should include: id, name, sex, registration_number, birth_date
- Example response:
{ "id": 1, "name": "Dog Name", "sex": "male", "registration_number": "ABC123", "birth_date": "2020-01-01", "sire": { "id": 2, "name": "Father Name", "sex": "male", "sire": { ... }, "dam": { ... } }, "dam": { "id": 3, "name": "Mother Name", "sex": "female", "sire": { ... }, "dam": { ... } } } -
GET
/api/pedigree/:id/coi- Get COI calculation- Returns coefficient of inbreeding
- Example response:
{ "coi": 3.125, "generations": 5 }
Known Limitations
- Performance: Very large pedigrees (>100 nodes) may experience slowdown
- COI: Calculation requires complete pedigree data
- Mobile: Tree may be difficult to navigate on very small screens
- Print: May require landscape orientation for best results
Future Enhancements (Not in Sprint 1)
- PDF export functionality
- Highlight common ancestors between two dogs
- Show inbreeding loops visually
- Ancestor search/filter
- Save custom tree views
- Share pedigree links
- Printable certificate template
Troubleshooting
Tree Doesn't Display
- Check browser console for errors
- Verify API endpoint
/api/pedigree/:idis working - Check that dog has parent data in database
- Ensure dependencies are installed (
npm install)
Zoom/Pan Not Working
- Check that react-d3-tree is properly installed
- Clear browser cache and reload
- Try in different browser
COI Not Showing
- Verify
/api/pedigree/:id/coiendpoint exists - Check that pedigree has sufficient data (at least 3 generations)
- COI may be null for incomplete pedigrees
Styling Issues
- Ensure
PedigreeTree.cssis imported in component - Check that CSS variables are defined in main stylesheet
- Clear browser cache
Files Modified/Created
New Files
client/src/
├── components/
│ ├── PedigreeTree.jsx ✅ NEW
│ └── PedigreeTree.css ✅ NEW
├── utils/
│ └── pedigreeHelpers.js ✅ NEW
└── pages/
└── PedigreeView.jsx ✅ UPDATED
Modified Files
client/package.json- Dependencies already presentclient/src/pages/PedigreeView.jsx- Rebuilt from placeholder
Next Steps
Sprint 1 is COMPLETE ✅
Ready to proceed with Sprint 2:
- Litter Detail Page with comprehensive information
- Countdown Widget for whelping dates
- Enhanced Litter List with filters and sorting
- Database Migration for additional litter fields
Support
If you encounter issues:
- Check browser console for errors
- Review this documentation
- Check API endpoints are responding
- Verify database has parent relationships
Success Criteria Met ✅
- ✅ Interactive tree with D3 visualization
- ✅ 5-generation display (configurable to 3, 4, or 5)
- ✅ Zoom, pan, and navigation controls
- ✅ Color-coded nodes by sex
- ✅ COI display with risk indicators
- ✅ Pedigree completeness tracking
- ✅ Click-to-navigate functionality
- ✅ Responsive design
- ✅ Loading and error states
- ✅ Helper utilities for data transformation
- ✅ Print-friendly layout
Sprint 1: COMPLETE AND READY FOR TESTING 🎉