import { BoxIcon, CpuIcon, DatabaseIcon, LayersIcon, ListIcon, NetworkIcon, ShuffleIcon, } from 'lucide-react'; import { useEnvironmentId } from '@/react/hooks/useEnvironmentId'; import { isAgentEnvironment } from '@/react/portainer/environments/utils'; import { useCurrentEnvironment } from '@/react/hooks/useCurrentEnvironment'; import { useIsEnvironmentAdmin } from '@/react/hooks/useUser'; import { PageHeader } from '@@/PageHeader'; import { DashboardGrid } from '@@/DashboardItem/DashboardGrid'; import { DashboardItem } from '@@/DashboardItem'; import { useIsSwarm, useIsSwarmManager } from '../proxy/queries/useInfo'; import { NonAgentSwarmInfo } from './NonAgentSwarmInfo'; import { ClusterAgentInfo } from './ClusterAgentInfo'; import { EnvironmentInfo } from './EnvironmentInfo'; import { ContainerStatus } from './ContainerStatus'; import { ImagesTotalSize } from './ImagesTotalSize'; import { useDashboard } from './useDashboard'; export function DashboardView() { const envId = useEnvironmentId(); const envQuery = useCurrentEnvironment(); const isEnvAdminQuery = useIsEnvironmentAdmin(); const isSwarmManager = useIsSwarmManager(envId); const isStandalone = useIsSwarm(envId); const dashboardStatsQuery = useDashboard(envId); if (!envQuery.data || !dashboardStatsQuery.data) { return null; } const env = envQuery.data; const isStacksVisible = shouldShowStacks(); const dashboardStats = dashboardStatsQuery.data; return ( <>
{isStacksVisible && ( )} {isSwarmManager && ( )} {env.EnableGPUManagement && isStandalone && ( )}
); function shouldShowStacks() { return ( env.SecuritySettings.allowStackManagementForRegularUsers || isEnvAdminQuery.authorized ); } } function InfoPanels({ isAgent }: { isAgent: boolean }) { const envId = useEnvironmentId(); const isSwarm = useIsSwarm(envId); return ( <> {isSwarm && !isAgent && } {isSwarm && isAgent && } {(!isSwarm || !isAgent) && } ); }