| |
| |
| |
|
|
| |
| |
| |
| function showToast(type, title, message) { |
| const container = document.getElementById('toast-container'); |
| if (!container) return; |
|
|
| const toast = document.createElement('div'); |
| toast.className = `toast-message ${type}`; |
|
|
| let iconClass = 'fa-solid fa-circle-info'; |
| if (type === 'success') iconClass = 'fa-solid fa-circle-check'; |
| if (type === 'error') iconClass = 'fa-solid fa-circle-exclamation'; |
|
|
| toast.innerHTML = ` |
| <div class="toast-icon"><i class="${iconClass}"></i></div> |
| <div class="toast-content"> |
| <h4>${title}</h4> |
| <p>${message}</p> |
| </div> |
| `; |
|
|
| container.appendChild(toast); |
|
|
| |
| setTimeout(() => { |
| toast.classList.add('fade-out'); |
| setTimeout(() => toast.remove(), 400); |
| }, 5000); |
| } |
|
|
| document.addEventListener('DOMContentLoaded', () => { |
| const urlParams = new URLSearchParams(window.location.search); |
| const tab = urlParams.get('tab') || 'dashboard'; |
| switchTab(tab); |
| |
| |
| setInterval(() => { |
| if(typeof updateTicketBadges === 'function') updateTicketBadges(); |
| if (document.getElementById('section-dashboard').classList.contains('active') && typeof loadDashboardStats === 'function') { |
| loadDashboardStats(); |
| } |
| }, 30000); |
| |
| if(typeof updateTicketBadges === 'function') updateTicketBadges(); |
| }); |
|
|
| function switchTab(tabName) { |
| const sections = document.querySelectorAll('.admin-section'); |
| const tabBtns = document.querySelectorAll('.admin-tab-btn'); |
| const sidebarLinks = document.querySelectorAll('.sidebar-menu .side-btn'); |
| const breadcrumb = document.getElementById('breadcrumb-active'); |
| |
| sections.forEach(s => s.classList.remove('active')); |
| tabBtns.forEach(b => b.classList.remove('active')); |
| sidebarLinks.forEach(l => l.classList.remove('active')); |
| |
| const activeSection = document.getElementById(`section-${tabName}`); |
| const activeTabBtn = document.getElementById(`tab-btn-${tabName}`); |
| const activeSidebarLink = document.getElementById(`nav-${tabName}-link`); |
|
|
| if (activeSection) activeSection.classList.add('active'); |
| if (activeTabBtn) activeTabBtn.classList.add('active'); |
| if (activeSidebarLink) activeSidebarLink.classList.add('active'); |
| |
| if (tabName === 'dashboard') { |
| if (breadcrumb) breadcrumb.innerText = 'Overview'; |
| if(typeof loadDashboardStats === 'function') loadDashboardStats(); |
| } else if (tabName === 'payments') { |
| if (breadcrumb) breadcrumb.innerText = 'Payment Queue'; |
| if(typeof loadTransactions === 'function') loadTransactions(); |
| } else if (tabName === 'wallet') { |
| if (breadcrumb) breadcrumb.innerText = 'Wallet Management'; |
| if(typeof loadUserWallets === 'function') loadUserWallets(); |
| } else if (tabName === 'users') { |
| if (breadcrumb) breadcrumb.innerText = 'User Directory'; |
| if(typeof loadUserManagement === 'function') loadUserManagement(); |
| } else if (tabName === 'downloads') { |
| if (breadcrumb) breadcrumb.innerText = 'Download History'; |
| if(typeof loadDownloadHistory === 'function') loadDownloadHistory(); |
| } else { |
| if (breadcrumb) breadcrumb.innerText = 'Complaints'; |
| if(typeof loadTickets === 'function') loadTickets(); |
| } |
|
|
| |
| const newUrl = window.location.pathname + '?tab=' + tabName; |
| window.history.pushState({ path: newUrl }, '', newUrl); |
| } |
|
|
| window.switchTab = switchTab; |
| window.showToast = showToast; |
|
|