Actualiser js/admin.js

This commit is contained in:
2026-06-18 17:00:24 +02:00
parent f550371731
commit db48dbdf73
+17 -29
View File
@@ -20,7 +20,9 @@ function initEventListeners() {
const filmForm = document.getElementById('film-form');
if (filmForm) filmForm.addEventListener('submit', saveFilmForm);
// Fermeture des modales en cliquant sur le fond ou la croix
const csvInput = document.getElementById('csv-file');
if (csvInput) csvInput.addEventListener('change', (e) => handleCsvUpload(e.target));
document.addEventListener('click', (e) => {
if (e.target.classList.contains('modal-close') || e.target.closest('.modal-close')) {
const overlay = e.target.closest('.overlay');
@@ -32,10 +34,9 @@ function initEventListeners() {
});
}
/ Remplacez la fonction loadDashboardData existante par celle-ci
// ── CHARGEMENT DES DONNÉES (Anti-cache) ──
async function loadDashboardData() {
try {
// NOUVEAU : cache: 'no-store' oblige le navigateur à récupérer la vraie donnée
const res = await fetch(`${API_URL}?action=get_films`, { cache: 'no-store' });
allItems = await res.json();
@@ -116,7 +117,7 @@ function closeConfirmModal() {
pendingDeleteAction = null;
}
// Remplacez la fonction executeBulkDelete existante par celle-ci
// ── ACTIONS CRUD (SUPPRESSION SÉCURISÉE) ──
async function executeBulkDelete() {
const ids = Array.from(document.querySelectorAll('.film-checkbox:checked')).map(cb => cb.value);
if (ids.length === 0) return;
@@ -128,9 +129,7 @@ async function executeBulkDelete() {
headers: { 'Authorization': localStorage.getItem('token'), 'Content-Type': 'application/json' },
body: JSON.stringify({ ids, type: currentAdminTab })
});
// NOUVEAU : Si le serveur renvoie une erreur, on lève une exception
if (!res.ok) throw new Error("Erreur du serveur lors de la suppression");
if (!res.ok) throw new Error("Erreur serveur lors de la suppression multiple.");
document.getElementById('bulk-actions-bar').style.display = 'none';
const selectAll = document.getElementById('select-all-checkbox');
@@ -143,7 +142,6 @@ async function executeBulkDelete() {
});
}
// Remplacez la fonction deleteSingleFilm existante par celle-ci
async function deleteSingleFilm(id) {
showConfirmModal(async () => {
try {
@@ -151,9 +149,7 @@ async function deleteSingleFilm(id) {
method: 'DELETE',
headers: { 'Authorization': localStorage.getItem('token') }
});
if (!res.ok) throw new Error("Erreur du serveur lors de la suppression unique");
if (!res.ok) throw new Error("Erreur serveur lors de la suppression.");
loadDashboardData();
} catch (err) {
console.error('Erreur delete :', err);
@@ -261,9 +257,7 @@ async function saveFilmForm(e) {
});
closeAdminModal();
loadDashboardData();
} catch (err) {
console.error('Erreur lors de la sauvegarde :', err);
}
} catch (err) { console.error('Erreur sauvegarde :', err); }
}
// ── IMPORT CSV ──
@@ -282,23 +276,22 @@ async function handleCsvUpload(input) {
body: formData
});
input.value = '';
closeConfigModal();
loadDashboardData();
} catch (err) {
console.error('Erreur lors de l\'import CSV :', err);
}
} catch (err) { console.error('Erreur import CSV :', err); }
}
// ── SAUVEGARDE DE LA CLÉ TMDB ──
// ── SAUVEGARDE CLÉ TMDB ──
function saveTmdbKey() {
const input = document.getElementById('tmdb-key-input');
if (input && input.value) {
localStorage.setItem('tmdb_key', input.value);
alert('Clé TMDB sauvegardée localement avec succès.');
alert('Clé sauvegardée localement.');
closeConfigModal();
}
}
// ── MISE A JOUR DU MOT DE PASSE ──
// ── SAUVEGARDE MOT DE PASSE ──
async function saveNewPassword() {
const pwdInput = document.getElementById('new-password-input');
const pwdConfirm = document.getElementById('new-password-confirm');
@@ -321,10 +314,7 @@ async function saveNewPassword() {
try {
const response = await fetch(`${API_URL}?action=update_password`, {
method: 'POST',
headers: {
'Authorization': localStorage.getItem('token'),
'Content-Type': 'application/json'
},
headers: { 'Authorization': localStorage.getItem('token'), 'Content-Type': 'application/json' },
body: JSON.stringify({ new_password: pwdInput.value })
});
@@ -334,10 +324,8 @@ async function saveNewPassword() {
pwdConfirm.value = '';
errorMsg.style.display = "none";
closePasswordModal();
alert('Mot de passe mis à jour avec succès.');
loadDashboardData(); // Recharge pour faire disparaître le bandeau orange si existant
alert('Mot de passe mis à jour.');
loadDashboardData();
}
} catch (err) {
console.error('Erreur lors de la mise à jour du mot de passe :', err);
}
} catch (err) { console.error('Erreur mise à jour mot de passe :', err); }
}