// ForyHardware - Renderer Process
let systemData = null;

// Elementos del DOM
const loadingEl = document.getElementById('loading');
const clockEl = document.getElementById('live-clock');
const dateEl = document.getElementById('live-date');

// Control de ventana
document.getElementById('btn-minimize').addEventListener('click', () => window.electronAPI.minimizeWindow());
document.getElementById('btn-maximize').addEventListener('click', () => window.electronAPI.maximizeWindow());
document.getElementById('btn-close').addEventListener('click', () => window.electronAPI.closeWindow());

// Botones de acción
document.getElementById('btn-refresh').addEventListener('click', loadSystemInfo);
document.getElementById('btn-export-txt').addEventListener('click', exportToTxt);
document.getElementById('btn-export-jpg').addEventListener('click', exportToJpg);

// Inicialización
async function init() {
    updateClock();
    setInterval(updateClock, 1000);
    await loadSystemInfo();
}

// Reloj en tiempo real
function updateClock() {
    const now = new Date();
    clockEl.textContent = now.toLocaleTimeString('es-CO', { hour: '2-digit', minute: '2-digit', second: '2-digit' });
    dateEl.textContent = now.toLocaleDateString('es-CO');
}

// Cargar información del sistema
async function loadSystemInfo() {
    loadingEl.classList.remove('hidden');

    try {
        systemData = await window.electronAPI.getSystemInfo();

        if (systemData.error) {
            alert('Error al obtener información: ' + systemData.error);
            return;
        }

        renderSystemInfo();
    } catch (error) {
        console.error('Error:', error);
        alert('Error al cargar información del sistema');
    } finally {
        loadingEl.classList.add('hidden');
    }
}

// Renderizar información
function renderSystemInfo() {
    // CPU
    document.getElementById('cpu-info').innerHTML = `
        <p><span class="label">Fabricante:</span><span class="value">${systemData.cpu.manufacturer}</span></p>
        <p><span class="label">Modelo:</span><span class="value">${systemData.cpu.brand}</span></p>
        <p><span class="label">Velocidad:</span><span class="value">${systemData.cpu.speed} GHz</span></p>
        <p><span class="label">Núcleos Físicos:</span><span class="value">${systemData.cpu.physicalCores}</span></p>
        <p><span class="label">Hilos Totales:</span><span class="value">${systemData.cpu.cores}</span></p>
    `;

    // RAM
    document.getElementById('ram-info').innerHTML = `
        <p><span class="label">Total:</span><span class="value">${systemData.memory.total}</span></p>
        <p><span class="label">En Uso:</span><span class="value">${systemData.memory.used}</span></p>
        <p><span class="label">Disponible:</span><span class="value">${systemData.memory.free}</span></p>
    `;

    // Discos
    let diskHtml = '';
    systemData.disks.forEach((disk, i) => {
        diskHtml += `
            <p><span class="label">Disco ${i + 1}:</span><span class="value">${disk.model || disk.name}</span></p>
            <p><span class="label">Tipo:</span><span class="value">${disk.type}</span></p>
            <p><span class="label">Capacidad:</span><span class="value">${disk.size}</span></p>
        `;
    });
    document.getElementById('disk-info').innerHTML = diskHtml || '<p><span class="label">No detectado</span></p>';

    // Placa Base
    document.getElementById('mb-info').innerHTML = `
        <p><span class="label">Fabricante:</span><span class="value">${systemData.motherboard.manufacturer}</span></p>
        <p><span class="label">Modelo:</span><span class="value">${systemData.motherboard.model}</span></p>
    `;

    // GPU
    let gpuHtml = '';
    systemData.graphics.forEach((gpu, i) => {
        gpuHtml += `
            <p><span class="label">GPU ${i + 1}:</span><span class="value">${gpu.model}</span></p>
            <p><span class="label">VRAM:</span><span class="value">${gpu.vram}</span></p>
        `;
    });
    document.getElementById('gpu-info').innerHTML = gpuHtml || '<p><span class="label">No detectado</span></p>';

    // Red
    document.getElementById('net-info').innerHTML = `
        <p><span class="label">Interfaz:</span><span class="value">${systemData.network.interface}</span></p>
        <p><span class="label">Tipo:</span><span class="value">${systemData.network.type}</span></p>
        <p><span class="label">Dirección IP:</span><span class="value">${systemData.network.ip}</span></p>
        <p><span class="label">Máscara:</span><span class="value">${systemData.network.subnet}</span></p>
        <p><span class="label">MAC:</span><span class="value">${systemData.network.mac}</span></p>
        <p><span class="label">Velocidad:</span><span class="value">${systemData.network.speed}</span></p>
    `;

    // Sistema Operativo
    document.getElementById('os-info').innerHTML = `
        <p><span class="label">Sistema:</span><span class="value">${systemData.os.distro}</span></p>
        <p><span class="label">Versión:</span><span class="value">${systemData.os.release}</span></p>
        <p><span class="label">Arquitectura:</span><span class="value">${systemData.os.arch}</span></p>
        <p><span class="label">Nombre del Equipo:</span><span class="value">${systemData.os.hostname}</span></p>
        <p><span class="label">Grupo de Trabajo:</span><span class="value">${systemData.workgroup}</span></p>
        <p><span class="label">Fecha Instalación:</span><span class="value">${systemData.os.installDate}</span></p>
    `;

    // BIOS
    document.getElementById('bios-info').innerHTML = `
        <p><span class="label">Fabricante:</span><span class="value">${systemData.bios.vendor}</span></p>
        <p><span class="label">Versión:</span><span class="value">${systemData.bios.version}</span></p>
        <p><span class="label">Fecha:</span><span class="value">${systemData.bios.releaseDate}</span></p>
    `;
}

