mirror of https://github.com/portainer/portainer
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { CellProps, Column } from 'react-table';
|
|
import clsx from 'clsx';
|
|
|
|
import { Environment, EnvironmentStatus } from '@/portainer/environments/types';
|
|
import { useRowContext } from '@/edge/devices/components/EdgeDevicesDatatable/columns/RowContext';
|
|
|
|
export const heartbeat: Column<Environment> = {
|
|
Header: 'Heartbeat',
|
|
accessor: 'Status',
|
|
id: 'status',
|
|
Cell: StatusCell,
|
|
disableFilters: true,
|
|
canHide: true,
|
|
};
|
|
|
|
export function StatusCell({
|
|
row: { original: environment },
|
|
}: CellProps<Environment>) {
|
|
const { disableTrustOnFirstConnect } = useRowContext();
|
|
|
|
if (disableTrustOnFirstConnect && !environment.UserTrusted) {
|
|
return <span className="label label-default">untrusted</span>;
|
|
}
|
|
|
|
if (!environment.LastCheckInDate) {
|
|
return (
|
|
<span className="label label-default">
|
|
<s>associated</s>
|
|
</span>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<i
|
|
className={clsx(
|
|
'fa',
|
|
'fa-heartbeat',
|
|
environmentStatusLabel(environment.Status)
|
|
)}
|
|
aria-hidden="true"
|
|
/>
|
|
);
|
|
|
|
function environmentStatusLabel(status: EnvironmentStatus) {
|
|
if (status === EnvironmentStatus.Up) {
|
|
return 'green-icon';
|
|
}
|
|
return 'orange-icon';
|
|
}
|
|
}
|