document.addEventListener("DOMContentLoaded", function () { // Get project name from URL const urlParams = new URLSearchParams(window.location.search); const projectName = urlParams.get("name"); // Simulated "database" of projects //TODO : Add more text to the project descriptions const projects = { "mastermind": { title: "Projet MasterMind", subtitle: "Un projet de création du jeu MasterMind.", description: "Le but de ce projet était de réaliser par groupe de 4 personnes sur une durée de 3 mois un jeu de MasterMind en .net Maui.", images: [ { src: "img/project/scolaire/mastermind_menu.png", description: "Menu principal du jeu. Les joueurs peuvent consulter les meilleurs scores, lire les règles et lancer une partie." }, { src: "img/project/scolaire/mastermind_game.png", description: "Plateau de jeux durant une partie. Les joueurs jouent en cliquant sur les cercles de couleurs afin de les placer sur le plateau." }, { src: "img/project/scolaire/mastermind_login.png", description: "Écran de début de partie. Les joueurs peuvent choisir leurs pseudo ainsi que la difficulté. La difficulté influe sur le nombre de couleurs et d'essaies." } ], technologies: ["csharp", "xaml", "json"] }, // ✅ Fixed comma placement "etugestion": { // ✅ Removed incorrect semicolon before this key title: "EtuGestion", subtitle: "Création d'un outil de gestion en ligne de commande pour une école.", description: "Ce projet réalisé en C par groupe de 2 à l'aide de l'outil git nécessitait d'avoir différentes interfaces pour des élèves, des professeurs et des jury...", images: [ { src: "img/project/scolaire/brico_menu.png", description: "Menu principal de l'outil." }, { src: "img/project/scolaire/brico_add.png", description: "Écran de connexion permettant à l'utilisateur d'accéder à ses scores enregistrés." }, // ✅ Added missing comma here { src: "img/project/scolaire/brico_list.png", description: "Écran permettant d'ajouter de nouveaux éléments à la base de données." } ], technologies: ["c", "git"] }, "linux_install": { title: "Linux et shell", subtitle: "Installation d'une distribution Linux et création de scripts shell.", description: `Dans le cadre de ma première année de BUT informatique, j'ai été amené à installer une distribution Linux (Arch Linux) qui est rapidement devenue mon outil de travail principal.`, images: [ { src: "img/project/scolaire/arch_main.png", description: "Écran principal après installation d'Arch Linux." }, { src: "img/project/scolaire/arch_script1.png", description: "Exemple de script shell automatisant une tâche quotidienne." } ], technologies: ["bash"] }, "monster_battle": { title: "Monster Battle", subtitle: "Un projet de création d'un jeu de combat tour par tour.", description: "Le but du projet était de créer en python un jeu de combat au tour par tour avec une interface graphique. L'objectif était d'apprendre la librairie Tkinter.", images: [ { src: "img/project/perso/monsterBattle_logo.png", description: "Logo du jeu. Première page qui apparaît au démarrage du jeu" }, { src: "img/project/perso/monsterBattle_menu.png", description: "Menu du jeu permettant de lancer des partis et d'ouvrir les paramètres." }, { src: "img/project/perso/monsterBattle_main.png", description: "Arène de combat, le joueur peut sélectionner le combattant avec lequel il souhaite attaquer ainsi que le combattant adverse qu'il souhaite attaquer en cliquand dessus." } ], technologies: ["python", "tkinter"] }, // ✅ Fixed comma placement "etugestion": { // ✅ Removed incorrect semicolon before this key title: "EtuGestion", subtitle: "Création d'un outil de gestion en ligne de commande pour une école.", description: "Ce projet réalisé en C par groupe de 2 à l'aide de l'outil git nécessitait d'avoir différentes interfaces pour des élèves, des professeurs et des jury...", images: [ { src: "img/project/scolaire/brico_menu.png", description: "Menu principal de l'outil." }, { src: "img/project/scolaire/brico_add.png", description: "Interace du jury permettant d'attribuer et d'afficher des notes." }, // ✅ Added missing comma here { src: "img/project/scolaire/brico_list.png", description: "Exemple du listing des stages disponibles avec les étudiants accepté ou en attente." } ], technologies: ["c", "git"] }, "linux_install": { title: "Linux et shell", subtitle: "Installation d'une distribution Linux et création de scripts shell.", description: `Dans le cadre de ma première année de BUT informatique, j'ai été amené à installer une distribution Linux (Arch Linux) qui est rapidement devenue mon outil de travail principal.`, images: [ { src: "img/project/scolaire/arch_main.png", description: "Écran principal après installation d'Arch Linux." }, { src: "img/project/scolaire/arch_script1.png", description: "Exemple de script shell automatisant une tâche quotidienne." } ], technologies: ["bash"] } }; // Get project data or fallback const project = projects[projectName] || { title: "Projet Inconnu", subtitle: "Désolé, ce projet n'existe pas.", description: "Nous n'avons pas trouvé d'informations sur ce projet.", images: [], technologies: [] }; // Update HTML content document.getElementById("project-title").innerText = project.title; document.getElementById("project-subtitle").innerText = project.subtitle; document.getElementById("project-description").innerText = project.description; const galleryContainer = document.getElementById("project-gallery"); project.images.forEach((imgObj, index) => { const wrapper = document.createElement("div"); wrapper.classList.add("image-wrapper"); const img = document.createElement("img"); img.src = imgObj.src; img.alt = `Image ${index + 1}`; const desc = document.createElement("div"); desc.classList.add("image-description"); desc.innerText = imgObj.description; // Custom description here wrapper.appendChild(img); wrapper.appendChild(desc); galleryContainer.appendChild(wrapper); }); // Update technologies const techContainer = document.getElementById("project-tech-icons"); project.technologies.forEach(tech => { const div = document.createElement("div"); div.classList.add("tech-box", `${tech}-box`); // Ensure the correct class is added const img = document.createElement("img"); img.src = `logos/${tech}.jpeg`; img.alt = tech.toUpperCase(); const text = document.createElement("span"); text.innerText = tech.toUpperCase(); div.appendChild(img); div.appendChild(text); techContainer.appendChild(div); }); // Fade-in effect when page loads document.body.classList.remove("fade-out"); });