feat: pre-populate heats form with existing data when editing

- Add existingHeats prop to HeatsBanner component
- Load and format existing heats into form fields
- Pass myHeats to HeatsBanner in edit modal
- Users can now edit their heats instead of starting from scratch
This commit is contained in:
Radosław Gierwiało
2025-11-14 18:35:01 +01:00
parent 42f231a602
commit 3ebdd2d7df
2 changed files with 15 additions and 1 deletions

View File

@@ -2,7 +2,7 @@ import { useState, useEffect } from 'react';
import { X, Plus, Trash2, Loader2 } from 'lucide-react';
import { divisionsAPI, competitionTypesAPI, heatsAPI } from '../../services/api';
export default function HeatsBanner({ slug, onSave, onDismiss }) {
export default function HeatsBanner({ slug, onSave, onDismiss, existingHeats = null }) {
const [divisions, setDivisions] = useState([]);
const [competitionTypes, setCompetitionTypes] = useState([]);
const [heats, setHeats] = useState([{ divisionId: '', competitionTypeId: '', heatNumber: '', role: '' }]);
@@ -14,6 +14,19 @@ export default function HeatsBanner({ slug, onSave, onDismiss }) {
loadOptions();
}, []);
// Load existing heats if provided
useEffect(() => {
if (existingHeats && existingHeats.length > 0) {
const formattedHeats = existingHeats.map(heat => ({
divisionId: heat.divisionId.toString(),
competitionTypeId: heat.competitionTypeId.toString(),
heatNumber: heat.heatNumber.toString(),
role: heat.role || '',
}));
setHeats(formattedHeats);
}
}, [existingHeats]);
const loadOptions = async () => {
try {
setLoading(true);

View File

@@ -717,6 +717,7 @@ const EventChatPage = () => {
slug={slug}
onSave={handleHeatsSave}
onDismiss={() => setShowHeatsModal(false)}
existingHeats={myHeats}
/>
</div>
</div>