diff --git a/watchgether/index.php b/watchgether/index.php index 5739100..0d9c6b7 100644 --- a/watchgether/index.php +++ b/watchgether/index.php @@ -20,55 +20,7 @@
- - + \ No newline at end of file diff --git a/watchgether/js/list.js b/watchgether/js/list.js new file mode 100644 index 0000000..c8bf981 --- /dev/null +++ b/watchgether/js/list.js @@ -0,0 +1,92 @@ +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(); \ No newline at end of file diff --git a/watchgether/ma-liste/index.php b/watchgether/ma-liste/index.php index 115d1f1..d17a2cc 100644 --- a/watchgether/ma-liste/index.php +++ b/watchgether/ma-liste/index.php @@ -50,8 +50,8 @@ - + - + \ No newline at end of file diff --git a/watchgether/modal-template.php b/watchgether/modal-template.php new file mode 100644 index 0000000..e8c80b2 --- /dev/null +++ b/watchgether/modal-template.php @@ -0,0 +1,48 @@ + \ No newline at end of file