Prueba 13/11/2025 con fase 2

Directorio de Consultoras en Uruguay

Directorio de Consultoras en Uruguay

Encuentra las mejores empresas de consultoría en recursos humanos

0
Consultoras
0
Multinacionales
0
Nacionales
0
Marcadas
Tipo:
Redes sociales:
Columnas:
Ordenar:
Mostrando 0 de 0 consultoras
FAQ = Preguntas Frecuentes
Cargando consultoras…
Consultora Descripción Redes Sociales Marcar
'; if (c.faq) { html += ''; html += ' FAQ'; html += ''; } else { html += ''; html += ' FAQ'; html += ''; } html += ''; html += ''; html += ''; html += '
' + c.descripcion + '
'; html += ''; // Info del país if (c.pais) { html += '
'; html += ''; html += '' + c.pais.codigo.toUpperCase() + ''; html += '' + c.pais.nombre + ''; html += ''; html += '' + c.pais.texto + ''; html += '
'; } html += ''; } grid.innerHTML = html; // Agregar event listeners a los botones de bookmark var bookmarkButtons = document.querySelectorAll('.bookmark-btn'); for (var i = 0; i < bookmarkButtons.length; i++) { bookmarkButtons[i].addEventListener('click', function() { handleBookmark(this.dataset.company); }); } // Actualizar UI de bookmarks updateBookmarksUI(); console.log('✅ Renderizado completado: ' + consultoras.length + ' consultoras'); } // ========== APLICAR TEMA ========== function setTheme(theme) { currentTheme = theme; localStorage.setItem('theme', theme); applyTheme(theme); } function applyTheme(theme) { var themeButtons = document.querySelectorAll('.theme-btn'); if (theme === 'dark') { document.body.classList.add('dark-mode'); } else { document.body.classList.remove('dark-mode'); } themeButtons.forEach(function(btn) { if (btn.dataset.theme === theme) { btn.classList.add('active'); } else { btn.classList.remove('active'); } }); // Actualizar colores de países en la tabla document.querySelectorAll('.country-name-text').forEach(function(span) { var lightColor = span.getAttribute('data-light'); var darkColor = span.getAttribute('data-dark'); span.style.color = theme === 'dark' ? darkColor : lightColor; }); } // ========== FUNCIONES PRINCIPALES ========== function updateColumnsDisplay() { var grid = document.getElementById('consultoresGrid'); grid.className = 'consultoras-grid columns-' + currentColumns; } function updateBookmarksUI() { document.querySelectorAll('.bookmark-btn').forEach(function(btn) { var company = btn.dataset.company; if (bookmarkedCompanies.indexOf(company) > -1) { btn.classList.add('bookmarked'); } else { btn.classList.remove('bookmarked'); } }); } // ========== INICIALIZACIÓN AL CARGAR ========== // Esperamos a que TODO (incluyendo WordPress/Kadence) termine de cargar window.addEventListener('load', function() { console.log('⏰ Window load event - Iniciando delay estratégico de 800ms...'); // Delay adicional para asegurar que Kadence Theme termine su trabajo setTimeout(function() { console.log('🎬 Delay completado - Iniciando aplicación...'); // ========== EVENT LISTENERS ========== // Tema - Listener unificado document.querySelectorAll('.theme-btn').forEach(function(btn) { btn.addEventListener('click', function() { setTheme(this.dataset.theme); }); }); // Búsqueda document.getElementById('searchInput').addEventListener('input', function() { console.log('🔍 Búsqueda activada:', this.value); filterCards(); }); // Filtros de tipo document.querySelectorAll('.filter-btn').forEach(function(btn) { btn.addEventListener('click', function() { console.log('🏷️ Filtro de tipo activado:', this.dataset.filter); document.querySelectorAll('.filter-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); currentFilter = this.dataset.filter; filterCards(); }); }); // Filtros de redes sociales document.querySelectorAll('.social-filter-btn').forEach(function(btn) { btn.addEventListener('click', function() { var social = this.dataset.social; if (this.classList.contains('active')) { this.classList.remove('active'); activeSocialFilters = activeSocialFilters.filter(function(s) { return s !== social; }); } else { this.classList.add('active'); activeSocialFilters.push(social); } filterCards(); }); }); // Ordenamiento document.querySelectorAll('.sort-btn').forEach(function(btn) { btn.addEventListener('click', function() { document.querySelectorAll('.sort-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); currentSort = this.dataset.sort; sortCards(); if (currentView === 'table') { generateTable(); } }); }); // Cambiar vista document.querySelectorAll('.view-btn').forEach(function(btn) { btn.addEventListener('click', function() { console.log('👁️ Cambio de vista a:', this.dataset.view); document.querySelectorAll('.view-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); currentView = this.dataset.view; if (currentView === 'grid') { document.getElementById('consultoresGrid').style.display = 'grid'; document.getElementById('tableView').classList.remove('active'); document.getElementById('columnsControls').classList.add('show'); } else { document.getElementById('consultoresGrid').style.display = 'none'; document.getElementById('tableView').classList.add('active'); document.getElementById('columnsControls').classList.remove('show'); generateTable(); } }); }); // Control de columnas document.querySelectorAll('.column-btn').forEach(function(btn) { btn.addEventListener('click', function() { document.querySelectorAll('.column-btn').forEach(function(b) { b.classList.remove('active'); }); this.classList.add('active'); currentColumns = parseInt(this.dataset.columns); updateColumnsDisplay(); }); }); // Toggle de filtros en móvil document.getElementById('filtersToggle').addEventListener('click', function() { var filtersContent = document.getElementById('filtersContent'); filtersContent.classList.toggle('show'); this.classList.toggle('active'); }); // ========== RENDERIZAR E INICIALIZAR ========== renderizarConsultoras(); applyTheme(currentTheme); updateStats(); sortCards(); filterCards(); updateColumnsDisplay(); console.log('🎉 Aplicación completamente inicializada'); }, 800); // 800ms de delay estratégico }); function sortCards() { var grid = document.getElementById('consultoresGrid'); var cards = Array.from(document.querySelectorAll('.consultora-card')); cards.sort(function(a, b) { var nameA = a.querySelector('h3').textContent.trim(); var nameB = b.querySelector('h3').textContent.trim(); if (currentSort === 'az') { return nameA.localeCompare(nameB, 'es'); } else { return nameB.localeCompare(nameA, 'es'); } }); cards.forEach(function(card) { grid.appendChild(card); }); } function filterCards() { var searchTerm = document.getElementById('searchInput').value.toLowerCase(); var cards = document.querySelectorAll('.consultora-card'); // Validar que existan tarjetas renderizadas if (cards.length === 0) { console.warn('⚠️ filterCards: No hay tarjetas renderizadas aún'); return; } var visibleCount = 0; cards.forEach(function(card) { var tipo = card.dataset.tipo; var company = card.querySelector('.bookmark-btn').dataset.company; var text = card.textContent.toLowerCase(); var matchesSearch = text.indexOf(searchTerm) > -1; var matchesTypeFilter = true; var matchesSocialFilters = true; if (currentFilter === 'multinacional' || currentFilter === 'nacional') { matchesTypeFilter = tipo === currentFilter; } else if (currentFilter === 'bookmarked') { matchesTypeFilter = bookmarkedCompanies.indexOf(company) > -1; } if (activeSocialFilters.length > 0) { var socialLinks = card.querySelectorAll('.social-link.available'); var availableSocials = Array.from(socialLinks).map(function(link) { if (link.classList.contains('linkedin')) return 'linkedin'; if (link.classList.contains('instagram')) return 'instagram'; if (link.classList.contains('facebook')) return 'facebook'; if (link.classList.contains('x-twitter')) return 'x-twitter'; if (link.classList.contains('tiktok')) return 'tiktok'; if (link.classList.contains('youtube')) return 'youtube'; if (link.classList.contains('website')) return 'website'; return null; }).filter(function(s) { return s !== null; }); matchesSocialFilters = activeSocialFilters.every(function(filter) { return availableSocials.indexOf(filter) > -1; }); } if (matchesSearch && matchesTypeFilter && matchesSocialFilters) { card.style.display = 'block'; visibleCount++; } else { card.style.display = 'none'; } }); var totalCards = document.querySelectorAll('.consultora-card').length; document.getElementById('resultsCount').textContent = 'Mostrando ' + visibleCount + ' de ' + totalCards + ' consultoras'; console.log('🔍 Filtrado completado: ' + visibleCount + ' de ' + totalCards + ' consultoras visibles'); if (currentView === 'table') { generateTable(); } } function handleBookmark(company) { var index = bookmarkedCompanies.indexOf(company); if (index > -1) { bookmarkedCompanies.splice(index, 1); } else { bookmarkedCompanies.push(company); } localStorage.setItem('bookmarks', JSON.stringify(bookmarkedCompanies)); updateBookmarksUI(); updateStats(); if (currentFilter === 'bookmarked') { filterCards(); } if (currentView === 'table') { generateTable(); } } function generateTable() { console.log('📊 Generando tabla...'); var tbody = document.getElementById('tableBody'); var cards = Array.from(document.querySelectorAll('.consultora-card')); // Validar que existan tarjetas if (cards.length === 0) { console.warn('⚠️ generateTable: No hay tarjetas renderizadas aún'); tbody.innerHTML = 'No hay consultoras para mostrar'; return; } console.log('📊 Tarjetas encontradas:', cards.length); tbody.innerHTML = ''; var visibleCards = cards.filter(function(card) { return card.style.display !== 'none'; }); console.log('📊 Tarjetas visibles:', visibleCards.length); visibleCards.sort(function(a, b) { var nameA = a.querySelector('h3').textContent.trim(); var nameB = b.querySelector('h3').textContent.trim(); if (currentSort === 'az') { return nameA.localeCompare(nameB, 'es'); } else { return nameB.localeCompare(nameA, 'es'); } }); visibleCards.forEach(function(card) { var name = card.querySelector('h3').textContent; var logo = card.querySelector('.logo').src; var tipo = card.querySelector('.tipo').textContent; var desc = card.querySelector('.description').textContent; var socials = card.querySelector('.social-links').innerHTML; var company = card.querySelector('.bookmark-btn').dataset.company; var isBookmarked = bookmarkedCompanies.indexOf(company) > -1; var razonSocialElem = card.querySelector('.razon-social'); var razonSocial = razonSocialElem ? razonSocialElem.textContent : 'PPP S.A.'; var faqLink = card.querySelector('.faq-badge'); var faqBadgeHtml = ''; if (faqLink) { faqBadgeHtml = ' FAQ'; } else { faqBadgeHtml = ' FAQ'; } var countryInfoDiv = card.querySelector('div[style*="margin-top: 15px"]'); var countryInfoHtml = ''; if (countryInfoDiv) { var flagImg = countryInfoDiv.querySelector('img'); if (flagImg) { var flagSrc = flagImg.src; var tooltipSpan = countryInfoDiv.querySelector('.flag-tooltip'); var countryName = tooltipSpan ? tooltipSpan.textContent.trim() : ''; var textSpans = countryInfoDiv.querySelectorAll('span'); var yearText = ''; textSpans.forEach(function(span) { if (!span.classList.contains('flag-tooltip-wrapper') && !span.classList.contains('flag-tooltip')) { yearText = span.textContent.trim(); } }); var countryColor = '#64748b'; var countryColorDark = '#94a3b8'; if (flagSrc.indexOf('/uy.png') > -1) { countryColor = '#0038A8'; countryColorDark = '#60A5FA'; } else if (flagSrc.indexOf('/nl.png') > -1) { countryColor = '#D84315'; countryColorDark = '#FF8C42'; } else if (flagSrc.indexOf('/ch.png') > -1) { countryColor = '#DC143C'; countryColorDark = '#F87171'; } else if (flagSrc.indexOf('/us.png') > -1) { countryColor = '#B22234'; countryColorDark = '#EF4444'; } else if (flagSrc.indexOf('/ar.png') > -1) { countryColor = '#74ACDF'; countryColorDark = '#93C5FD'; } var isDarkMode = document.body.classList.contains('dark-mode'); var finalColor = isDarkMode ? countryColorDark : countryColor; var borderColor = isDarkMode ? '#334155' : '#e9ecef'; var textColor = isDarkMode ? '#94a3b8' : '#64748b'; countryInfoHtml = '
'; countryInfoHtml += '' + flagImg.alt + ''; countryInfoHtml += '' + countryName + ''; countryInfoHtml += ''; countryInfoHtml += '' + yearText + ''; countryInfoHtml += '
'; } } var borderColor = document.body.classList.contains('dark-mode') ? '#334155' : '#e9ecef'; var textColor = document.body.classList.contains('dark-mode') ? '#94a3b8' : '#64748b'; var row = document.createElement('tr'); row.innerHTML = '
' + name + '
' + tipo + '' + faqBadgeHtml + '
' + desc + '
' + razonSocial + '
' + countryInfoHtml + ''; tbody.appendChild(row); }); document.querySelectorAll('.table-bookmark-btn').forEach(function(btn) { btn.addEventListener('click', function() { handleBookmark(this.dataset.company); }); }); console.log('✅ Tabla generada exitosamente con', visibleCards.length, 'filas'); }
hola pelotudo

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.