let allMovies = []; // Stockage local de la liste entière async function loadList() { const response = await fetch('RequestHandler.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'getMyList' }) }); const data = await response.json(); if (data.success) { allMovies = data.movies; renderList(); } } function renderList() { const grid = document.getElementById('myListGrid'); const sort = document.getElementById('sortOrder').value; const type = document.getElementById('filterType').value; const status = document.getElementById('filterStatus').value; // 1. Filtrage let filtered = allMovies.filter(m => { const matchType = (type === 'all' || m.type === type); const matchStatus = (status === 'all' || m.vu == status); return matchType && matchStatus; }); // 2. Tri filtered.sort((a, b) => { if (sort === 'titre_asc') return a.titre.localeCompare(b.titre); if (sort === 'date_ajout_asc') return new Date(a.date_ajout) - new Date(b.date_ajout); if (sort === 'date_ajout_desc') return new Date(b.date_ajout) - new Date(a.date_ajout); }); // 3. Affichage grid.innerHTML = ''; document.getElementById('movieCount').innerText = filtered.length; filtered.forEach(m => { const card = document.createElement('div'); card.className = `relative group bg-slate-800 rounded-xl overflow-hidden border ${m.vu == 1 ? 'border-green-500/50' : 'border-slate-700'}`; card.innerHTML = `

${m.titre}

`; grid.appendChild(card); }); } // Actions rapides async function toggleVu(id) { const res = await fetch('RequestHandler.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'toggleViewed', params: { movie_id: id } }) }); const data = await res.json(); if (data.success) { // On met à jour localement pour ne pas recharger toute l'API const movie = allMovies.find(m => m.id == id); movie.vu = movie.vu == 1 ? 0 : 1; renderList(); } } async function deleteMovie(id) { if(!confirm("Supprimer ce film de ta liste ?")) return; const res = await fetch('RequestHandler.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'deleteMovie', params: { movie_id: id } }) }); const data = await res.json(); if (data.success) { allMovies = allMovies.filter(m => m.id != id); renderList(); } } loadList();