/** * CARREGADOR UNIVERSAL DE PERFIS * Sistema que carrega automaticamente TODOS os tipos de perfis * usando o banco de dados embutido */ // Configuração de mapeamento de tipos const MAPEAMENTO_PERFIS = { 'cantoneiras': { tbodyId: 'cantoneiras-tbody', totalId: 'cant-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'lado_mm', label: 'Lado (mm)' }, { key: 'espessura_mm', label: 'Espessura (mm)' }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 2 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 2 }, { key: 'momento_inercia_cm4', label: 'Momento Inércia (cm⁴)', decimals: 2 }, { key: 'raio_giracao_cm', label: 'Raio Giração (cm)', decimals: 2 }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'barras_redondas': { tbodyId: 'barras_redondas-tbody', totalId: 'barras_redondas-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'diametro_mm', label: 'Diâmetro (mm)' }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 3 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 3 }, { key: 'momento_inercia_cm4', label: 'Momento Inércia (cm⁴)', decimals: 2 }, { key: 'raio_giracao_cm', label: 'Raio Giração (cm)', decimals: 2 }, { key: 'aplicacao', label: 'Aplicação' }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'tubos_circulares': { tbodyId: 'tubos_circulares-tbody', totalId: 'tubos_circulares-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'diametro_mm', label: 'Ø Externo (mm)' }, { key: 'espessura_mm', label: 'Espessura (mm)' }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 2 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 2 }, { key: 'momento_inercia_cm4', label: 'Momento Inércia (cm⁴)', decimals: 2 }, { key: 'raio_giracao_cm', label: 'Raio Giração (cm)', decimals: 2 }, { key: 'aplicacao', label: 'Aplicação' }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'perfis_i': { tbodyId: 'perfis_i-tbody', totalId: 'perfis_i-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'altura_mm', label: 'Altura (mm)' }, { key: 'largura_mm', label: 'Largura (mm)' }, { key: 'espessura_alma_mm', label: 'Esp. Alma (mm)' }, { key: 'espessura_mesa_mm', label: 'Esp. Mesa (mm)' }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 2 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 2 }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'perfis_w': { tbodyId: 'perfis_w-tbody', totalId: 'perfis_w-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'altura_mm', label: 'Altura (mm)' }, { key: 'largura_mm', label: 'Largura (mm)' }, { key: 'espessura_alma_mm', label: 'Esp. Alma (mm)' }, { key: 'espessura_mesa_mm', label: 'Esp. Mesa (mm)' }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 2 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 2 }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'tubos_rhs': { tbodyId: 'tubos_rhs-tbody', totalId: 'tubos_rhs-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'largura_mm', label: 'Largura (mm)' }, { key: 'altura_mm', label: 'Altura (mm)' }, { key: 'espessura_mm', label: 'Espessura (mm)' }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 2 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 2 }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'chapas': { tbodyId: 'chapas-tbody', totalId: 'chapas-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'espessura_mm', label: 'Espessura (mm)' }, { key: 'peso_kg_m2', label: 'Peso (kg/m²)', decimals: 2 }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'perfis_hp': { tbodyId: 'perfis_hp-tbody', totalId: 'perfis_hp-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'altura_mm', label: 'Altura (mm)' }, { key: 'aba_mm', label: 'Aba (mm)' }, { key: 'espessura_alma_mm', label: 'Esp. Alma (mm)', decimals: 1 }, { key: 'espessura_aba_mm', label: 'Esp. Aba (mm)', decimals: 1 }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 1 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 1 }, { key: 'tipo', label: 'Categoria', badge: true } ] }, 'barras_roscadas': { tbodyId: 'barras_roscadas-tbody', totalId: 'barras_roscadas-total', colunas: [ { key: 'tipo_rosca', label: 'Tipo', badge: true }, { key: 'diametro_nominal_mm', label: 'Diâmetro (mm)', decimals: 2 }, { key: 'passo_mm', label: 'Passo (mm)', decimals: 2 }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 3 }, { key: 'aplicacao', label: 'Aplicação' }, { key: 'tamanho', label: 'Categoria', badge: true } ] }, 'barras_chatas': { tbodyId: 'barras_chatas-tbody', totalId: 'barras_chatas-total', colunas: [ { key: 'nome', label: 'Designação', bold: true }, { key: 'largura_mm', label: 'Largura (mm)', decimals: 1 }, { key: 'espessura_mm', label: 'Espessura (mm)', decimals: 1 }, { key: 'peso_kg_m', label: 'Peso (kg/m)', decimals: 3 }, { key: 'area_cm2', label: 'Área (cm²)', decimals: 2 }, { key: 'tamanho', label: 'Categoria', badge: true } ] } }; /** * Carrega dados de um tipo específico de perfil */ function carregarPerfilUniversal(tipo) { console.log(`🚀 Carregando perfil: ${tipo}`); const config = MAPEAMENTO_PERFIS[tipo]; if (!config) { console.error(`❌ Configuração não encontrada para: ${tipo}`); return false; } const tbody = document.getElementById(config.tbodyId); if (!tbody) { console.warn(`⚠️ Elemento ${config.tbodyId} não encontrado`); return false; } // Obter dados do banco const dados = window.BANCO_DADOS_PERFIS?.[tipo]; if (!dados || dados.length === 0) { console.error(`❌ Dados não encontrados para: ${tipo}`); tbody.innerHTML = `