mirror of https://github.com/portainer/portainer
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { CellProps, Column } from 'react-table';
|
|
|
|
import { useTableSettings } from '@/portainer/components/datatables/components/useTableSettings';
|
|
import { useEnvironment } from '@/portainer/environments/useEnvironment';
|
|
import { useAuthorizations } from '@/portainer/hooks/useUser';
|
|
import { ContainerQuickActions } from '@/docker/components/container-quick-actions/ContainerQuickActions';
|
|
import type {
|
|
ContainersTableSettings,
|
|
DockerContainer,
|
|
} from '@/docker/containers/types';
|
|
import { EnvironmentStatus } from '@/portainer/environments/types';
|
|
|
|
export const quickActions: Column<DockerContainer> = {
|
|
Header: 'Quick Actions',
|
|
id: 'actions',
|
|
Cell: QuickActionsCell,
|
|
disableFilters: true,
|
|
disableSortBy: true,
|
|
canHide: true,
|
|
sortType: 'string',
|
|
Filter: () => null,
|
|
};
|
|
|
|
function QuickActionsCell({
|
|
row: { original: container },
|
|
}: CellProps<DockerContainer>) {
|
|
const endpoint = useEnvironment();
|
|
const offlineMode = endpoint.Status !== EnvironmentStatus.Up;
|
|
|
|
const { settings } = useTableSettings<ContainersTableSettings>();
|
|
|
|
const { hiddenQuickActions = [] } = settings;
|
|
|
|
const wrapperState = {
|
|
showQuickActionAttach: !hiddenQuickActions.includes('attach'),
|
|
showQuickActionExec: !hiddenQuickActions.includes('exec'),
|
|
showQuickActionInspect: !hiddenQuickActions.includes('inspect'),
|
|
showQuickActionLogs: !hiddenQuickActions.includes('logs'),
|
|
showQuickActionStats: !hiddenQuickActions.includes('stats'),
|
|
};
|
|
|
|
const someOn =
|
|
wrapperState.showQuickActionAttach ||
|
|
wrapperState.showQuickActionExec ||
|
|
wrapperState.showQuickActionInspect ||
|
|
wrapperState.showQuickActionLogs ||
|
|
wrapperState.showQuickActionStats;
|
|
|
|
const isAuthorized = useAuthorizations([
|
|
'DockerContainerStats',
|
|
'DockerContainerLogs',
|
|
'DockerExecStart',
|
|
'DockerContainerInspect',
|
|
'DockerTaskInspect',
|
|
'DockerTaskLogs',
|
|
]);
|
|
|
|
if (offlineMode || !someOn || !isAuthorized) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<ContainerQuickActions
|
|
containerId={container.Id}
|
|
nodeName={container.NodeName}
|
|
status={container.Status}
|
|
state={wrapperState}
|
|
/>
|
|
);
|
|
}
|