import React, { useState, useEffect } from 'react'; import { Plus, Loader2, X, Trash2 } from 'lucide-react'; import { motion, AnimatePresence } from 'framer-motion'; import { useNavigate } from 'react-router-dom'; export default function ChargersPage() { const [chargers, setChargers] = useState([]); const [selectedCharger, setSelectedCharger] = useState(null); const [deletingId, setDeletingId] = useState(null); const [showAdd, setShowAdd] = useState(false); const navigate = useNavigate(); // Carregar os carregadores ao montar o componente useEffect(() => { async function fetchChargers() { try { const res = await fetch('/api/chargers'); const json = await res.json(); if (res.ok) { setChargers(json.data || []); } else { throw new Error('Falha ao carregar carregadores'); } } catch (err) { console.error(err.message); } } fetchChargers(); }, []); const handleOpenAdd = () => setShowAdd(true); const handleCloseAdd = () => setShowAdd(false); const handleSelect = (id) => { setSelectedCharger(id); // Atualiza o carregador selecionado navigate(`/charger/${id}`); // Navega para a página do carregador }; const handleDelete = async (id) => { if (window.confirm('Excluir este carregador? Esta ação não pode ser desfeita.')) { setDeletingId(id); try { const res = await fetch(`/api/chargers/${id}`, { method: 'DELETE' }); if (res.ok) { setChargers((prevChargers) => prevChargers.filter(c => c.id !== id)); } else { throw new Error('Erro ao excluir carregador'); } } catch (err) { console.error('Erro ao deletar carregador', err); } finally { setDeletingId(null); } } }; return (

Meus Carregadores

{chargers.length > 0 ? ( chargers.map((charger) => ( handleSelect(charger.id)} >
{charger.nome}
Código: {charger.codigoEmparelhamento}
Local: {charger.local}
Última atividade: {charger.ultimaAtividade}
)) ) : (

Nenhum carregador encontrado

)}
{showAdd && }
); } function AddChargerModal({ onClose }) { const [nome, setNome] = useState(''); const [local, setLocal] = useState(''); const [saving, setSaving] = useState(false); async function handleSubmit(e) { e.preventDefault(); setSaving(true); try { const res = await fetch('/api/chargers', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ nome, local }) }); const json = await res.json(); onClose(); } catch (err) { console.error('Erro ao adicionar carregador', err); } finally { setSaving(false); } } return (

Novo Carregador

setNome(e.target.value)} required className="w-full border border-gray-300 rounded-lg px-3 py-2" />
setLocal(e.target.value)} required className="w-full border border-gray-300 rounded-lg px-3 py-2" />
); }