'use client' import { useState } from 'react' import API_URL from '@/lib/api' import { Button } from '@/components/ui/button' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Upload, BarChart3, Loader2, FileText, CheckCircle2, AlertCircle } from 'lucide-react' interface DataPreviewProps { data: any loading: boolean formData: any } export default function DataPreview({ data, loading, formData }: DataPreviewProps) { const [filling, setFilling] = useState(false) const [fillResult, setFillResult] = useState(null) const handleFillToWebsite = async () => { if (!formData) return setFilling(true) setFillResult(null) try { // Format dates as YYYY-MM-DD in local timezone const formatLocalDate = (date: Date) => { const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') return `${year}-${month}-${day}` } const response = await fetch(`${API_URL}/api/fill/journeybook`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username: formData.username, password: formData.password, start_date: formatLocalDate(formData.startDate), end_date: formatLocalDate(formData.endDate), start_km: parseInt(formData.startKm), end_km: parseInt(formData.endKm), vehicle_registration: formData.vehicleRegistration, variance: parseFloat(formData.variance), dry_run: false }), }) if (!response.ok) { const errorData = await response.json() throw new Error(errorData.detail || 'Chyba při vyplňování dat') } const result = await response.json() setFillResult(result) } catch (err: any) { alert('Chyba: ' + err.message) } finally { setFilling(false) } } if (loading) { return (

Načítání dat...

) } if (!data) { return ( Náhled dat

Vyplňte formulář a klikněte na "Vypočítat"

) } return ( Náhled dat

Měsíc

{data.month}

Celkem záznamů

{data.total_entries}

Počáteční km

{data.start_km.toLocaleString()}

Koncový km

{data.end_km.toLocaleString()}

Celkem ujeto

{(data.end_km - data.start_km).toLocaleString()} km

Filtrováno dnů

{data.filtered_days}

{data.entries.length > 0 && Object.keys(data.entries[0]).map((key: string) => ( ))} {data.entries.map((entry: any, index: number) => ( {Object.keys(entry).map((key: string) => ( ))} ))}
{key}
{entry[key] !== null && entry[key] !== undefined ? entry[key] : '-'}
{formData && (
{fillResult && (

{fillResult.dry_run ? ( <> Výsledek DRY RUN: ) : ( <> Výsledek vyplňování: )}

Měsíc: {fillResult.month}

{fillResult.dry_run ? ( <>

Připraveno aktualizací: {fillResult.updates_prepared}

Připraveno smazání: {fillResult.deletes_prepared}

) : ( <>

Celkem aktualizací: {fillResult.updates_total}

Úspěšně vyplněno: {fillResult.updates_successful}

Chyby při vyplňování: {fillResult.updates_failed}

{fillResult.deletes_total > 0 && ( <>

Celkem smazání: {fillResult.deletes_total}

Úspěšně smazáno: {fillResult.deletes_successful}

Chyby při mazání: {fillResult.deletes_failed}

)} )} {fillResult.dry_run && (

DRY RUN MODE - Data nebyla odeslána na web

)} {!fillResult.dry_run && fillResult.updates_successful > 0 && (

Data byla úspěšně vyplněna. Nyní zkontrolujte na webu a klikněte "Uzavřít měsíc" ručně.

)} {!fillResult.dry_run && fillResult.errors && fillResult.errors.length > 0 && (

Chyby:

{fillResult.errors.map((err: any, idx: number) => (

• {err.type} řádek {err.row}: {err.error}

))}
)}
)}
)}
) }