import { useState, useEffect } from "react"; import { useParams, useNavigate } from "react-router-dom"; import { useQuery } from "@tanstack/react-query"; import { useTheme } from "@/contexts/ThemeContext"; import { useLanguage } from "@/contexts/LanguageContext"; import { useSidebar } from "@/contexts/SidebarContext"; import { Sidebar } from "@/components/dashboard/Sidebar"; import { Header } from "@/components/dashboard/Header"; import { DockerStatsCards } from "@/components/docker/DockerStatsCards"; import { DockerContainersTable } from "@/components/docker/DockerContainersTable"; import { dockerService } from "@/services/dockerService"; import { DockerContainer, DockerStats } from "@/types/docker.types"; import { authService } from "@/services/authService"; import { Button } from "@/components/ui/button"; import { ArrowLeft } from "lucide-react"; const ContainerMonitoring = () => { const { serverId } = useParams(); const navigate = useNavigate(); const { theme } = useTheme(); const { t } = useLanguage(); const { sidebarCollapsed, toggleSidebar } = useSidebar(); const [stats, setStats] = useState({ total: 0, running: 0, stopped: 0, warning: 0 }); const [currentUser, setCurrentUser] = useState(authService.getCurrentUser()); // console.log('ContainerMonitoring component loaded with serverId:', serverId); const { data: containers = [], isLoading, error, refetch } = useQuery({ queryKey: ['docker-containers', serverId], queryFn: () => { // console.log('Query function called with serverId:', serverId); return serverId ? dockerService.getContainersByServerId(serverId) : dockerService.getContainers(); }, refetchInterval: 30000 // Refetch every 30 seconds }); // console.log('Query state:', { containers, isLoading, error }); useEffect(() => { // console.log('Containers changed:', containers); if (containers.length > 0) { dockerService.getContainerStats(containers).then(newStats => { // console.log('Stats calculated:', newStats); setStats(newStats); }); } }, [containers]); const handleRefresh = () => { // console.log('Manual refresh triggered'); refetch(); }; const handleLogout = () => { authService.logout(); navigate('/login'); }; const handleBackToServers = () => { navigate('/instance-monitoring'); }; if (error) { // console.error('Container monitoring error:', error); return (

{t('errorLoadingContainers')}

{t('unableToFetchContainerData')}

{t('errorUnknown')}: {error?.message || t('errorUnknown')}
); } return (
{/* Header Section */}

{t('containerMonitoring')}

{t('monitorAndManageContainers')} {serverId && ( {t('serverIdLabel')}: {serverId} )}

{/* Stats Cards Section */}
{/* Containers Table Section */}
); }; export default ContainerMonitoring;