document.addEventListener('DOMContentLoaded', function() { const table = document.getElementById('objectTable'); if (!table) return; const selectionMode = table.dataset.selectionMode || 'single'; const toggleSelectAllBtn = document.getElementById('toggleSelectAllBtn'); const editBtn = document.getElementById('editBtn'); const deleteBtn = document.getElementById('deleteBtn'); if (table.dataset.selectionMode === 'multiple') { toggleSelectAllBtn.style.display = 'inline-block'; } table.addEventListener('click', function(e) { const row = e.target.closest('.selectable-row'); if (!row) return; const checkbox = row.querySelector('input[type="checkbox"]'); if (!checkbox) return; if (selectionMode === 'single') { table.querySelectorAll('.selected-row').forEach(selectedRow => { if (selectedRow !== row) { selectedRow.classList.remove('selected-row'); selectedRow.querySelector('input[type="checkbox"]').checked = false; } }); } row.classList.toggle('selected-row'); checkbox.checked = !checkbox.checked; const selectedRows = table.querySelectorAll('.selected-row'); document.querySelectorAll('[data-requires-selection]').forEach(button => { button.disabled = selectedRows.length === 0; }); }); let allSelected = false; toggleSelectAllBtn.addEventListener('click', function() { const rows = table.querySelectorAll('.selectable-row'); allSelected = !allSelected; rows.forEach(row => { const checkbox = row.querySelector('input[type="checkbox"]'); checkbox.checked = allSelected; row.classList.toggle('selected-row', allSelected); }); document.querySelectorAll('[data-requires-selection]').forEach(button => { button.disabled = !allSelected; }); this.textContent = allSelected ? 'Unselect All' : 'Select All'; }); // Edit button click handler if (editBtn) { editBtn.addEventListener('click', function() { const selectedRow = table.querySelector('.selected-row'); if (selectedRow) { const objectId = selectedRow.dataset.id; const editUrl = editBtn.dataset.url.replace('0', objectId); window.location.href = editUrl; } }); } // Delete modal logic const deleteModal = document.getElementById('deleteModal'); const cancelDelete = document.getElementById('cancelDelete'); const confirmDelete = document.getElementById('confirmDelete'); let selectedId = null; if (deleteBtn) { deleteBtn.addEventListener('click', function() { const selectedRow = table.querySelector('.selected-row'); if (selectedRow) { selectedId = selectedRow.dataset.id; deleteModal.style.display = 'block'; } }); } cancelDelete.addEventListener('click', function() { deleteModal.style.display = 'none'; }); confirmDelete.addEventListener('click', function() { if (selectedId) { const deleteUrl = deleteBtn.dataset.url.replace('0', selectedId); fetch(deleteUrl, { method: 'POST', headers: { 'X-CSRFToken': getCookie('csrftoken') }, }) .then(response => { if (response.ok) { window.location.reload(); // This reloads the page after success } else { alert('Error deleting item'); } }) .catch(error => { console.error('Error:', error); alert('Error deleting item'); }); } deleteModal.style.display = 'none'; }); window.addEventListener('click', function(event) { if (event.target === deleteModal) { deleteModal.style.display = 'none'; } }); function getCookie(name) { let cookieValue = null; if (document.cookie && document.cookie !== '') { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } });