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 (

Error loading containers

Unable to fetch container data. Please check your connection and try again.

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

Container Monitoring

Monitor and manage your Docker containers in real-time {serverId && ( Server ID: {serverId} )}

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