# Řešení problému s prázdnou navigací ## Problém Stránka Správa navigace (`/admin/navigace`) nezobrazovala žádný obsah - ani webovou navigaci, ani admin panel, ani sociální sítě. ## Příčina Databázové tabulky `navigation_items` a `social_links` existují (vytvořeny pomocí AutoMigrate), ale jsou prázdné. Výchozí data se vkládají pouze při spuštění migrací s příznakem `RUN_MIGRATIONS=true`, což uživatel pravděpodobně neudělal. ## Implementovaná řešení ### 1. Vylepšené diagnostické nástroje #### Zobrazení stavu načtení dat - Přidán informační panel zobrazující počet načtených položek: - "Načteno: X webových, X admin, X sociálních" - Tlačítko "Obnovit data" pro ruční refresh #### Rozšířené logování - Console.log výpisy pro sledování API odpovědí: ```javascript console.log('Načtená navigace:', navData); console.log('Načtené sociální odkazy:', socialData); ``` - Lepší zobrazení chybových zpráv s detaily z API ### 2. Prázdné stavy (Empty States) Přidány pomocné zprávy pro každou záložku, když neobsahuje data: #### Webová navigace ``` ⚠ Žádné položky navigace Nebyly nalezeny žádné položky navigace. Můžete vytvořit výchozí navigaci nebo přidat položky ručně. [Vytvořit výchozí navigaci] [Přidat položku ručně] ``` #### Admin panel ``` ⚠ Žádné vlastní položky v admin panelu Použijte tlačítko "Přidat položku" pro vytvoření vlastní navigace. ``` #### Sociální sítě ``` ⚠ Žádné sociální sítě Nebyly nalezeny žádné odkazy na sociální sítě. Klikněte na "Přidat sociální síť" pro vytvoření odkazu. ``` ### 3. Automatické seedování (Hlavní řešení) #### Backend - Nový endpoint **Soubor:** `internal/controllers/navigation_controller.go` Přidána metoda `SeedDefaultNavigation`: - Kontroluje, zda tabulka je prázdná - Pokud je prázdná, vytvoří 12 výchozích navigačních položek: - Domů, O klubu, Kalendář, Zápasy, Aktivity, Hráči, Tabulky, Články, Videa, Fotogalerie, Sponzoři, Kontakt - Pokud již data existují, vrátí informaci a neudělá nic - Endpoint: `POST /api/v1/admin/navigation/seed` #### Frontend - Funkce a UI **Soubor:** `frontend/src/services/navigation.ts` ```typescript export const seedDefaultNavigation = async (): Promise<{ message: string; count: number; seeded: boolean; }> => { const response = await axios.post(`${API_BASE_URL}/admin/navigation/seed`, {}, { withCredentials: true, }); return response.data; }; ``` **Soubor:** `frontend/src/pages/admin/NavigationAdminPage.tsx` - Přidána funkce `handleSeedDefaultNavigation` - Tlačítko "Vytvořit výchozí navigaci" v prázdném stavu - Zobrazí toast notifikaci s výsledkem ## Jak to použít ### Řešení A: Použít tlačítko v admin panelu (Doporučeno) 1. Otevřete stránku Správa navigace (`/admin/navigace`) 2. Pokud je navigace prázdná, uvidíte varování s tlačítkem 3. Klikněte na **"Vytvořit výchozí navigaci"** 4. Potvrzení dialogu 5. Data se automaticky načtou ### Řešení B: Spustit migrace ručně 1. Zastavte backend server 2. Spusťte s migracemi: ```powershell $env:RUN_MIGRATIONS="true" go run main.go ``` 3. Restartujte backend v normálním režimu 4. Obnovte stránku správy navigace ### Řešení C: Přidat položky ručně 1. Klikněte na "Přidat hlavní položku" 2. Vyplňte formulář 3. Uložte 4. Opakujte pro další položky ## Soubory upravené ### Backend 1. `internal/controllers/navigation_controller.go` - Přidána metoda `SeedDefaultNavigation` 2. `internal/routes/routes.go` - Přidán route `/admin/navigation/seed` ### Frontend 1. `frontend/src/services/navigation.ts` - Přidána funkce `seedDefaultNavigation` 2. `frontend/src/pages/admin/NavigationAdminPage.tsx`: - Přidáno zobrazení počtu načtených položek - Přidány prázdné stavy s pomocnými zprávami - Přidána funkce `handleSeedDefaultNavigation` - Vylepšené error handling a logging ### Dokumentace 1. `NAVIGATION_TROUBLESHOOTING.md` - Kompletní průvodce řešením problémů 2. `NAVIGATION_FIX_SUMMARY.md` - Tento dokument ## Testování Po implementaci otestujte: 1. **Prázdná databáze:** - [ ] Zobrazí se varování "Žádné položky navigace" - [ ] Tlačítko "Vytvořit výchozí navigaci" funguje - [ ] Po seedování se zobrazí 12 položek 2. **Existující data:** - [ ] Seedování zobrazí info "Navigace již existuje" - [ ] Existující data zůstanou nezměněná 3. **API chyby:** - [ ] Chybové zprávy se zobrazí v toastu - [ ] Console.log obsahuje podrobnosti 4. **Všechny záložky:** - [ ] Webová navigace - funguje - [ ] Admin panel - funguje - [ ] Sociální sítě - funguje ## Poznámky pro vývojáře - Seed endpoint je **idempotentní** - lze jej volat vícekrát bez problémů - Pokud databáze obsahuje byť jednu položku, seed neudělá nic - Výchozí položky mají `requires_admin = false` (jsou pro veřejný web) - Admin navigace musí být vytvořena ručně nebo pomocí samostatných seedů - Všechny změny jsou zpětně kompatibilní ## Další vylepšení (volitelné) V budoucnu lze přidat: - [ ] Seed pro admin navigaci - [ ] Seed pro sociální sítě (Facebook, Instagram, etc.) - [ ] Import/export navigace do JSON - [ ] Šablony navigace (sportovní klub, škola, firma, etc.) - [ ] Duplikace položek navigace