import { Cpu, Settings, BarChart3, Bell } from "lucide-react"; import { useEffect, useState } from "react"; import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, CartesianGrid, } from "recharts"; import { fetchMeters, Meter } from "../api/meters"; import { Page } from "../App"; export default function Home({ setPage, navigateToMetersWithProject }: { setPage: (page: Page) => void; navigateToMetersWithProject: (projectName: string) => void; }) { const [allProjects, setAllProjects] = useState([]); const [meters, setMeters] = useState([]); const loadMeters = async () => { const data = await fetchMeters(); setMeters(data); const projectsArray = [...new Set(data.map((record: Meter) => record["areaName"]))]; setAllProjects(projectsArray); } useEffect(() => { loadMeters(); }, []); const chartData = allProjects.map((projectName) => ({ name: projectName, meterCount: meters.filter((meter) => meter.areaName === projectName).length, })); // eslint-disable-next-line @typescript-eslint/no-explicit-any const handleBarClick = (data: any) => { if (data.activeLabel) { navigateToMetersWithProject(data.activeLabel); } }; // Datos de ejemplo para empresas const companies = [ { name: "Empresa A", tomas: 12, alerts: 2, consumption: 320 }, { name: "Empresa B", tomas: 8, alerts: 0, consumption: 210 }, { name: "Empresa C", tomas: 15, alerts: 1, consumption: 450 }, ]; // Alertas recientes const alerts = [ { company: "Empresa A", type: "Fuga", time: "Hace 2 horas" }, { company: "Empresa C", type: "Consumo alto", time: "Hace 5 horas" }, { company: "Empresa B", type: "Inactividad", time: "Hace 8 horas" }, ]; // Historial tipo Google const history = [ { user: "GRH", action: "Creó un nuevo medidor", target: "SN001", time: "Hace 5 minutos", }, { user: "CESPT", action: "Actualizó concentrador", target: "Planta 1", time: "Hace 20 minutos", }, { user: "GRH", action: "Eliminó un usuario", target: "Juan Pérez", time: "Hace 1 hora", }, { user: "CESPT", action: "Creó un payload", target: "Payload 12", time: "Hace 2 horas", }, { user: "GRH", action: "Actualizó medidor", target: "SN002", time: "Hace 3 horas", }, ]; return (
{/* Título */}

Sistema de Tomas de Agua

Monitorea, administra y controla tus operaciones en un solo lugar.

{/* Cards de Secciones */}
setPage("meters")} > Tomas
Alertas
Mantenimiento
Reportes
{/* Resumen de tomas por empresa */}
{companies.map((c) => (
{c.name} {c.tomas} Tomas 0 ? "text-red-500" : "text-green-500" }`} > {c.alerts} Alertas
))}
{/* Gráfica de consumo */}

Número de Medidores por Proyecto

{/* Historial tipo Google */}

Historial Reciente

    {history.map((h, i) => (
  • {h.user} {h.action}{" "} {h.target}

    {h.time}

  • ))}
{/* Últimas alertas */}

Últimas Alertas

    {alerts.map((a, i) => (
  • {a.company} - {a.type} {a.time}
  • ))}
); }