Directorio de Consultoras en Uruguay
Encuentra las mejores empresas de consultoría en recursos humanos
44
Consultoras
13
Multinacionales
31
Nacionales
0
Marcadas
Tipo:
Redes sociales:
Columnas:
Ordenar:
Mostrando 44 de 44 consultoras
| Consultora | Descripción | Redes Sociales | Marcar |
|---|
' +
'
' +
'
' +
'' +
'
' + c.nombre + '
' + (c.razonSocial ? '' : '') + '' +
'
' + (c.tipo === 'nacional' ? 'Nacional' : 'Multinacional') + '
' +
faqHTML +
'' + c.descripcion + '
' +
'' +
countryHTML;
grid.appendChild(card);
});
sortCards();
updateBookmarksUI();
}
function getSocialLinksHTML(c) {
var socials = [
{key: 'linkedin', icon: 'fab fa-linkedin', class: 'linkedin'},
{key: 'instagram', icon: 'fab fa-instagram', class: 'instagram'},
{key: 'facebook', icon: 'fab fa-facebook', class: 'facebook'},
{key: 'twitter', icon: '𝕏', class: 'x-twitter', isText: true},
{key: 'tiktok', icon: 'fab fa-tiktok', class: 'tiktok'},
{key: 'youtube', icon: 'fab fa-youtube', class: 'youtube'},
{key: 'web', icon: 'fas fa-globe', class: 'website'}
];
var html = '';
socials.forEach(function(social) {
var url = c[social.key];
if (url) {
html += '';
html += social.isText ? social.icon : '';
html += '';
} else {
html += '';
}
});
return html;
}
function updateStats() {
var total = CONSULTORAS_DATA.consultoras.length;
var multinacionales = CONSULTORAS_DATA.consultoras.filter(function(c) { return c.tipo === 'multinacional'; }).length;
var nacionales = CONSULTORAS_DATA.consultoras.filter(function(c) { return c.tipo === 'nacional'; }).length;
document.getElementById('totalConsultoras').textContent = total;
document.getElementById('totalMultinacionales').textContent = multinacionales;
document.getElementById('totalNacionales').textContent = nacionales;
document.getElementById('totalMarcadas').textContent = bookmarkedCompanies.length;
}
function initFiltersToggle() {
var toggleBtn = document.getElementById('filtersToggle');
var filtersContent = document.getElementById('filtersContent');
toggleBtn.addEventListener('click', function() {
filtersContent.classList.toggle('show');
toggleBtn.classList.toggle('active');
});
}
function bindAllEvents() {
document.getElementById('lightBtn').addEventListener('click', function() { setTheme('light'); });
document.getElementById('darkBtn').addEventListener('click', function() { setTheme('dark'); });
document.getElementById('lightBtnMobile').addEventListener('click', function() { setTheme('light'); });
document.getElementById('darkBtnMobile').addEventListener('click', function() { setTheme('dark'); });
document.getElementById('searchInput').addEventListener('input', filterCards);
document.querySelectorAll('.filter-btn').forEach(function(btn) {
btn.addEventListener('click', function() {
document.querySelectorAll('.filter-btn').forEach(function(b) { b.classList.remove('active'); });
this.classList.add('active');
currentFilter = this.dataset.filter;
filterCards();
});
});
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();
});
});
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();
});
});
document.querySelectorAll('.view-btn').forEach(function(btn) {
btn.addEventListener('click', function() {
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();
}
});
});
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);
document.getElementById('consultoresGrid').className = 'consultoras-grid columns-' + currentColumns;
});
});
bindBookmarkButtons();
}
function bindBookmarkButtons() {
document.querySelectorAll('.bookmark-btn, .table-bookmark-btn').forEach(function(btn) {
btn.addEventListener('click', function() {
var company = this.dataset.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();
});
});
}
function updateBookmarksUI() {
document.querySelectorAll('.bookmark-btn, .table-bookmark-btn').forEach(function(btn) {
var company = btn.dataset.company;
if (bookmarkedCompanies.indexOf(company) > -1) {
btn.classList.add('bookmarked');
} else {
btn.classList.remove('bookmarked');
}
});
}
function setTheme(theme) {
currentTheme = theme;
localStorage.setItem('theme', theme);
applyTheme(theme);
}
function applyTheme(theme) {
var lightButtons = [document.getElementById('lightBtn'), document.getElementById('lightBtnMobile')];
var darkButtons = [document.getElementById('darkBtn'), document.getElementById('darkBtnMobile')];
if (theme === 'dark') {
wrapper.classList.add('dark-mode');
lightButtons.forEach(function(btn) { if(btn) btn.classList.remove('active'); });
darkButtons.forEach(function(btn) { if(btn) btn.classList.add('active'); });
} else {
wrapper.classList.remove('dark-mode');
lightButtons.forEach(function(btn) { if(btn) btn.classList.add('active'); });
darkButtons.forEach(function(btn) { if(btn) btn.classList.remove('active'); });
}
}
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();
return currentSort === 'az' ? nameA.localeCompare(nameB, 'es') : 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');
var visibleCount = 0;
cards.forEach(function(card) {
var name = card.dataset.name;
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';
}
});
document.getElementById('resultsCount').textContent = 'Mostrando ' + visibleCount + ' de ' + CONSULTORAS_DATA.consultoras.length + ' consultoras';
if (currentView === 'table') generateTable();
}
function generateTable() {
var tbody = document.getElementById('tableBody');
var cards = Array.from(document.querySelectorAll('.consultora-card'));
tbody.innerHTML = '';
var visibleCards = cards.filter(function(card) { return card.style.display !== 'none'; });
visibleCards.sort(function(a, b) {
var nameA = a.querySelector('h3').textContent.trim();
var nameB = b.querySelector('h3').textContent.trim();
return currentSort === 'az' ? nameA.localeCompare(nameB, 'es') : 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 : '';
var faqLink = card.querySelector('.faq-badge');
var faqBadgeHtml = faqLink ? ' FAQ' : ' FAQ';
var row = document.createElement('tr');
row.innerHTML = '' + name + '
' + tipo + '' + faqBadgeHtml + '
' + razonSocial + '
' : '') + 'Directorio de Consultoras
Encuentra y filtra consultoras de RRHH en Uruguay.
Cargando…
No se encontraron resultados
Intenta ajustar tu búsqueda o filtros.





