import { Table, Checkbox, Group, Badge, createStyles } from '@mantine/core'; import Dockerode from 'dockerode'; import ContainerState from './ContainerState'; const useStyles = createStyles((theme) => ({ rowSelected: { backgroundColor: theme.colorScheme === 'dark' ? theme.fn.rgba(theme.colors[theme.primaryColor][7], 0.2) : theme.colors[theme.primaryColor][0], }, })); export default function DockerTable({ containers, selection, setSelection, }: { setSelection: any; containers: Dockerode.ContainerInfo[]; selection: Dockerode.ContainerInfo[]; }) { const { classes, cx } = useStyles(); const toggleRow = (container: Dockerode.ContainerInfo) => setSelection((current: Dockerode.ContainerInfo[]) => current.includes(container) ? current.filter((c) => c !== container) : [...current, container] ); const toggleAll = () => setSelection((current: any) => current.length === containers.length ? [] : containers.map((c) => c) ); const rows = containers.map((element) => { const selected = selection.includes(element); return ( toggleRow(element)} transitionDuration={0} /> {element.Names[0].replace('/', '')} {element.Image} {element.Ports.sort((a, b) => a.PrivatePort - b.PrivatePort) .slice(-3) .map((port) => ( {port.PrivatePort}:{port.PublicPort} ))} {element.Ports.length > 3 && ( {element.Ports.length - 3} more )} ); }); return ( {rows}
your docker containers
0 && selection.length !== containers.length} transitionDuration={0} /> Name Image Ports State
); }