1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-08 07:15:23 +02:00
portainer/app/react/edge/edge-jobs/ItemView/ResultsDatatable/columns.tsx
Chaim Lev-Ari eb6d251a73
Some checks failed
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
ci / build_images (map[arch:arm platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:s390x platform:linux version:]) (push) Has been cancelled
/ triage (push) Has been cancelled
Lint / Run linters (push) Has been cancelled
Test / test-client (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:linux]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
Test / test-server (map[arch:arm64 platform:linux]) (push) Has been cancelled
ci / build_manifests (push) Has been cancelled
feat(edge/jobs): migrate item view to react [EE-2220] (#11887)
2024-06-06 21:07:39 +03:00

77 lines
2.1 KiB
TypeScript

import { CellContext, createColumnHelper } from '@tanstack/react-table';
import { Button } from '@@/buttons';
import { LogsStatus } from '../../types';
import { useDownloadLogsMutation } from '../../queries/jobResults/useDownloadLogsMutation';
import { useClearLogsMutation } from '../../queries/jobResults/useClearLogsMutation';
import { useCollectLogsMutation } from '../../queries/jobResults/useCollectLogsMutation';
import { DecoratedJobResult, getTableMeta } from './types';
const columnHelper = createColumnHelper<DecoratedJobResult>();
export const columns = [
columnHelper.accessor('Endpoint.Name', {
header: 'Environment',
meta: {
className: 'w-1/2',
},
}),
columnHelper.display({
header: 'Actions',
cell: ActionsCell,
meta: {
className: 'w-1/2',
},
}),
];
function ActionsCell({
row: { original: item },
table,
}: CellContext<DecoratedJobResult, unknown>) {
const tableMeta = getTableMeta(table.options.meta);
const id = tableMeta.jobId;
const downloadLogsMutation = useDownloadLogsMutation(id);
const clearLogsMutations = useClearLogsMutation(id);
const collectLogsMutation = useCollectLogsMutation(id);
switch (item.LogsStatus) {
case LogsStatus.Pending:
return (
<>
Logs marked for collection, please wait until the logs are available.
</>
);
case LogsStatus.Collected:
return (
<>
<Button
onClick={() => downloadLogsMutation.mutate(item.EndpointId)}
data-cy={`edge-job-download-logs-${item.Endpoint?.Name}`}
>
Download logs
</Button>
<Button
onClick={() => clearLogsMutations.mutate(item.EndpointId)}
data-cy={`edge-job-clear-logs-${item.Endpoint?.Name}`}
>
Clear logs
</Button>
</>
);
case LogsStatus.Idle:
default:
return (
<Button
onClick={() => collectLogsMutation.mutate(item.EndpointId)}
data-cy={`edge-job-retrieve-logs-${item.Endpoint?.Name}`}
>
Retrieve logs
</Button>
);
}
}