// API Base URL - automatically uses the current host const API_BASE = window.location.origin; // Initialize on page load document.addEventListener('DOMContentLoaded', () => { console.log('🚀 Initializing Flare.NX & Orynx AI Labs Dashboard'); checkHealth(); checkGPU(); loadGPUInfo(); }); // Health Check async function checkHealth() { const statusEl = document.getElementById('healthStatus'); const cardEl = document.getElementById('healthCard'); try { statusEl.innerHTML = '
Checking...'; const response = await fetch(`${API_BASE}/health`); const data = await response.json(); if (data.status === 'healthy' && data.gpu_available) { statusEl.innerHTML = `
✅ Healthy
GPU: ${data.device_name}
Devices: ${data.cuda_devices}
`; cardEl.classList.add('status-ok'); cardEl.classList.remove('status-error'); } else { statusEl.innerHTML = '
⚠️ CPU Only
'; cardEl.classList.add('status-warning'); } } catch (error) { statusEl.innerHTML = '
❌ Error
'; cardEl.classList.add('status-error'); console.error('Health check error:', error); } } // GPU Status Check async function checkGPU() { const statusEl = document.getElementById('gpuStatus'); const cardEl = document.getElementById('gpuCard'); try { statusEl.innerHTML = '
Loading...'; const response = await fetch(`${API_BASE}/gpu-info`); const data = await response.json(); if (data.cuda_available && data.devices.length > 0) { const device = data.devices[0]; statusEl.innerHTML = `
✅ Active
${device.name}
${device.total_memory_gb} GB VRAM
`; cardEl.classList.add('status-ok'); cardEl.classList.remove('status-error'); } else { statusEl.innerHTML = '
⚠️ No GPU
'; cardEl.classList.add('status-warning'); } } catch (error) { statusEl.innerHTML = '
❌ Error
'; cardEl.classList.add('status-error'); console.error('GPU check error:', error); } } // Load GPU Information async function loadGPUInfo() { const detailsEl = document.getElementById('gpuDetails'); try { const response = await fetch(`${API_BASE}/gpu-info`); const data = await response.json(); if (data.cuda_available && data.devices.length > 0) { const device = data.devices[0]; detailsEl.innerHTML = `

🎮 ${device.name}

Device #${device.id}
Total Memory: ${device.total_memory_gb} GB
Compute Capability: ${device.major}.${device.minor}
Multiprocessors: ${device.multi_processor_count}
Total Devices: ${data.device_count}

GPU Performance: Optimal

`; } else { detailsEl.innerHTML = `

⚠️ CUDA not available. Running on CPU.

`; } } catch (error) { detailsEl.innerHTML = `

❌ Error loading GPU information.

`; console.error('GPU info error:', error); } } // Process Text async function processText() { const textInput = document.getElementById('textInput').value; const maxLength = parseInt(document.getElementById('maxLength').value); const outputGroup = document.getElementById('outputGroup'); const outputContent = document.getElementById('outputContent'); if (!textInput.trim()) { alert('Please enter some text to process!'); return; } try { outputContent.innerHTML = '
Processing with GPU...'; outputGroup.style.display = 'block'; const response = await fetch(`${API_BASE}/process`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ text: textInput, max_length: maxLength }) }); const data = await response.json(); outputContent.innerHTML = `
Input:
${data.input}
Processed:
${data.processed}
Length: ${data.length} characters
Max Length: ${data.max_length}
GPU Used: ${data.gpu_used ? '✅ Yes' : '⚠️ No'}
`; } catch (error) { outputContent.innerHTML = `
❌ Error processing text: ${error.message}
`; console.error('Process error:', error); } } // Test Endpoint async function testEndpoint(endpoint) { const responseSection = document.getElementById('responseSection'); const responseContent = document.getElementById('responseContent'); try { responseContent.textContent = 'Loading...'; responseSection.style.display = 'block'; responseSection.scrollIntoView({ behavior: 'smooth' }); // Use /api for root endpoint, others as-is const url = endpoint === '/' ? `${API_BASE}/api` : `${API_BASE}${endpoint}`; const response = await fetch(url); const data = await response.json(); responseContent.textContent = JSON.stringify(data, null, 2); responseContent.classList.add('json-highlight'); } catch (error) { responseContent.textContent = `Error: ${error.message}`; console.error('Endpoint test error:', error); } } // Copy Response function copyResponse() { const responseContent = document.getElementById('responseContent'); navigator.clipboard.writeText(responseContent.textContent).then(() => { const btn = document.querySelector('.btn-copy'); const originalText = btn.textContent; btn.textContent = '✅ Copied!'; setTimeout(() => { btn.textContent = originalText; }, 2000); }); } // Close Response function closeResponse() { document.getElementById('responseSection').style.display = 'none'; } // Auto-refresh status every 30 seconds setInterval(() => { checkHealth(); checkGPU(); }, 30000);