2026-06-05 17:44:02 +02:00
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
2026-07-01 17:38:56 +02:00
|
|
|
|
2026-06-05 17:44:02 +02:00
|
|
|
const nextButtons = document.querySelectorAll("button.next");
|
|
|
|
|
|
2026-06-11 18:40:52 +02:00
|
|
|
const projects = document.querySelectorAll(".projects-index .project");
|
|
|
|
|
const firstProject = projects[0];
|
|
|
|
|
const lastProject = projects[projects.length - 1];
|
|
|
|
|
|
2026-06-17 12:25:23 +02:00
|
|
|
const firstSlide = (project) =>
|
|
|
|
|
project.querySelector(".project-slideshow > .slide");
|
|
|
|
|
const lastSlide = (project) => {
|
|
|
|
|
const slides = project.querySelectorAll(".project-slideshow > .slide");
|
|
|
|
|
return slides[slides.length - 1];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const firstSlideFirstProject = firstSlide(firstProject);
|
|
|
|
|
const firstSlideLastProject = firstSlide(lastProject);
|
|
|
|
|
const lastSlideLastProject = lastSlide(lastProject);
|
2026-06-11 18:40:52 +02:00
|
|
|
|
|
|
|
|
function goToNextPicture() {
|
|
|
|
|
const selectedProject = document.querySelector(".project.selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
const activeSlide = selectedProject.querySelector(
|
|
|
|
|
".project-slideshow > .slide.active",
|
2026-06-11 18:40:52 +02:00
|
|
|
);
|
2026-06-17 12:25:23 +02:00
|
|
|
const lastSlideSelected = lastSlide(selectedProject);
|
|
|
|
|
const nextProject = selectedProject.nextElementSibling;
|
2026-06-11 18:40:52 +02:00
|
|
|
|
2026-07-01 17:38:56 +02:00
|
|
|
activeSlide.classList.remove("active");
|
2026-06-17 12:25:23 +02:00
|
|
|
if (activeSlide !== lastSlideSelected) {
|
|
|
|
|
activeSlide.nextElementSibling.classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
} else {
|
2026-07-01 17:38:56 +02:00
|
|
|
firstSlide(selectedProject).classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function goToPrevPicture() {
|
|
|
|
|
const selectedProject = document.querySelector(".project.selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
const activeSlide = selectedProject.querySelector(
|
|
|
|
|
".project-slideshow > .slide.active",
|
2026-06-11 18:40:52 +02:00
|
|
|
);
|
2026-06-17 12:25:23 +02:00
|
|
|
const firstSlideSelected = firstSlide(selectedProject);
|
|
|
|
|
const prevProject = selectedProject.previousElementSibling;
|
2026-06-11 18:40:52 +02:00
|
|
|
|
2026-07-01 17:38:56 +02:00
|
|
|
activeSlide.classList.remove("active");
|
2026-06-17 12:25:23 +02:00
|
|
|
if (activeSlide !== firstSlideSelected) {
|
|
|
|
|
activeSlide.previousElementSibling.classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
} else {
|
2026-07-01 17:38:56 +02:00
|
|
|
lastSlide(selectedProject).classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function goToPrevProject() {
|
|
|
|
|
const selectedProject = document.querySelector(".project.selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
const activeSlide = selectedProject.querySelector(
|
|
|
|
|
".project-slideshow > .slide.active",
|
2026-06-11 18:40:52 +02:00
|
|
|
);
|
2026-06-17 12:25:23 +02:00
|
|
|
const prevProject = selectedProject.previousElementSibling;
|
2026-06-11 18:40:52 +02:00
|
|
|
|
2026-06-17 12:25:23 +02:00
|
|
|
activeSlide.classList.remove("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
selectedProject.classList.remove("selected");
|
|
|
|
|
if (selectedProject !== firstProject) {
|
|
|
|
|
prevProject.classList.add("selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
firstSlide(prevProject).classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
} else {
|
|
|
|
|
lastProject.classList.add("selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
firstSlideLastProject.classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function goToNextProject() {
|
|
|
|
|
const selectedProject = document.querySelector(".project.selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
const activeSlide = selectedProject.querySelector(
|
|
|
|
|
".project-slideshow > .slide.active",
|
2026-06-11 18:40:52 +02:00
|
|
|
);
|
2026-06-17 12:25:23 +02:00
|
|
|
const nextProject = selectedProject.nextElementSibling;
|
2026-06-11 18:40:52 +02:00
|
|
|
|
2026-06-17 12:25:23 +02:00
|
|
|
activeSlide.classList.remove("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
selectedProject.classList.remove("selected");
|
|
|
|
|
if (selectedProject !== lastProject) {
|
|
|
|
|
nextProject.classList.add("selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
firstSlide(nextProject).classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
} else {
|
|
|
|
|
firstProject.classList.add("selected");
|
2026-06-17 12:25:23 +02:00
|
|
|
firstSlideFirstProject.classList.add("active");
|
2026-06-11 18:40:52 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
nextButtons.forEach((nextButton) => {
|
|
|
|
|
nextButton.addEventListener("click", goToNextPicture);
|
2026-06-05 17:44:02 +02:00
|
|
|
});
|
|
|
|
|
|
2026-06-11 18:40:52 +02:00
|
|
|
document.addEventListener("keyup", (event) => {
|
|
|
|
|
if (event.key === "ArrowRight") goToNextPicture();
|
|
|
|
|
if (event.key === "ArrowLeft") goToPrevPicture();
|
|
|
|
|
if (event.key === "ArrowUp") goToPrevProject();
|
|
|
|
|
if (event.key === "ArrowDown") goToNextProject();
|
2026-06-05 17:44:02 +02:00
|
|
|
});
|
|
|
|
|
});
|