import { Loader2, Pause, Pencil, Play, Trash2, Zap } from 'lucide-react'; import React, { memo, useState } from 'react'; import { useI18n } from '../../application/i18n/I18nProvider'; import type { DockerContainerAction, DockerContainerInfo, DockerStatInfo } from '../../domain/systemManager/types'; import { getContainerFlags } from '../../domain/systemManager/containerState'; import { DockerInspectView } from './DockerInspectView'; import { ResourceBar } from './ResourceBar'; import { SystemPanelActionChip, SystemPanelDetailStrip, SystemPanelInlineError, } from './SystemPanelUi'; import { SystemPanelPromptDialog } from './SystemPanelPromptDialog'; interface DockerContainerDetailProps { container: DockerContainerInfo; inspect: Record | null; inspectError?: string | null; inspectLoading?: boolean; stat?: DockerStatInfo | null; statsLoading?: boolean; pendingAction: DockerContainerAction | null; onCloseInspect: () => void; onRunAction: (containerId: string, action: DockerContainerAction, newName?: string) => Promise; } export const DockerContainerDetail = memo(function DockerContainerDetail({ container, inspect, inspectError = null, inspectLoading = false, stat = null, statsLoading = false, pendingAction, onCloseInspect, onRunAction, }: DockerContainerDetailProps) { const { t } = useI18n(); const shortId = container.id.slice(0, 12); const { isRunning, isPaused } = getContainerFlags(container); const [renameOpen, setRenameOpen] = useState(false); const actionBusy = pendingAction !== null; return ( <> {container.ports && (
{container.ports}
)} {stat && (
{stat.netIO} ยท {stat.memUsage}
)} {!stat && statsLoading && (isRunning || isPaused) && (
{t('systemManager.common.loadingStats')}
)}
setRenameOpen(true)}> {t('common.rename')} {isRunning && ( void onRunAction(shortId, 'pause')}> {t('systemManager.docker.pause')} )} {isPaused && ( void onRunAction(shortId, 'unpause')}> {t('systemManager.docker.unpause')} )} {(isRunning || isPaused) && ( void onRunAction(shortId, 'kill')} destructive> {t('systemManager.docker.kill')} )} void onRunAction(shortId, 'rm')} destructive>
{inspectLoading && !inspect && (
{t('systemManager.common.loadingDetails')}
)} {inspectError && !inspect && ( )} {inspect && ( )} { setRenameOpen(false); if (values.name !== container.name) { void onRunAction(shortId, 'rename', values.name); } }} /> ); });