// frontend/src/components/ModalAnadirRam.tsx import React, { useState, useCallback, useEffect } from 'react'; import styles from './SimpleTable.module.css'; import AutocompleteInput from './AutocompleteInput'; import { memoriaRamService } from '../services/apiService'; import type { MemoriaRam } from '../types/interfaces'; interface Props { onClose: () => void; onSave: (ram: { slot: string, tamano: number, fabricante?: string, velocidad?: number, partNumber?: string }) => void; } const ModalAnadirRam: React.FC = ({ onClose, onSave }) => { const [ram, setRam] = useState({ slot: '', tamano: '', fabricante: '', velocidad: '', partNumber: '' }); const [allRamModules, setAllRamModules] = useState([]); useEffect(() => { memoriaRamService.getAll() .then(setAllRamModules) .catch(err => console.error("No se pudieron cargar los módulos de RAM", err)); }, []); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setRam(prev => ({ ...prev, [name]: value })); }; const fetchRamSuggestions = useCallback(async () => { return allRamModules.map(r => `${r.fabricante || 'Desconocido'} | ${r.tamano}GB | ${r.velocidad ? r.velocidad + 'MHz' : 'N/A'}` ); }, [allRamModules]); useEffect(() => { const selectedSuggestion = ram.partNumber; const match = allRamModules.find(s => `${s.fabricante || 'Desconocido'} | ${s.tamano}GB | ${s.velocidad ? s.velocidad + 'MHz' : 'N/A'}` === selectedSuggestion ); if (match) { setRam(prev => ({ ...prev, fabricante: match.fabricante || '', tamano: match.tamano.toString(), velocidad: match.velocidad?.toString() || '', partNumber: match.partNumber || '' })); } }, [ram.partNumber, allRamModules]); const handleSave = () => { onSave({ slot: ram.slot, tamano: parseInt(ram.tamano, 10), fabricante: ram.fabricante || undefined, velocidad: ram.velocidad ? parseInt(ram.velocidad, 10) : undefined, partNumber: ram.partNumber || undefined, }); }; return (

Añadir Módulo de RAM

); }; export default ModalAnadirRam;