# 🐛 Debug - Cantoneiras Não Carregam ## 🔍 Checklist de Verificação ### 1. Abrir Console do Navegador Pressione `F12` e vá para a aba "Console" ### 2. Verificar Mensagens de Inicialização Ao carregar a página, você deve ver: ``` ✅ Data Manager carregado e disponível globalmente 🗄️ Inicializando Data Manager v1.0.0 📥 Cache vazio ou desatualizado. Carregando dados... 🔄 Iniciando atualização completa dos dados... 📊 Carregando Cantoneiras... ✅ Cantoneiras: 39 itens carregados ``` **Se NÃO ver essas mensagens:** - ❌ Scripts não foram carregados corretamente - ❌ Verifique se os arquivos existem em `js/database/` ### 3. Acessar Menu Cantoneiras Clique em: **MATERIAIS** → **Catálogo de Perfis** → **Cantoneiras** No console, você deve ver: ``` 📊 carregarCantoneiras() - INICIANDO 🔍 Verificando disponibilidade: - carregarCantoneirasV2: function - window.dataManager: object - exibirCantoneirasV2: function ✅ Usando Data Manager V2 🔧 carregarCantoneirasV2() - Nova versão com Data Manager ✅ Elemento tbody encontrado 📊 Carregando cantoneiras do banco de dados... ✅ 39 cantoneiras carregadas do Data Manager 📋 Exibindo 39 cantoneiras na tabela ✅ Tabela atualizada com sucesso ``` ### 4. Verificar Erros Comuns #### Erro: "dataManager não existe" **Causa**: Script não carregado ou erro de inicialização **Solução**: ```javascript // No console, execute: console.log('Data Manager:', window.dataManager); console.log('Funções V2:', typeof carregarCantoneirasV2); ``` Se retornar `undefined`, recarregue a página com `Ctrl + F5` #### Erro: "cantoneiras-tbody não encontrado" **Causa**: Elemento HTML não existe ou timing incorreto **Solução**: ```javascript // No console, execute: console.log('Tbody:', document.getElementById('cantoneiras-tbody')); ``` Se retornar `null`, o HTML não foi renderizado ainda. #### Erro: "HTTP 404" ao carregar CSV **Causa**: Arquivo CSV não existe **Solução**: Verificar se existe `BD/perfis/cantoneiras_brasil_completo.csv` #### Erro: "Parsing error" no CSV **Causa**: Formato do CSV incorreto **Solução**: Verificar se CSV tem cabeçalho correto --- ## 🔧 Testes Manuais no Console ### Teste 1: Verificar Data Manager ```javascript // Copie e cole no console: console.log('=== TESTE DATA MANAGER ==='); console.log('1. Data Manager existe?', !!window.dataManager); console.log('2. Versão:', window.dataManager?.version); console.log('3. Stats:', window.dataManager?.getCacheStats()); ``` **Resultado esperado:** ``` === TESTE DATA MANAGER === 1. Data Manager existe? true 2. Versão: 1.0.0 3. Stats: {version: "1.0.0", hasCache: true, ...} ``` ### Teste 2: Verificar Funções V2 ```javascript console.log('=== TESTE FUNÇÕES V2 ==='); console.log('1. carregarCantoneirasV2:', typeof carregarCantoneirasV2); console.log('2. exibirCantoneirasV2:', typeof exibirCantoneirasV2); console.log('3. filtrarCantoneirasV2:', typeof filtrarCantoneirasV2); ``` **Resultado esperado:** ``` === TESTE FUNÇÕES V2 === 1. carregarCantoneirasV2: function 2. exibirCantoneirasV2: function 3. filtrarCantoneirasV2: function ``` ### Teste 3: Carregar Dados Manualmente ```javascript // Forçar carregamento: await window.dataManager.getData('cantoneiras').then(dados => { console.log('✅ Dados carregados:', dados.length, 'itens'); console.log('Primeiro item:', dados[0]); }); ``` **Resultado esperado:** ``` ✅ Dados carregados: 39 itens Primeiro item: {id: "l25_25_3", nome: "L25x25x3", ...} ``` ### Teste 4: Exibir na Tabela Manualmente ```javascript // Carregar e exibir: await carregarCantoneirasV2(); ``` **Resultado esperado:** - Tabela preenchida com 39 linhas - Dados visíveis --- ## 🚨 Soluções Rápidas ### Solução 1: Recarregar Scripts ```javascript // No console: location.reload(true); // Força reload sem cache ``` ### Solução 2: Limpar Cache e Recarregar ```javascript // No console: localStorage.clear(); location.reload(); ``` ### Solução 3: Forçar Atualização de Dados ```javascript // No console: await window.dataManager.updateAllData(); ``` ### Solução 4: Carregar Método Legado ```javascript // No console: async function carregarLegado() { const response = await fetch('BD/perfis/cantoneiras_brasil_completo.csv'); const csvText = await response.text(); const linhas = csvText.trim().split('\n'); const dados = []; for (let i = 1; i < linhas.length; i++) { const linha = linhas[i].trim(); if (!linha) continue; const colunas = linha.split(','); if (colunas.length >= 9) { dados.push({ id: colunas[0].trim(), nome: colunas[1].trim(), lado_mm: parseFloat(colunas[2]), espessura_mm: parseFloat(colunas[3]), peso_kg_m: parseFloat(colunas[4]), area_cm2: parseFloat(colunas[5]), momento_inercia_cm4: parseFloat(colunas[6]), raio_giracao_cm: parseFloat(colunas[7]), tipo: colunas[8].trim() }); } } console.log('✅ Carregado:', dados.length, 'cantoneiras'); // Exibir na tabela const tbody = document.getElementById('cantoneiras-tbody'); if (tbody) { tbody.innerHTML = dados.map(item => ` ${item.nome} ${item.lado_mm} ${item.espessura_mm} ${item.peso_kg_m.toFixed(2)} ${item.area_cm2.toFixed(2)} ${item.momento_inercia_cm4.toFixed(2)} ${item.raio_giracao_cm.toFixed(2)} ${item.tipo} `).join(''); console.log('✅ Tabela preenchida!'); } else { console.error('❌ Elemento tbody não encontrado!'); } } // Executar: await carregarLegado(); ``` --- ## 📋 Checklist de Arquivos Verifique se estes arquivos existem: - [ ] `js/database/data-manager.js` - [ ] `js/database/perfis-loader.js` - [ ] `js/database/admin-panel.js` - [ ] `BD/perfis/cantoneiras_brasil_completo.csv` ### Verificar no Console: ```javascript // Verificar se scripts foram carregados: console.log('Scripts carregados:'); console.log('- data-manager.js:', !!window.dataManager); console.log('- perfis-loader.js:', typeof carregarCantoneirasV2); console.log('- admin-panel.js:', typeof abrirPainelDados); ``` --- ## 🎯 Ordem de Carregamento Correta No `index.html`, os scripts devem estar nesta ordem: ```html ``` --- ## 🔍 Debug Avançado ### Ativar Logs Detalhados: ```javascript // No console, antes de carregar cantoneiras: window.DEBUG_MODE = true; ``` ### Verificar Ordem de Execução: ```javascript console.log('=== ORDEM DE CARREGAMENTO ==='); console.log('1. Data Manager:', !!window.dataManager); console.log('2. Perfis Loader:', typeof carregarCantoneirasV2); console.log('3. Admin Panel:', typeof abrirPainelDados); console.log('4. App.js:', typeof showSection); console.log('5. Perfis Catalog:', typeof getCantoneirasContent); ``` ### Verificar Timing: ```javascript // Medir tempo de carregamento: console.time('Carregamento Cantoneiras'); await carregarCantoneiras(); console.timeEnd('Carregamento Cantoneiras'); ``` --- ## ✅ Resultado Esperado Quando tudo estiver funcionando, você verá: 1. **No Console**: - ✅ Mensagens de inicialização - ✅ Dados carregados - ✅ Tabela atualizada - ❌ Nenhum erro 2. **Na Tela**: - ✅ Tabela com 39 cantoneiras - ✅ Dados corretos (nome, dimensões, peso) - ✅ Badges coloridos - ✅ Botões funcionando 3. **No Header**: - ✅ Badge mostra "✅ Cache Ativo" - ✅ Botão 🗄️ Dados visível --- ## 📞 Se Nada Funcionar Execute este comando no console para diagnóstico completo: ```javascript console.log('=== DIAGNÓSTICO COMPLETO ==='); console.log('\n1. SCRIPTS:'); console.log(' Data Manager:', !!window.dataManager); console.log(' Perfis Loader:', typeof carregarCantoneirasV2); console.log(' Admin Panel:', typeof abrirPainelDados); console.log('\n2. ELEMENTOS HTML:'); console.log(' tbody:', !!document.getElementById('cantoneiras-tbody')); console.log(' badge:', !!document.getElementById('cache-status-badge')); console.log(' fab:', !!document.querySelector('.fab-data-admin')); console.log('\n3. CACHE:'); const stats = window.dataManager?.getCacheStats(); console.log(' Tem cache?', stats?.hasCache); console.log(' Cantoneiras:', stats?.types?.cantoneiras); console.log('\n4. ARQUIVOS:'); fetch('BD/perfis/cantoneiras_brasil_completo.csv') .then(r => console.log(' CSV existe?', r.ok)) .catch(e => console.log(' CSV erro:', e.message)); console.log('\n5. FUNÇÕES:'); console.log(' carregarCantoneiras:', typeof carregarCantoneiras); console.log(' exibirCantoneiras:', typeof exibirCantoneiras); console.log(' filtrarCantoneiras:', typeof filtrarCantoneiras); ``` Copie o resultado e me envie para análise! --- **Boa sorte com o debug! 🐛🔧**