"use client"; import { useEffect, useState } from "react"; import { envConfig } from "@/app/lib/config"; import SearchDate from "../SearchDate/SearchDate"; import axios from "axios"; import Cookies from "js-cookie"; import "../../(private)/AsignacionEquipo/asignacion.css" interface equipos { hora_entrada: string; min_utilizados: number; hora_salida: string; cuenta_asociada: number; } export default function BitacoraEquipo({ date }: { date: string | null }) { const [equipo, setEquipo] = useState([]); const [open, setOpen] = useState(false); const [loadingEquipos, setLoadingEquipos] = useState(false); const [equipoSeleccionado, setEquipoSeleccionado] = useState(null); const [equipos, setEquipos] = useState([]); const [search, setSearch] = useState(""); const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; useEffect(() => { const fetchData = async () => { setLoadingEquipos(true); const response = await axios.get(`${envConfig.apiUrl}/equipo`, { headers }, ); setEquipos(response.data); setLoadingEquipos(false); }; fetchData(); }, []); useEffect(() => { if (!equipoSeleccionado?.id_equipo) return; if (!date) return; axios.post(`${envConfig.apiUrl}/bitacora/equipos-por-equipo`, { id_equipo: equipoSeleccionado.id_equipo, fecha: date, }, { headers }) .then(res => { setEquipo(res.data); }) .catch(err => { console.error(err); }); }, [equipoSeleccionado, date]); const equiposFiltrados = equipos.filter((eq) => { const texto = search.toLowerCase(); return ( eq.ubicacion?.toString().toLowerCase().includes(texto) || eq.plataforma?.nombre?.toLowerCase().includes(texto) || eq.nombre_equipo?.toLowerCase().includes(texto) ); }); return ( <>
!loadingEquipos && setOpen(!open)} > {open ? ( setSearch(e.target.value)} onClick={(e) => e.stopPropagation()} className="inputSelect" /> ) : equipoSeleccionado ? ( {equipoSeleccionado.ubicacion} {equipoSeleccionado.nombre_equipo} ) : ( {loadingEquipos ? "Cargando equipos..." : "Seleccione un equipo"} )} {open ? "▲" : "▼"}
{open && (
{equiposFiltrados.length === 0 && (
No hay resultados
)} {equiposFiltrados.map((eq) => (
{ setEquipoSeleccionado(eq); setOpen(false); setSearch(""); }} > {eq.ubicacion} {eq.nombre_equipo}
))}
)}
{equipo.length > 0 ? ( equipo.map((registro, index) => ( )) ) : ( )}
Hora Entrada Minutos utilizados Hora salida Cuenta asociada
{new Date(registro.hora_entrada).toLocaleString()} {registro.min_utilizados} {registro.hora_salida ? new Date(registro.hora_salida).toLocaleString() : "—"} {registro.cuenta_asociada}
Este equipo no tuvo asignaciones en esa fecha
); } //IO