Untitled
unknown
plain_text
2 years ago
14 kB
6
Indexable
function factoryMedia(media, photographerName) { // Fonction pour créer un élément pour trier les médias function mediaTrie() { // Création de la div qui contiendra le selecteur de tri const div = document.createElement("div"); // Ajout de la classe "classId" à la div div.setAttribute("class", "classId"); // Création du label pour indiquer "Trier par" const label = document.createElement("label"); label.textContent = "Trier par"; // Ajout de la classe "labelStyle" au label label.setAttribute("class", "labelStyle"); // Création de la liste déroulante pour sélectionner le critère de tri const selectElement = document.createElement("select"); // Ajout de la classe "optionOfSelectbtn" à la liste déroulante selectElement.setAttribute("class", "optionOfSelectbtn"); // Ajout d'un écouteur d'événement pour la sélection d'une option dans la liste déroulante selectElement.addEventListener("change", function(e) { // Récupération de la valeur sélectionnée dans la liste déroulante const sortBy = e.target.value; // Tri des médias en fonction de la valeur sélectionnée switch (sortBy) { case "date": // Tri par date décroissante media.sort((a, b) => new Date(b.date) - new Date(a.date)); break; case "populaire": // Tri par nombre de likes décroissant media.sort((a, b) => b.likes - a.likes); break; case "titre": // Tri par ordre alphabétique du titre media.sort((a, b) => a.title.localeCompare(b.title)); break; } // Mise à jour du contenu de la section des médias document.querySelector("#mediaPhoto").innerHTML = photographerMedia().innerHTML; }); // Options disponibles pour le tri const options = [ { value: "populaire", text: "Popularité" }, { value: "date", text: "Date" }, { value: "titre", text: "Titre" } ]; // Boucle pour ajouter chaque option à la liste déroulante options.forEach((option, i) => { const optionElement = document.createElement("option"); optionElement.setAttribute("value", option.value); optionElement.textContent = option.text; selectElement.appendChild(optionElement); }); // Ajout du label et de la liste déroulante à la div div.appendChild(label); div.appendChild(selectElement); // Renvoi de la div return div; } function photographerMedia(){ const div = document.createElement('div') div.setAttribute('id', 'mediaPhoto') div.setAttribute('class', 'mediaPhoto') let images = media.map(c => c.image) let videox = media.map(c => c.video) media.forEach(function( result, i ) { if (result.video === undefined) { const anchor = document.createElement('section'); const encore = document.createElement('div'); anchor.setAttribute('class', 'testo'); encore.setAttribute('class', 'displayFlex'); const imageMedia = document.createElement('img'); imageMedia.setAttribute('id', 'lightbox-trigger'); imageMedia.setAttribute('class', 'mediaImgSettings'); imageMedia.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${result.image}`; const test = document.createElement('p'); test.textContent = result.title; test.setAttribute('class', 'pForHearth'); const testLike = document.createElement('p'); testLike.textContent = result.likes; testLike.setAttribute('id', result.id); const coucou = document.createElement('i'); coucou.setAttribute('class', 'fas fa-heart'); const imgDiv = document.createElement('div'); imgDiv.setAttribute('id', 'lightbox'); const btnPrecedent = document.createElement('i'); btnPrecedent.setAttribute('class', 'fa-solid fa-arrow-left'); btnPrecedent.onclick = () => { let lightboxImage = document.getElementById("lightbox-image"); lightboxImage.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${images[i--]}`; }; const btnSuivant = document.createElement('i'); btnSuivant.setAttribute('class', 'fa-solid fa-arrow-right'); btnSuivant.onclick = () => { let lightboxImage = document.getElementById("lightbox-image"); lightboxImage.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${images[i++]}`; }; const divTestForClose = document.createElement('div'); const nameOfLightbox = document.createElement('p'); nameOfLightbox.textContent = result.title; nameOfLightbox.setAttribute('id', 'titleOfMedia') const divName = document.createElement('div'); divName.setAttribute('id', 'btnClose') const btnFermer = document.createElement('i'); btnFermer.setAttribute('class', 'fa fa-times'); btnFermer.setAttribute('id', 'btnFermer') const btnFermerLightbox = document.createElement('span'); btnFermerLightbox.setAttribute('class', 'styleBtnLightbox'); btnFermer.onclick = () => closeLightbox(); function closeLightbox() { var lightbox = document.getElementById("lightbox"); lightbox.style.display = "none"; var footerDiv = document.getElementById('footer') footerDiv.style.display = "block"; } const imageLightbox = document.createElement('img'); imageLightbox.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${result.image}`; imageLightbox.setAttribute('id', 'lightbox-image'); const openLightbox = () => { const lightbox = document.getElementById("lightbox"); const lightboxImage = document.getElementById("lightbox-image"); const footerDiv = document.getElementById('footer'); footerDiv.style.display = "none"; lightboxImage.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${result.image}`; lightbox.style.display = "block"; }; const ahrefMedia = document.createElement('button'); ahrefMedia.setAttribute('class', 'styleOfButton'); ahrefMedia.onclick = openLightbox; const divLikeAndHearth = document.createElement('button'); divLikeAndHearth.setAttribute('class', 'displayDivLikeHearth'); const totalLikes = media.reduce((acc, item) => acc + item.likes, 0); console.log(totalLikes); divLikeAndHearth.addEventListener('click', function () { let likeCounter = result.likes; let liked = false; if (!liked) { likeCounter++; liked = true; document.getElementById(`${result.id}`).innerHTML = likeCounter; } else {} }) div.appendChild(anchor) ahrefMedia.appendChild(imageMedia); imgDiv.appendChild(btnFermerLightbox) btnFermerLightbox.appendChild(btnPrecedent) btnFermerLightbox.appendChild(btnSuivant) imgDiv.appendChild(divTestForClose) imgDiv.appendChild(divName) divTestForClose.appendChild(imageLightbox) divTestForClose.appendChild(nameOfLightbox) divName.appendChild(btnFermer) encore.appendChild(test); encore.appendChild(testLike); encore.appendChild(coucou) encore.appendChild(divLikeAndHearth) divLikeAndHearth.appendChild(testLike) divLikeAndHearth.appendChild(coucou) anchor.appendChild(ahrefMedia) anchor.appendChild(imgDiv) anchor.appendChild(encore) } else { const createElement = (type, attributes = {}, events = {}) => { const el = document.createElement(type); Object.entries(attributes).forEach(([key, value]) => { el.setAttribute(key, value); }); Object.entries(events).forEach(([event, handler]) => { el.addEventListener(event, handler); }); return el; }; const anchor = createElement("section", { class: "testo" }); const encore = createElement("div", { class: "displayFlex" }); const btnPrecedent = createElement("i", { class: "fa-solid fa-arrow-left" }, { click: () => { let lightboxImage = document.getElementById("lightbox-image"); lightboxImage.src = `assets/photo/${photographerName.split(" ")[0].replace("-", " ")}/${videox[i--]}`; } }); const btnSuivant = createElement("i", { class: "fa-solid fa-arrow-right" }, { click: () => { let lightboxImage = document.getElementById("lightbox-image"); lightboxImage.src = `assets/photo/${photographerName.split(" ")[0].replace("-", " ")}/${videox[i++]}`; } }); const divTestForClose = document.createElement('div'); const divName = document.createElement('div'); divName.setAttribute('id', 'btnClose') const btnFermer = document.createElement('i'); btnFermer.setAttribute('class', 'fa fa-times'); btnFermer.setAttribute('id', 'btnFermer') const btnFermerLightbox = createElement("span", { class: "styleBtnLightbox" }); const closeLightbox = () => { let lightbox = document.getElementById("lightboxx"); lightbox.style.display = "none"; imageLightbox.pause(); let footerDiv = document.getElementById("footer"); footerDiv.style.display = "block"; }; btnFermer.addEventListener("click", closeLightbox); const nameOfLightbox = createElement("p", {}, {}); nameOfLightbox.innerHTML = result.title; nameOfLightbox.textContent = result.title; nameOfLightbox.setAttribute('id', 'titleOfMedia') const imgDiv = createElement("div", { id: "lightboxx" }); const imageLightbox = createElement("video", { src: `assets/photo/${photographerName.split(" ")[0].replace("-", " ")}/${result.video}`, id: "lightbox-video" }); const ahrefMedia = document.createElement('button'); ahrefMedia.setAttribute('class', 'styleOfButton'); ahrefMedia.addEventListener('click', openLightbox); function openLightbox() { const lightbox = document.getElementById("lightboxx"); const lightboxImage = document.getElementById("lightbox-video"); lightboxImage.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${result.video}`; imageLightbox.play(); lightbox.style.display = "block"; const footerDiv = document.getElementById('footer'); footerDiv.style.display = "none"; } encore.setAttribute('class','displayFlex'); const video = document.createElement('video'); video.src = `assets/photo/${photographerName.split(' ')[0].replace('-', ' ')}/${result.video}`; video.setAttribute('class', 'videoSettings'); const test = document.createElement('p'); test.textContent = `${result.title}`; test.setAttribute('class', 'pForHearth'); const testLike = document.createElement('p'); testLike.textContent = `${result.likes}`; testLike.setAttribute('id', `${result.id}`); const coucou = document.createElement('i'); coucou.setAttribute('class', 'fas fa-heart'); const divLikeAndHearth = document.createElement('button'); divLikeAndHearth.setAttribute('class', 'displayDivLikeHearth'); divLikeAndHearth.addEventListener('click', function() { let likeCounter = result.likes; let liked = false; if (!liked) { likeCounter++; liked = true; document.getElementById(`${result.id}`).innerHTML = likeCounter; } }); let totalLikes = media.reduce((total, item) => total + item.likes, 0); const cTest = document.querySelector('#total'); cTest.textContent = totalLikes; div.appendChild(anchor) ahrefMedia.appendChild(video); imgDiv.appendChild(btnFermerLightbox) btnFermerLightbox.appendChild(btnPrecedent) btnFermerLightbox.appendChild(btnSuivant) btnFermerLightbox.appendChild(nameOfLightbox) imgDiv.appendChild(imageLightbox) imgDiv.appendChild(divName) imgDiv.appendChild(divTestForClose) divTestForClose.appendChild(imageLightbox) divTestForClose.appendChild(nameOfLightbox) divName.appendChild(btnFermer) encore.appendChild(test); encore.appendChild(divLikeAndHearth) divLikeAndHearth.appendChild(testLike) divLikeAndHearth.appendChild(coucou) anchor.appendChild(ahrefMedia) anchor.appendChild(imgDiv) anchor.appendChild(encore); } }) return(div) } return { mediaTrie, photographerMedia} } export {factoryPhoto} export {factoryMedia}
Editor is loading...