document.addEventListener('DOMContentLoaded', () => { // Add modal functionality const addModal = document.querySelector('add-modal'); const addBtn = document.querySelector('data-table').shadowRoot.getElementById('addCustomerBtn'); addBtn.addEventListener('click', () => { addModal.openModal(); }); // Handle new customer addition document.addEventListener('add-customer', (e) => { const newCustomer = e.detail; addCustomerToTable(newCustomer); }); function addCustomerToTable(customer) { const tableBody = document.querySelector('data-table').shadowRoot.querySelector('tbody'); const row = document.createElement('tr'); row.innerHTML = ` ${customer.phone} ${customer.name} ${customer.facebook ? 'View' : ''} ${customer.date} ${customer.report1} ${customer.report2} ${customer.report3} `; tableBody.appendChild(row); } // Sample data - in real app this would come from API const sampleData = [ { phone: '0987654321', name: 'Nguyen Van A', facebook: 'facebook.com/nguyenvana', date: '2023-05-15', report1: 'Done', report2: 'Pending', report3: 'Not started' }, { phone: '0123456789', name: 'Tran Thi B', facebook: 'facebook.com/tranthib', date: '2023-05-16', report1: 'Done', report2: 'Done', report3: 'Pending' } ]; // Role switching functionality document.addEventListener('click', (e) => { if (e.target.classList.contains('role-btn')) { const buttons = document.querySelectorAll('.role-btn'); buttons.forEach(btn => { btn.classList.remove('active'); btn.classList.add('inactive'); }); e.target.classList.remove('inactive'); e.target.classList.add('active'); // Here you would adjust UI based on role const role = e.target.dataset.role; console.log(`Switched to ${role} mode`); } }); // Initialize table with sample data const tableBody = document.querySelector('data-table').shadowRoot.querySelector('tbody'); sampleData.forEach(item => { const row = document.createElement('tr'); row.innerHTML = ` ${item.phone} ${item.name} View ${item.date} ${item.report1} ${item.report2} ${item.report3} `; tableBody.appendChild(row); }); // Add event listeners for table actions tableBody.addEventListener('click', (e) => { if (e.target.classList.contains('edit-btn')) { const row = e.target.closest('tr'); const cells = row.querySelectorAll('td'); const customerData = { phone: cells[0].textContent, name: cells[1].textContent, facebook: cells[2].querySelector('a')?.href.replace('https://', ''), date: cells[3].textContent, report1: cells[4].textContent, report2: cells[5].textContent, report3: cells[6].textContent }; // Open modal with existing data const modal = document.querySelector('add-modal'); modal.shadowRoot.getElementById('phone').value = customerData.phone; modal.shadowRoot.getElementById('name').value = customerData.name; modal.shadowRoot.getElementById('facebook').value = customerData.facebook || ''; modal.shadowRoot.getElementById('date').value = customerData.date; modal.shadowRoot.getElementById('report1').value = customerData.report1; modal.shadowRoot.getElementById('report2').value = customerData.report2; modal.shadowRoot.getElementById('report3').value = customerData.report3; modal.openModal(); // Remove old row after edit modal.addEventListener('add-customer', () => { row.remove(); }, { once: true }); } else if (e.target.classList.contains('delete-btn')) { if (confirm('Are you sure you want to delete this customer?')) { e.target.closest('tr').remove(); } } }); // Search functionality const searchInput = document.querySelector('data-table').shadowRoot.querySelector('input'); searchInput.addEventListener('input', (e) => { const searchTerm = e.target.value.toLowerCase(); const rows = tableBody.querySelectorAll('tr'); rows.forEach(row => { const cells = row.querySelectorAll('td'); let rowMatches = false; cells.forEach(cell => { if (cell.textContent.toLowerCase().includes(searchTerm)) { rowMatches = true; } }); row.style.display = rowMatches ? '' : 'none'; }); }); // Filter duplicates functionality const filterBtn = document.querySelector('data-table').shadowRoot.querySelector('.filter-btn'); filterBtn.addEventListener('click', () => { console.log('Filtering duplicates...'); // Implement duplicate filtering logic }); });