import React from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; import { Card, CardView, CardTitle, CardSubTitle, CardDescription, CardGroupView, CardOptions, CardHeader, CardInfo, Anchor } from 'joyent-ui-toolkit'; import { InstancesIcon, HealthyIcon, UnhealthyIcon } from 'joyent-ui-toolkit'; import Status from './status'; const StyledCardHeader = styled(CardHeader)` position: relative; `; const TitleInnerContainer = styled.div` display: flex; flex-direction: row; justify-content: center; align-items: center; `; const ServiceListItem = ({ onQuickActionsClick = () => {}, deploymentGroup = '', service = {}, isChild = false }) => { const children = service.children ? service.children.map(service => ) : null; const to = `/deployment-groups/${deploymentGroup}/services/${service.slug}`; const title = isChild ? {service.name} : {service.name} ; const subtitle = ( {service.instances.length}{' '} {service.instances.length > 1 ? 'instances' : 'instance'} ); const handleCardOptionsClick = evt => { onQuickActionsClick(evt, service); }; const instancesCount = service.children ? service.children.reduce( (count, child) => count + child.instances.length, 0 ) : service.instances.length; const header = isChild ? null : {title} } iconPosition="left" label={`${instancesCount} ${instancesCount > 1 ? 'instances' : 'instance'}`} color="light" /> ; const healthyInfo = service.instancesHealthy ? } iconPosition="left" label="Healthy" color="dark" /> : } iconPosition="left" label="Unhealthy" color="dark" />; const view = children ? {children} : {isChild && title} {isChild && subtitle} {healthyInfo} ; return ( 1} > {header} {view} ); }; ServiceListItem.propTypes = { onQuickActionsClick: PropTypes.func, deploymentGroup: PropTypes.string, service: PropTypes.object.isRequired // Define better }; export default ServiceListItem;