class MainApplication { constructor() { this.projects = []; this.currentProject = null; this.init(); } init() { this.loadProjects(); this.setupEventListeners(); this.setupDragAndDrop(); this.updateUI(); this.setupRealTimeUpdates(); } loadProjects() { try { const saved = localStorage.getItem('projects'); this.projects = saved ? JSON.parse(saved) : []; } catch (error) { console.error('Erreur chargement projets:', error); this.projects = []; } } saveProjects() { localStorage.setItem('projects', JSON.stringify(this.projects)); localStorage.setItem('hasUnsavedChanges', 'true'); } setupEventListeners() { // Nouveau projet document.getElementById('new-project')?.addEventListener('click', () => { this.showNewProjectModal(); }); // Création de projet document.getElementById('create-project')?.addEventListener('click', () => { this.createProject(); }); document.getElementById('cancel-project')?.addEventListener('click', () => { this.hideNewProjectModal(); }); // Gestion du chat document.getElementById('send-btn')?.addEventListener('click', () => { this.sendChatMessage(); }); document.getElementById('chat-input')?.addEventListener('keypress', (e) => { if (e.key === 'Enter') { this.sendChatMessage(); } }); // Export/Import document.getElementById('export-data')?.addEventListener('click', () => { this.exportData(); }); document.getElementById('import-data')?.addEventListener('click', () => { this.importData(); }); // Paramètres document.getElementById('settings')?.addEventListener('click', () => { this.showSettings(); }); // Gestion des paramètres de protection const protectionSettings = ['auto-backup', 'prevent-reset', 'encrypt-data', 'cloud-backup']; protectionSettings.forEach(setting => { document.getElementById(setting)?.addEventListener('change', (e) => { this.saveSetting(setting, e.target.checked); }); }); } showNewProjectModal() { const modal = document.getElementById('new-project-modal'); modal.classList.remove('hidden'); document.getElementById('project-name').focus(); } hideNewProjectModal() { const modal = document.getElementById('new-project-modal'); modal.classList.add('hidden'); document.getElementById('project-name').value = ''; } createProject() { const name = document.getElementById('project-name').value.trim(); const type = document.getElementById('project-type').value; if (!name) { this.showNotification('Veuillez entrer un nom pour le projet', 'error'); return; } const project = { id: Date.now().toString(), name: name, type: type, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), files: [], protected: true }; this.projects.push(project); this.saveProjects(); this.updateProjectsList(); this.hideNewProjectModal(); this.showNotification(`Projet "${name}" créé avec succès!`, 'success'); // Ajouter un message dans le chat this.addAIMessage(`Nouveau projet créé: ${name}. Je vais vous aider à le développer.`); } updateProjectsList() { const listElement = document.getElementById('projects-list'); if (!listElement) return; listElement.innerHTML = ''; this.projects.forEach(project => { const projectElement = document.createElement('div'); projectElement.className = 'project-item'; projectElement.innerHTML = `