"use client" import { useEffect, useState } from "react" import axios from "axios" import Link from "next/link" import { Activity, Layers, Network, Server } from "lucide-react" import { AppSidebar } from "@/components/app-sidebar" import { Breadcrumb, BreadcrumbItem, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb" import { Separator } from "@/components/ui/separator" import { SidebarInset, SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { useTranslations } from "next-intl" interface StatsResponse { serverCountNoVMs: number serverCountOnlyVMs: number applicationCount: number onlineApplicationsCount: number } export default function Dashboard() { const t = useTranslations('Dashboard') const [serverCountNoVMs, setServerCountNoVMs] = useState(0) const [serverCountOnlyVMs, setServerCountOnlyVMs] = useState(0) const [applicationCount, setApplicationCount] = useState(0) const [onlineApplicationsCount, setOnlineApplicationsCount] = useState(0) const getStats = async () => { try { const response = await axios.post("/api/dashboard/get", {}) setServerCountNoVMs(response.data.serverCountNoVMs) setServerCountOnlyVMs(response.data.serverCountOnlyVMs) setApplicationCount(response.data.applicationCount) setOnlineApplicationsCount(response.data.onlineApplicationsCount) } catch (error: any) { console.log("Axios error:", error.response?.data) } } useEffect(() => { getStats() }, []) return (
/ {t('Title')}

{t('Title')}

{t('Servers.Title')} {t('Servers.Description')}
{/* Physical Servers */}
{serverCountNoVMs}

{t('Servers.PhysicalServers')}

{/* Virtual Machines */}
{serverCountOnlyVMs}

{t('Servers.VirtualServers')}

{t('Applications.Title')} {t('Applications.Description')}
{applicationCount}

{t('Applications.OnlineApplications')}

{t('Uptime.Title')} {t('Uptime.Description')}
{onlineApplicationsCount}/{applicationCount}
{applicationCount > 0 ? Math.round((onlineApplicationsCount / applicationCount) * 100) : 0}%
0 ? Math.round((onlineApplicationsCount / applicationCount) * 100) : 0}%`, }} >

{t('Uptime.OnlineApplications')}

{t('Network.Title')} {t('Network.Description')}
{serverCountNoVMs + serverCountOnlyVMs + applicationCount}

{t('Network.ActiveConnections')}

) }