From e621a59815946774e8f915d5533500ce08a677e3 Mon Sep 17 00:00:00 2001 From: olechrib <olechrib@stud.ntnu.no> Date: Tue, 5 Apr 2022 11:54:59 +0200 Subject: [PATCH] long method in scripts/gallery.js refactored --- frontend/www/scripts/gallery.js | 101 ++++++++++++++++---------------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/frontend/www/scripts/gallery.js b/frontend/www/scripts/gallery.js index 300ff47..4bb3ecf 100644 --- a/frontend/www/scripts/gallery.js +++ b/frontend/www/scripts/gallery.js @@ -1,14 +1,58 @@ let goBackButton; +let filesDiv = document.getElementById("img-collection"); +let filesDeleteDiv = document.getElementById("img-collection-delete"); +const currentImageFileElement = document.querySelector("#current"); +let isFirstImg = true; +let fileCounter = 0; + +function handleImageElements(){ + const otherImageFileElements = document.querySelectorAll(".imgs img"); + const selectedOpacity = 0.6; + otherImageFileElements[0].style.opacity = selectedOpacity; -function addImages(workoutData){ - let filesDiv = document.getElementById("img-collection"); - let filesDeleteDiv = document.getElementById("img-collection-delete"); + otherImageFileElements.forEach((imageFileElement) => imageFileElement.addEventListener("click", (event) => { + //Changes the main image + currentImageFileElement.src = event.target.src; - const currentImageFileElement = document.querySelector("#current"); - let isFirstImg = true; + //Adds the fade animation + currentImageFileElement.classList.add('fade-in') + setTimeout(() => currentImageFileElement.classList.remove('fade-in'), 500); - let fileCounter = 0; + //Sets the opacity of the selected image to 0.4 + otherImageFileElements.forEach((imageFileElement) => imageFileElement.style.opacity = 1) + event.target.style.opacity = selectedOpacity; + })); +} + +function appendImage(file){ + let deleteImgButton = document.createElement("input"); + deleteImgButton.type = "button"; + deleteImgButton.className = "btn btn-close"; + deleteImgButton.id = file.url.split("/")[file.url.split("/").length - 2]; + deleteImgButton.addEventListener( + 'click', + () => handleDeleteImgClick(deleteImgButton.id, + "DELETE", + `Could not delete workout ${deleteImgButton.id}!`, + HOST, + ["jpg", "png", "gif", "jpeg", "JPG", "PNG", "GIF", "JPEG"] + )); + filesDeleteDiv.appendChild(deleteImgButton); + + let img = document.createElement("img"); + img.src = file.file; + filesDiv.appendChild(img); + deleteImgButton.style.left = `${(fileCounter % 4) * 191}px`; + deleteImgButton.style.top = `${Math.floor(fileCounter / 4) * 105}px`; + + if(isFirstImg){ + currentImageFileElement.src = file.file; + isFirstImg = false; + } + fileCounter++; +} +function addImages(workoutData){ for (let file of workoutData.files) { let a = document.createElement("a"); a.href = file.file; @@ -19,34 +63,10 @@ function addImages(workoutData){ let isImage = ["jpg", "png", "gif", "jpeg", "JPG", "PNG", "GIF", "JPEG"].includes(a.text.split(".")[1]); if(isImage){ - let deleteImgButton = document.createElement("input"); - deleteImgButton.type = "button"; - deleteImgButton.className = "btn btn-close"; - deleteImgButton.id = file.url.split("/")[file.url.split("/").length - 2]; - deleteImgButton.addEventListener( - 'click', - () => handleDeleteImgClick(deleteImgButton.id, - "DELETE", - `Could not delete workout ${deleteImgButton.id}!`, - HOST, - ["jpg", "png", "gif", "jpeg", "JPG", "PNG", "GIF", "JPEG"] - )); - filesDeleteDiv.appendChild(deleteImgButton); - - let img = document.createElement("img"); - img.src = file.file; - - filesDiv.appendChild(img); - deleteImgButton.style.left = `${(fileCounter % 4) * 191}px`; - deleteImgButton.style.top = `${Math.floor(fileCounter / 4) * 105}px`; - - if(isFirstImg){ - currentImageFileElement.src = file.file; - isFirstImg = false; - } - fileCounter++; + appendImage(file); } } + handleImageElements(); } @@ -64,23 +84,6 @@ function handleWorkoutData(workoutData){ noImageText.classList.add("hide"); addImages(workoutData); - - const otherImageFileElements = document.querySelectorAll(".imgs img"); - const selectedOpacity = 0.6; - otherImageFileElements[0].style.opacity = selectedOpacity; - - otherImageFileElements.forEach((imageFileElement) => imageFileElement.addEventListener("click", (event) => { - //Changes the main image - currentImageFileElement.src = event.target.src; - - //Adds the fade animation - currentImageFileElement.classList.add('fade-in') - setTimeout(() => currentImageFileElement.classList.remove('fade-in'), 500); - - //Sets the opacity of the selected image to 0.4 - otherImageFileElements.forEach((imageFileElement) => imageFileElement.style.opacity = 1) - event.target.style.opacity = selectedOpacity; - })); } async function retrieveWorkoutImages(id) { -- GitLab