/** * Auto-detectar y agregar clases a filas especiales de tablas APU * * Este script detecta automáticamente filas especiales en tablas .desglose y .analisis * y les agrega las clases CSS correspondientes para que se apliquen los estilos correctos. * * Detecta: * - Section headers: Material, Mano de Obra, Herramienta, Equipo * - Subtotal rows: Filas que empiezan con "Suma de" * - Total row: Costo Directo * * @package Apus_Theme * @since 1.0.0 */ (function() { 'use strict'; /** * Agrega clases a filas especiales de tablas APU */ function applyApuTableClasses() { // Buscar todas las tablas con clase .desglose o .analisis const tables = document.querySelectorAll('.desglose table, .analisis table'); if (tables.length === 0) { return; // No hay tablas APU en esta página } let classesAdded = 0; tables.forEach(function(table) { const rows = table.querySelectorAll('tbody tr'); rows.forEach(function(row) { // Evitar procesar filas que ya tienen clase if (row.classList.contains('section-header') || row.classList.contains('subtotal-row') || row.classList.contains('total-row')) { return; } const secondCell = row.querySelector('td:nth-child(2)'); if (!secondCell) { return; // Fila sin segunda celda } const text = secondCell.textContent.trim(); // Detectar section headers if (text === 'Material' || text === 'Mano de Obra' || text === 'Herramienta' || text === 'Equipo' || text === 'MATERIAL' || text === 'MANO DE OBRA' || text === 'HERRAMIENTA' || text === 'EQUIPO') { row.classList.add('section-header'); classesAdded++; return; } // Detectar subtotales (cualquier variación de "Suma de") if (text.toLowerCase().startsWith('suma de ') || text.toLowerCase().startsWith('subtotal ')) { row.classList.add('subtotal-row'); classesAdded++; return; } // Detectar total final if (text === 'Costo Directo' || text === 'COSTO DIRECTO' || text === 'Total' || text === 'TOTAL' || text === 'Costo directo') { row.classList.add('total-row'); classesAdded++; return; } }); }); // Log para debugging (solo en desarrollo) if (classesAdded > 0 && window.console) { console.log('[APU Tables] Clases agregadas automáticamente: ' + classesAdded); } } // Ejecutar cuando el DOM esté listo if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', applyApuTableClasses); } else { // DOM ya está listo applyApuTableClasses(); } })();