let navOpened = false; let oldNavText = ""; let oldNavIcon = ""; let navEnabler = document.getElementById('nav-enabler'); let navEnablerText = document.getElementById('nav-enabler-text'); let navEnablerIcon = document.getElementById('nav-enabler-icon'); let navContent = document.getElementById('nav-content'); let mosaic = document.getElementById('mosaic'); let mosaicHeader = document.getElementById('mosaic-header'); navEnabler.onclick = async () => { if (!navOpened) { // open the menu oldNavText = navEnablerText.textContent; navEnablerText.textContent = "Minimiser le menu"; navEnablerIcon.style.transform = "rotate(90eg)"; navContent.style.maxHeight = navContent.scrollHeight + "px"; } else { // close the menu navEnablerText.textContent = oldNavText; navEnablerIcon.style.transform = "rotate(0deg)"; navContent.style.maxHeight = null; } navOpened = !navOpened; } function createEl(className = false, elName = "div") { let el = document.createElement(elName); if (className != false) { el.className = className; } return el; } function renderNavItem(tag) { /* */ let navItem = createEl('nav-item'); let navIcon = createEl('nav-icon'); let icon = createEl(tag.icon, 'i'); navIcon.appendChild(icon); navItem.appendChild(navIcon); let navItemContent = createEl('nav-item-content'); let navTitle = createEl('nav-title'); navTitle.textContent = tag.name; navItemContent.appendChild(navTitle); let navAccess = createEl('nav-access'); let chevronIcon = createEl('fas fa-chevron-right', 'i'); navAccess.appendChild(chevronIcon); navItemContent.appendChild(navTitle); navItemContent.appendChild(navAccess); navItem.appendChild(navItemContent); return navItem; } function setAttributes(node, attrs) { for (var key in attrs) { attr = document.createAttribute(key) attr.value = attrs[key] node.attributes.setNamedItem(attr) } } function renderCard(organization) { let card = createEl('card', 'a') // image let image = createEl('card-image-container') let imageTag = createEl('card-image') imageTag.style = `background-image: url('${organization.thumbnail}')` image.appendChild(imageTag) card.appendChild(image) let content = createEl('card-content') let upperContent = createEl() let titleContainer = createEl('card-title-container') let title = createEl('card-title', 'h2') title.textContent = organization.name titleContainer.appendChild(title) let icon = createEl('card-icon') if (Array.isArray(organization.tags) && organization.tags.length > 0) { let tag = tags.filter(tag => organization.tags[0] === tag._id)[0] icon.innerHTML = `` } titleContainer.appendChild(icon) upperContent.appendChild(titleContainer) let description = createEl('card-description') description.textContent = organization.description let goTo = "/association/" + organization.slugs[organization.slugs.length - 1] if (organization.isProposed) { goTo += "?version=proposed" } // let link = createEl('card-link') // let aTag = createEl('card-link', 'a') // aTag.href = // aTag.textContent = "En savoir plus" // description.appendChild(aTag) upperContent.appendChild(description) //link.appendChild(aTag) content.appendChild(upperContent) //content.appendChild(link) card.appendChild(content) card.href = goTo // card.onclick = () => { // window.location = goTo // } return card } function renderMosaic(data) { let cardContainer = createEl('card-container') data.forEach(orga => { cardContainer.appendChild(renderCard(orga)) }) return cardContainer } let currentTag = null let currentCardContainer = null function enableTag(node) { let all = node.id === 'nav-all' let tagId = "" if (!all) { tagId = node.attributes['data-tag-id'].value } let data = organizations.filter(orga => orga.tags.filter(id => id === tagId).length > 0 || all) let cards = renderMosaic(data) if (currentCardContainer !== null) { mosaic.removeChild(currentCardContainer) } currentCardContainer = cards mosaic.appendChild(cards) node.className += ' enabled' if (currentTag !== null) { currentTag.className = currentTag.className.replace('enabled', '') } currentTag = node if (data === undefined || data === null || data.length <= 0) { mosaicHeader.textContent = "Aucune associations listées" } else if (data.length === 1) { mosaicHeader.textContent = "Une association listée" } else { mosaicHeader.textContent = data.length + " associations listées" } } navContent.childNodes.forEach(node => { node.onclick = () => enableTag(node) }) enableTag(document.getElementById('nav-all'))