Actualiser js/admin.js

This commit is contained in:
2026-06-18 14:18:27 +02:00
parent 15876601fc
commit 87a800ea9b
+38 -4
View File
@@ -5,8 +5,8 @@ let currentAdminTab = 'critique';
// ── INITIALISATION ── // ── INITIALISATION ──
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {
loadDashboardData(); loadDashboardData();
initEventListeners();
// Attacher l'événement pour la modale de suppression
const confirmBtn = document.getElementById('confirm-btn'); const confirmBtn = document.getElementById('confirm-btn');
if(confirmBtn) { if(confirmBtn) {
confirmBtn.addEventListener('click', () => { confirmBtn.addEventListener('click', () => {
@@ -16,6 +16,31 @@ document.addEventListener('DOMContentLoaded', () => {
} }
}); });
function initEventListeners() {
// 1. Soumission du formulaire Film
const filmForm = document.getElementById('film-form');
if (filmForm) filmForm.addEventListener('submit', saveFilmForm);
// 2. Import CSV
const csvInput = document.getElementById('csv-file');
if (csvInput) csvInput.addEventListener('change', (e) => handleCsvUpload(e.target));
// 3. Sauvegarde du mot de passe (Adapter l'ID si nécessaire selon votre HTML)
const savePwdBtn = document.getElementById('save-password-btn');
if (savePwdBtn) savePwdBtn.addEventListener('click', saveNewPassword);
// 4. Fermeture générique des modales (clic sur la croix ou sur le fond sombre)
document.addEventListener('click', (e) => {
if (e.target.classList.contains('modal-close') || e.target.closest('.modal-close')) {
const overlay = e.target.closest('.overlay');
if (overlay) overlay.classList.remove('open');
}
if (e.target.classList.contains('overlay')) {
e.target.classList.remove('open');
}
});
}
async function loadDashboardData() { async function loadDashboardData() {
try { try {
const res = await fetch(`${API_URL}?action=get_films`); const res = await fetch(`${API_URL}?action=get_films`);
@@ -164,21 +189,27 @@ async function saveFilmForm(e) {
} }
// ── MODALES & UI ── // ── MODALES & UI ──
function toggleFormFields() {
const critFields = document.getElementById('form-critique-fields');
const vidFields = document.getElementById('form-videotheque-fields');
if(critFields) critFields.style.display = currentAdminTab === 'critique' ? 'block' : 'none';
if(vidFields) vidFields.style.display = currentAdminTab === 'videotheque' ? 'block' : 'none';
}
function switchAdminTab(tabName) { function switchAdminTab(tabName) {
currentAdminTab = tabName; currentAdminTab = tabName;
document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active')); document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
const btn = document.getElementById(`btn-tab-${tabName}`); const btn = document.getElementById(`btn-tab-${tabName}`);
if(btn) btn.classList.add('active'); if(btn) btn.classList.add('active');
document.getElementById('form-critique-fields').style.display = tabName === 'critique' ? 'block' : 'none'; toggleFormFields();
document.getElementById('form-videotheque-fields').style.display = tabName === 'videotheque' ? 'block' : 'none';
renderAdminTable(); renderAdminTable();
} }
function openAddModal() { function openAddModal() {
document.getElementById('film-form').reset(); document.getElementById('film-form').reset();
document.getElementById('f-id').value = ''; document.getElementById('f-id').value = '';
toggleFormFields(); // Affiche les bons champs selon l'onglet actif
document.getElementById('admin-modal').classList.add('open'); document.getElementById('admin-modal').classList.add('open');
} }
@@ -192,6 +223,8 @@ function openEditModal(id) {
document.getElementById('f-director').value = item.director || ''; document.getElementById('f-director').value = item.director || '';
document.getElementById('f-poster').value = item.poster || ''; document.getElementById('f-poster').value = item.poster || '';
toggleFormFields(); // Affiche les bons champs selon l'onglet actif
if(currentAdminTab === 'critique') { if(currentAdminTab === 'critique') {
document.getElementById('f-rating').value = item.rating || 3; document.getElementById('f-rating').value = item.rating || 3;
document.getElementById('f-review').value = item.review || ''; document.getElementById('f-review').value = item.review || '';
@@ -239,6 +272,7 @@ async function handleCsvUpload(input) {
if (!input.files[0]) return; if (!input.files[0]) return;
const formData = new FormData(); const formData = new FormData();
formData.append('csv_file', input.files[0]); formData.append('csv_file', input.files[0]);
formData.append('type', currentAdminTab); // BUG CORRIGÉ : On envoie le type de l'onglet actif
await fetch(`${API_URL}?action=import_csv`, { await fetch(`${API_URL}?action=import_csv`, {
method: 'POST', method: 'POST',
headers: { 'Authorization': localStorage.getItem('token') }, headers: { 'Authorization': localStorage.getItem('token') },