import { readJson } from './readJson.js';
document.addEventListener('DOMContentLoaded', async function() {
const loadProjects = async () => {
try {
const data = await readJson('../data/projects.json');
return data;
} catch (error) {
console.error('Erreur lors du chargement des projets :', error);
return [];
}
}
// ===* ACTIONS SUR LA PAGE *===
const section = document.querySelector('section');
const divProjectsGrid = document.querySelector('.projects-grid');
const createProjectButton = document.querySelector('[data-id="creation-project-btn"]');
const divCreateProject = document.querySelector('.form-project');
const sectionProjects = document.querySelector('[data-id="projects"]');
if (divProjectsGrid) {
const data = await loadProjects();
if (data) {
const projects = Object.values(data);
console.log('Projets :', projects);
projects.forEach(project => {
let state = 'Actif';
if (!project.active) {
state = 'Inactif';
} else {
state = 'Actif';
}
const projectDiv = document.createElement('div');
projectDiv.className = 'card-projects';
projectDiv.innerHTML = `
${project.type}
Etat : ${state}
${project.name}
${project.description}
${project.technologies && project.technologies.length > 0 ? `
${project.technologies.map(tech => `${tech}`).join('')}
` : ''}
${project.link ? `Voir le projet` : ''}
`;
divProjectsGrid.appendChild(projectDiv);
const deleteButton = projectDiv.querySelector('[data-id="delete-project"]');
const editButton = projectDiv.querySelector('[data-id="edit-project"]');
deleteButton.addEventListener('click', async () => {
const confirmDelete = confirm(`Êtes-vous sûr de vouloir supprimer le projet "${project.name}" ?`);
if (confirmDelete) {
try {
window.location.href = `./?page=delete-project&id=${project.id}`;
} catch (error) {
console.error('Erreur lors de la suppression du projet :', error);
}
}
});
editButton.addEventListener('click', () => {
const projectId = editButton.getAttribute('data-project-id');
const projectToEdit = projects.find(p => p.id === projectId);
if (projectToEdit) {
// Remplir le formulaire avec les données du projet à modifier
document.getElementById('project-type').value = projectToEdit.type || '';
document.getElementById('project-name').value = projectToEdit.name || '';
document.getElementById('project-description').value = projectToEdit.description || '';
document.getElementById('project-image').value = projectToEdit.image || '';
document.getElementById('project-start-date').value = projectToEdit.start_date || '';
document.getElementById('project-end-date').value = projectToEdit.end_date || '';
// Pré-sélectionner les technologies si disponibles
if (projectToEdit.technologies && window.technologiesManager) {
window.technologiesManager.preselectTechnologies(projectToEdit.technologies);
}
// Afficher le formulaire et faire défiler vers celui-ci
divCreateProject.classList.remove('hidden');
createProjectButton.textContent = 'Fermer le formulaire';
createProjectButton.classList.remove('btn-success');
createProjectButton.classList.add('btn-danger');
// Scroll vers le formulaire
divCreateProject.scrollIntoView({ behavior: 'smooth' });
}
});
});
}
}
if(createProjectButton) {
console.log("Create project button found");
createProjectButton.addEventListener('click', () => {
divCreateProject.classList.toggle('hidden');
if( divCreateProject.classList.contains('hidden')) {
createProjectButton.textContent = 'Ajouter projet';
createProjectButton.classList.remove('btn-danger');
createProjectButton.classList.add('btn-success');
// Réinitialiser le formulaire
const form = divCreateProject.querySelector('form');
if (form) {
form.reset();
// Réinitialiser aussi les technologies
if (window.technologiesManager) {
window.technologiesManager.clearAllSelections();
}
}
}
else {
createProjectButton.textContent = 'Fermer le formulaire';
createProjectButton.classList.remove('btn-success');
createProjectButton.classList.add('btn-danger');
// Scroll vers le formulaire
divCreateProject.scrollIntoView({ behavior: 'smooth' });
}
})
}
});