// Exportar a TXT
async function exportToTxt() {
    if (!systemData) {
        alert('No hay datos para exportar');
        return;
    }

    const lines = [
        '═══════════════════════════════════════════════════════════',
        '                    FORYHARDWARE - REPORTE',
        '═══════════════════════════════════════════════════════════',
        `Fecha del Reporte: ${systemData.timestamp}`,
        '',
        '▓▓▓ PROCESADOR ▓▓▓',
        `Fabricante: ${systemData.cpu.manufacturer}`,
        `Modelo: ${systemData.cpu.brand}`,
        `Velocidad: ${systemData.cpu.speed} GHz`,
        `Núcleos: ${systemData.cpu.physicalCores} físicos / ${systemData.cpu.cores} hilos`,
        '',
        '▓▓▓ MEMORIA RAM ▓▓▓',
        `Total: ${systemData.memory.total}`,
        `En Uso: ${systemData.memory.used}`,
        `Disponible: ${systemData.memory.free}`,
        '',
        '▓▓▓ ALMACENAMIENTO ▓▓▓'
    ];

    systemData.disks.forEach((disk, i) => {
        lines.push(`Disco ${i + 1}: ${disk.model || disk.name}`);
        lines.push(`  Tipo: ${disk.type}`);
        lines.push(`  Capacidad: ${disk.size}`);
    });

    lines.push('');
    lines.push('▓▓▓ PLACA BASE ▓▓▓');
    lines.push(`Fabricante: ${systemData.motherboard.manufacturer}`);
    lines.push(`Modelo: ${systemData.motherboard.model}`);

    lines.push('');
    lines.push('▓▓▓ ADAPTADOR DE VIDEO ▓▓▓');
    systemData.graphics.forEach((gpu, i) => {
        lines.push(`GPU ${i + 1}: ${gpu.model}`);
        lines.push(`  VRAM: ${gpu.vram}`);
    });

    lines.push('');
    lines.push('▓▓▓ RED ▓▓▓');
    lines.push(`Interfaz: ${systemData.network.interface}`);
    lines.push(`Tipo: ${systemData.network.type}`);
    lines.push(`IP: ${systemData.network.ip}`);
    lines.push(`Máscara: ${systemData.network.subnet}`);
    lines.push(`MAC: ${systemData.network.mac}`);

    lines.push('');
    lines.push('▓▓▓ SISTEMA OPERATIVO ▓▓▓');
    lines.push(`Sistema: ${systemData.os.distro}`);
    lines.push(`Versión: ${systemData.os.release}`);
    lines.push(`Nombre del Equipo: ${systemData.os.hostname}`);
    lines.push(`Grupo de Trabajo: ${systemData.workgroup}`);
    lines.push(`Fecha de Instalación: ${systemData.os.installDate}`);

    lines.push('');
    lines.push('▓▓▓ BIOS ▓▓▓');
    lines.push(`Fabricante: ${systemData.bios.vendor}`);
    lines.push(`Versión: ${systemData.bios.version}`);
    lines.push(`Fecha: ${systemData.bios.releaseDate}`);

    lines.push('');
    lines.push('═══════════════════════════════════════════════════════════');
    lines.push('                 Generado por ForyHardware');
    lines.push('═══════════════════════════════════════════════════════════');

    const result = await window.electronAPI.exportTxt(lines.join('\n'));
    if (result.success) {
        alert('Archivo guardado en: ' + result.path);
    }
}

// Exportar a JPG
async function exportToJpg() {
    const container = document.getElementById('main-content');

    try {
        const canvas = await html2canvas(container, {
            backgroundColor: '#000a14',
            scale: 2
        });

        const imageData = canvas.toDataURL('image/jpeg', 0.9);
        const result = await window.electronAPI.exportJpg(imageData);

        if (result.success) {
            alert('Imagen guardada en: ' + result.path);
        }
    } catch (error) {
        console.error('Error al exportar:', error);
        alert('Error al generar la imagen');
    }
}

// Iniciar
document.addEventListener('DOMContentLoaded', init);
