# 🐛 Guia de Debug - DriversComponent e GenericTabFormComponent

## ✅ Servidor Configurado
O servidor Angular está rodando em modo debug na porta 4200 com:
- Source maps habilitados
- Optimization desabilitada  
- Configuração development

## 🎯 Como Usar o Debug

### 1. **Abrindo o DevTools do Chrome**
```bash
# Acesse: http://localhost:4200
# Pressione F12 ou Ctrl+Shift+I (Cmd+Option+I no Mac)
```

### 2. **Encontrando os Arquivos Fonte**
No DevTools:
1. Vá para a aba **Sources**
2. Navegue para: `webpack://` → `./projects/idt_app/src/app/domain/drivers/`
3. Abra: `drivers.component.ts`
4. Navegue para: `webpack://` → `./projects/idt_app/src/app/shared/components/generic-tab-form/`
5. Abra: `generic-tab-form.component.ts`

### 3. **Logs de Debug Habilitados**
Os seguintes logs estão ativos no console:

#### DriversComponent:
- `🎯 AÇÃO CLICADA:` - Quando clicar em botões da tabela
- `🔄 [EDIT] Iniciando edição` - Ao abrir aba de edição
- `🔄 [NEW] Criando novo motorista` - Ao criar novo
- `🎯 [TAB] Aba selecionada` - Ao trocar de aba

#### GenericTabFormComponent:
- `🔄 [INIT] GenericTabFormComponent ngOnInit iniciado` - Ao inicializar
- `🔄 [FORM] Inicializando formulário` - Ao criar o formulário
- `🎯 [TAB] Selecionando sub-aba` - Ao trocar entre Dados/Endereço
- `🔄 [ADDRESS] Dados de endereço alterados` - Ao alterar endereço

### 4. **Pontos de Breakpoint Recomendados**

#### No DriversComponent:
```typescript
// Line ~533 - onActionClick
onActionClick(event: { action: string; data: any }) {
  debugger; // 👈 COLOCAR BREAKPOINT AQUI
  this.debugLog('🎯 AÇÃO CLICADA:', { action: event.action, data: event.data });

// Line ~1431 - editDriver
async editDriver(driverData: any): Promise<void> {
  debugger; // 👈 COLOCAR BREAKPOINT AQUI
  this.debugLog('🔄 [EDIT] Iniciando edição de motorista', {
```

#### No GenericTabFormComponent:
```typescript
// Line ~573 - ngOnInit
ngOnInit() {
  debugger; // 👈 COLOCAR BREAKPOINT AQUI
  this.debugLog('🔄 [INIT] GenericTabFormComponent ngOnInit iniciado', {

// Line ~873 - selectSubTab
selectSubTab(tab: string) {
  debugger; // 👈 COLOCAR BREAKPOINT AQUI
  this.debugLog('🎯 [TAB] Selecionando sub-aba', {
```

### 5. **Como Testar Passo a Passo**

#### Cenário 1: Editar Motorista
1. Abra http://localhost:4200
2. Navegue para Motoristas
3. Clique em "Editar" em qualquer linha
4. **Observe no console:** `🎯 AÇÃO CLICADA:` e `🔄 [EDIT] Iniciando edição`
5. **Breakpoint vai parar** no `onActionClick` e depois no `editDriver`

#### Cenário 2: Trocar Sub-abas
1. Com um motorista aberto para edição
2. Clique na aba "Endereço"
3. **Observe no console:** `🎯 [TAB] Selecionando sub-aba`
4. **Breakpoint vai parar** no `selectSubTab`

### 6. **Console Commands Úteis**

#### No Console do DevTools:
```javascript
// Ver estado atual do componente
$ng0 // ou $ng1, $ng2... dependendo do elemento selecionado

// Ver todas as abas abertas
$ng0.getDriverTabs()

// Ver configuração atual
$ng0.getActionConfig()

// Testar logs manualmente
$ng0.debugLog('Teste manual', { teste: true })

// Forçar seleção de sub-aba
$ng0.selectSubTab('endereco')
```

### 7. **Verificação de Source Maps**
Se os breakpoints não funcionarem:
1. No DevTools, vá para **Settings** (F1)
2. Em **Sources**, verifique se está marcado:
   - ✅ Enable JavaScript source maps
   - ✅ Enable CSS source maps

### 8. **Acompanhar Fluxo Completo**
Para acompanhar todo o fluxo de edição:
1. **Console aberto** para ver logs
2. **Breakpoint** em `onActionClick` 
3. **Clicar** em editar na tabela
4. **Step into (F11)** para seguir execução
5. **Observar** criação da aba e inicialização do formulário

## 🚨 Troubleshooting

### Breakpoints não funcionam:
```bash
# 1. Limpar cache do navegador
Ctrl+Shift+R (Cmd+Shift+R no Mac)

# 2. Recarregar DevTools
F12 para fechar, F12 para abrir

# 3. Verificar se está no arquivo certo
Procurar por "GenericTabFormComponent" na busca do Sources
```

### Source maps não carregam:
```bash
# Restart do servidor
npm run start-debug
```

## ✅ Checklist Antes de Debugar
- [ ] Servidor rodando em localhost:4200
- [ ] DevTools aberto (F12)
- [ ] Console visível para logs
- [ ] Sources tab aberta
- [ ] Arquivos TypeScript visíveis em webpack://
- [ ] Breakpoints colocados nos pontos estratégicos 