You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
import { FC } from 'react'; |
|
|
|
import Decorator, { Colours } from '../Decorator'; |
|
import Divider from '../Divider'; |
|
import FlexBox from '../FlexBox'; |
|
import { BodyText, MonoText } from '../Text'; |
|
|
|
const MAP_TO_DECORATOR_COLOUR: Record<string, Colours> = { |
|
online: 'ok', |
|
offline: 'off', |
|
}; |
|
|
|
const MAP_TO_HOST_TYPE_DISPLAY: Record<string, string> = { |
|
dr: 'DR', |
|
node: 'Subnode', |
|
}; |
|
|
|
const HostListItem: FC<HostListItemProps> = (props) => { |
|
const { data } = props; |
|
|
|
const { hostName, hostStatus, hostType, shortHostName } = data; |
|
|
|
return ( |
|
<FlexBox row spacing=".5em"> |
|
<Decorator |
|
colour={MAP_TO_DECORATOR_COLOUR[hostStatus] ?? 'warning'} |
|
sx={{ |
|
alignSelf: 'stretch', |
|
height: 'auto', |
|
}} |
|
/> |
|
<FlexBox flexGrow={1} spacing={0}> |
|
<FlexBox sm="row" spacing=".5em"> |
|
<BodyText>{MAP_TO_HOST_TYPE_DISPLAY[hostType]}</BodyText> |
|
<MonoText whiteSpace="nowrap">{shortHostName}</MonoText> |
|
<Divider |
|
orientation="vertical" |
|
sx={{ |
|
alignSelf: 'stretch', |
|
height: 'auto', |
|
}} |
|
/> |
|
<MonoText |
|
sx={{ display: { xs: 'none', sm: 'flex' } }} |
|
whiteSpace="nowrap" |
|
> |
|
{hostName} |
|
</MonoText> |
|
</FlexBox> |
|
<BodyText>{hostStatus}</BodyText> |
|
</FlexBox> |
|
</FlexBox> |
|
); |
|
}; |
|
|
|
export default HostListItem;
|
|
|