# Ř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
