import { useCurrentStateAndParams } from '@uirouter/react'; import { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel'; import { ContainerDetailsViewModel } from '@/docker/models/containerDetails'; import { ResourceControlType } from '@/react/portainer/access-control/types'; import { trimContainerName } from '@/docker/filters/utils'; import { useEnvironmentId } from '@/react/hooks/useEnvironmentId'; import { useEnvironmentRegistries } from '@/react/portainer/environments/queries/useEnvironmentRegistries'; import { Registry } from '@/react/portainer/registries/types/registry'; import { PageHeader } from '@@/PageHeader'; import { findBestMatchRegistry } from '@@/ImageConfigFieldset/findRegistryMatch'; import { useContainer } from '../queries/useContainer'; import { ContainerActionsSection } from './ContainerActionsSection/ContainerActionsSection'; import { ContainerStatusSection } from './ContainerStatusSection/ContainerStatusSection'; import { CreateImageSection } from './CreateImageSection/CreateImageSection'; import { ContainerDetailsSection } from './ContainerDetailsSection/ContainerDetailsSection'; import { VolumesSection } from './VolumesSection/VolumesSection'; import { ContainerNetworksDatatable } from './ContainerNetworksDatatable'; import { HealthStatus } from './HealthStatus'; export function ItemView() { const environmentId = useEnvironmentId(); const { params: { id: containerId, nodeName }, } = useCurrentStateAndParams(); const containerQuery = useContainer( { environmentId, containerId, nodeName }, { select: (c) => new ContainerDetailsViewModel(c) } ); const registriesQuery = useEnvironmentRegistries(environmentId); if ( containerQuery.isLoading || !containerQuery.data || !registriesQuery.data ) { return null; } const container = containerQuery.data; const registryId = getRegistryId(container, registriesQuery.data); async function handleSuccess() { containerQuery.refetch(); } const containerName = trimContainerName(container.Name) || container.Id || 'unknown'; return ( <>
{container.State?.Health && ( )}
{container.NetworkSettings?.Networks && ( )} ); } function getRegistryId( container: ContainerDetailsViewModel, registries?: Array ) { const imageName = container.Config?.Image; if (!imageName || !registries) { return undefined; } const registry = findBestMatchRegistry(imageName, registries); return registry?.Id; }