"use client"; import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { SubstitutionData, LocalData } from "@/lib/types"; import { Card, CardContent } from "@/components/ui/card"; import ScheduleViewer from "@/components/own/schedule-viewer"; interface ViewProps { data: SubstitutionData | null; } interface FormValues { className: string; jsonFile: FileList | null; } export default function View({ data }: ViewProps) { const [loading, setLoading] = useState(true); const [localData, setLocalData] = useState(null); const form = useForm({ defaultValues: { className: "", jsonFile: null, }, }); const onSubmit = async (values: FormValues) => { const classNameProcessed = values.className.toLowerCase(); const file = values.jsonFile?.[0]; if (!file) { alert("No file uploaded!"); return; } try { const text = await file.text(); const jsonData = JSON.parse(text); console.log(jsonData) const foundKey = Object.keys(jsonData).find(k => k.toLowerCase() === classNameProcessed); if (!foundKey) { alert("Class not found in file!"); return; } const data = { class: classNameProcessed, timetable: jsonData[foundKey] }; setLocalData(data); localStorage.setItem("data", JSON.stringify(data)); } catch (err) { console.log(err) alert("Invalid JSON file."); } }; useEffect(() => { const saved = localStorage.getItem("data"); if (saved) { setLocalData(JSON.parse(saved)); } setLoading(false); }, [data]); if (loading) return

Loading...

; if (!localData) { return (
( Třída )} /> ( Soubor field.onChange(e.target.files)} className="cursor-pointer" /> Jak získat soubor? )} />
); } return (

Rozvrh třídy {localData.class}

); }