function showTab(tabName) { // Hide all panels document.querySelectorAll('.tab-panel').forEach(panel => panel.classList.add('hidden')); // Remove active class from all tabs document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); // Show selected panel document.getElementById('panel-' + tabName).classList.remove('hidden'); // Add active class to selected tab document.getElementById('tab-' + tabName).classList.add('active'); } document.addEventListener('DOMContentLoaded', function() { // Update selected IP count document.getElementById('bulk-ip-select')?.addEventListener('change', function() { document.getElementById('selected-ip-count').textContent = this.selectedOptions.length; }); document.getElementById('bulk-tag-device-select')?.addEventListener('change', function() { document.getElementById('selected-tag-device-count').textContent = this.selectedOptions.length; }); // Load available IPs when subnet changes document.getElementById('bulk-subnet-select')?.addEventListener('change', function() { const subnetId = this.value; const ipSelect = document.getElementById('bulk-ip-select'); if (!subnetId) { ipSelect.innerHTML = ''; document.getElementById('selected-ip-count').textContent = '0'; return; } ipSelect.innerHTML = ''; fetch(`/get_available_ips?subnet_id=${subnetId}`) .then(response => response.json()) .then(data => { ipSelect.innerHTML = ''; if (data.available_ips.length === 0) { ipSelect.innerHTML = ''; } else { data.available_ips.forEach(ip => { const option = document.createElement('option'); option.value = ip.id; option.textContent = ip.ip; ipSelect.appendChild(option); }); } document.getElementById('selected-ip-count').textContent = '0'; }) .catch(() => { ipSelect.innerHTML = ''; }); }); // Bulk IP Assignment document.getElementById('bulk-assign-ips-form')?.addEventListener('submit', function(e) { e.preventDefault(); const formData = new FormData(this); const resultDiv = document.getElementById('assign-ips-result'); resultDiv.classList.remove('hidden'); resultDiv.innerHTML = '
Processing...
'; fetch('/bulk/assign_ips', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { let html = 'Error: ${error.message}
`; }); }); // Bulk Device Creation document.getElementById('bulk-create-devices-form')?.addEventListener('submit', function(e) { e.preventDefault(); const formData = new FormData(this); const resultDiv = document.getElementById('create-devices-result'); resultDiv.classList.remove('hidden'); resultDiv.innerHTML = 'Processing...
'; fetch('/bulk/create_devices', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { let html = 'Error: ${error.message}
`; }); }); // Bulk Tag Assignment document.getElementById('bulk-assign-tags-form')?.addEventListener('submit', function(e) { e.preventDefault(); const formData = new FormData(this); const resultDiv = document.getElementById('assign-tags-result'); resultDiv.classList.remove('hidden'); resultDiv.innerHTML = 'Processing...
'; fetch('/bulk/assign_tags', { method: 'POST', body: formData }) .then(response => response.json()) .then(data => { let html = 'Error: ${error.message}
`; }); }); });