# 🚀 Getting Started - Dashboard Tab System ## 👋 Bem-vindo, Novo Desenvolvedor! Este guia te ajudará a entender e usar o **Dashboard Tab System** - uma funcionalidade que adiciona automaticamente uma aba de dashboard antes da lista em qualquer domínio. ## 🎯 O que é o Dashboard Tab System? É um sistema que permite adicionar uma aba de **"Dashboard de [Domínio]"** antes da aba **"Lista de [Domínio]"** com apenas uma linha de código! ### Antes vs Depois **Antes** (sem dashboard): ``` [Lista de Motoristas] [Editar: João] [Editar: Maria] ``` **Depois** (com dashboard): ``` [Dashboard de Motoristas] [Lista de Motoristas] [Editar: João] [Editar: Maria] ``` ## 🚀 Como Usar (Super Simples!) ### 1. Configuração Mínima (1 linha!) ```typescript // Em qualquer arquivo *.component.ts que estende BaseDomainComponent protected override getDomainConfig(): DomainConfig { return { domain: 'vehicle', title: 'Veículos', entityName: 'veículo', subTabs: ['dados'], showDashboardTab: true, // ✅ SÓ ISSO! columns: [...] }; } ``` **Pronto!** Agora você tem: - ✅ Aba "Dashboard de Veículos" - ✅ KPIs automáticos (Total, Ativos, Recentes) - ✅ Lista dos últimos 5 itens - ✅ Design responsivo e dark mode ### 2. Configuração Avançada (Opcional) ```typescript protected override getDomainConfig(): DomainConfig { return { domain: 'driver', title: 'Motoristas', entityName: 'motorista', subTabs: ['dados', 'documentos'], showDashboardTab: true, dashboardConfig: { title: 'Painel de Motoristas', // Título customizado customKPIs: [ { id: 'drivers-with-license', label: 'Com CNH Válida', value: '85%', icon: 'fas fa-id-card', color: 'success', trend: 'up', change: '+3%' }, { id: 'drivers-premium', label: 'Motoristas Premium', value: 42, icon: 'fas fa-crown', color: 'warning', trend: 'stable' } ] }, columns: [...] }; } ``` ## 📊 KPIs Automáticos (Grátis!) O sistema gera automaticamente estes KPIs baseados nos seus dados: ### 1. 📋 Total de Registros - **O que mostra**: Quantidade total de itens - **Baseado em**: `totalItems` do seu service - **Exemplo**: "Total de Motoristas: 150" ### 2. ✅ Registros Ativos - **O que mostra**: Itens com status ativo - **Baseado em**: Campo `status = 'Ativo'|'active'|'Active'` - **Exemplo**: "Motoristas Ativos: 142" ### 3. 🆕 Registros Recentes - **O que mostra**: Itens criados nos últimos 7 dias - **Baseado em**: Campo `created_at` - **Exemplo**: "Novos (7 dias): 8" ## 🎨 Cores dos KPIs ```typescript color: 'primary' // 🔵 Azul (padrão) color: 'success' // 🟢 Verde (positivo) color: 'warning' // 🟡 Amarelo (atenção) color: 'danger' // 🔴 Vermelho (crítico) color: 'info' // 🔷 Azul claro (informativo) ``` ## 🎯 Ícones Recomendados ```typescript // Totais e listas 'fas fa-list' // Total geral 'fas fa-users' // Usuários/Motoristas 'fas fa-car' // Veículos 'fas fa-building' // Empresas // Status e estados 'fas fa-check-circle' // Ativos/Válidos 'fas fa-plus-circle' // Novos/Recentes 'fas fa-clock' // Pendentes 'fas fa-times-circle' // Inativos/Inválidos // Especiais 'fas fa-crown' // Premium/VIP 'fas fa-star' // Favoritos 'fas fa-chart-line' // Crescimento 'fas fa-dollar-sign' // Financeiro 'fas fa-id-card' // Documentos ``` ## 📱 Exemplos Práticos ### Exemplo 1: Veículos (Simples) ```typescript export class VehiclesComponent extends BaseDomainComponent { protected override getDomainConfig(): DomainConfig { return { domain: 'vehicle', title: 'Veículos', entityName: 'veículo', subTabs: ['dados', 'documentos'], showDashboardTab: true, // ✅ Só isso! columns: [ { field: "license_plate", header: "Placa", sortable: true }, { field: "brand", header: "Marca", sortable: true } ] }; } } ``` ### Exemplo 2: Clientes (Avançado) ```typescript export class ClientsComponent extends BaseDomainComponent { protected override getDomainConfig(): DomainConfig { return { domain: 'client', title: 'Clientes', entityName: 'cliente', subTabs: ['dados', 'contratos'], showDashboardTab: true, dashboardConfig: { title: 'Painel de Clientes', customKPIs: [ { id: 'premium-clients', label: 'Clientes Premium', value: 45, icon: 'fas fa-crown', color: 'warning', trend: 'up', change: '+12%' }, { id: 'monthly-revenue', label: 'Receita Mensal', value: 'R$ 125K', icon: 'fas fa-dollar-sign', color: 'primary', trend: 'up', change: '+8.5%' } ] }, columns: [ { field: "name", header: "Nome", sortable: true }, { field: "email", header: "Email", sortable: true } ] }; } } ``` ## 🔧 Troubleshooting ### ❓ Dashboard não aparece? **Verifique:** 1. ✅ `showDashboardTab: true` está no `getDomainConfig()` 2. ✅ Componente estende `BaseDomainComponent` 3. ✅ Build foi executado após a mudança ### ❓ KPIs automáticos não aparecem? **Possíveis causas:** 1. Service não retorna `totalItems` 2. Dados não têm campo `status` ou `created_at` 3. Dados estão vazios ### ❓ KPI customizado não aparece? **Verifique:** 1. ✅ `customKPIs` está dentro de `dashboardConfig` 2. ✅ Todos os campos obrigatórios estão preenchidos 3. ✅ `id` é único ## 🎓 Próximos Passos 1. **Teste**: Adicione `showDashboardTab: true` em um domínio existente 2. **Customize**: Adicione KPIs específicos do seu domínio 3. **Explore**: Veja outros domínios como `drivers.component.ts` 4. **Contribua**: Sugira melhorias e novos tipos de KPI ## 📚 Documentação Completa - [Dashboard Tab System Guide](./components/DASHBOARD_TAB_SYSTEM.md) - [BaseDomainComponent](./architecture/BASE_DOMAIN_COMPONENT.md) - [Cursor Rules](./.cursorrules) ## 💡 Dicas Pro 1. **Comece simples**: Use só `showDashboardTab: true` primeiro 2. **Ícones**: Use FontAwesome 5 (fas fa-*) 3. **Cores**: `success` para positivo, `warning` para atenção 4. **Valores**: Use formatação amigável ('85%', 'R$ 125K') 5. **Trends**: `up` = verde, `down` = vermelho, `stable` = amarelo --- **Bem-vindo ao time!** 🎉 Se tiver dúvidas, consulte a documentação ou pergunte para a equipe. **Happy Coding!** 🚀