import { useState } from "react"; import { Modal, Button, Form, Alert } from "react-bootstrap"; import { generateMockData, DayIndex } from "../../../../types"; type Props = { isOpen: boolean; onClose: () => void; currentDayIndex?: number; }; const DAY_NAMES = ['Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek']; /** Hodnota v selectu dne pro generování napříč celým týdnem. */ const WHOLE_WEEK = 'week'; /** Modální dialog pro generování mock dat (pouze DEV). */ export default function GenerateMockDataModal({ isOpen, onClose, currentDayIndex }: Readonly) { const [daySelection, setDaySelection] = useState(currentDayIndex !== undefined ? String(currentDayIndex) : ''); const [count, setCount] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [success, setSuccess] = useState(null); const wholeWeek = daySelection === WHOLE_WEEK; const handleGenerate = async () => { setError(null); setLoading(true); try { const body: any = {}; if (wholeWeek) { body.wholeWeek = true; } else if (daySelection !== '') { body.dayIndex = parseInt(daySelection, 10) as DayIndex; } if (count && count.trim() !== '') { const countNum = parseInt(count, 10); if (isNaN(countNum) || countNum < 1 || countNum > 100) { setError('Počet musí být číslo mezi 1 a 100'); setLoading(false); return; } body.count = countNum; } const response = await generateMockData({ body }); if (response.error) { setError((response.error as any).error || 'Nastala chyba při generování dat'); } else { const total = (response.data as any)?.count; setSuccess(wholeWeek ? `Mock data byla vygenerována pro celý týden (celkem ${total} záznamů).` : 'Mock data byla úspěšně vygenerována!'); setTimeout(() => { onClose(); setSuccess(null); setCount(''); }, 1500); } } catch (e: any) { setError(e.message || 'Nastala chyba při generování dat'); } finally { setLoading(false); } }; const handleClose = () => { setError(null); setSuccess(null); setCount(''); onClose(); }; return (

Generovat mock data

{success ? ( {success} ) : ( <> DEV režim - Tato funkce je dostupná pouze ve vývojovém prostředí. {error && ( setError(null)} dismissible> {error} )} Den setDaySelection(e.target.value)} > {DAY_NAMES.map((name, index) => ( ))} Pokud není vybráno, použije se aktuální den. Počet záznamů setCount(e.target.value)} min={1} max={100} onKeyDown={e => e.stopPropagation()} /> {wholeWeek ? 'Zadaný počet se vygeneruje pro každý den týdne. Pokud není zadáno, vybere se pro každý den náhodný počet 5-20.' : 'Pokud není zadáno, vybere se náhodný počet 5-20.'} )} {!success && ( <> )} {success && ( )}
); }