import { UISref, UISrefActive } from '@uirouter/react'; import classNames from 'classnames'; import { clone } from 'lodash'; import React from 'react'; import { CloudProviderLogo } from '../cloudProvider/CloudProviderLogo'; import type { IInstance, IServerGroup } from '../domain'; import { HealthCounts } from '../healthCounts/HealthCounts'; import { Instances } from '../instance/Instances'; export interface ILoadBalancerServerGroupProps { region: string; account: string; serverGroup: IServerGroup; showInstances: boolean; // boolean on sortFilter, but shouldn't be handled here } export interface ILoadBalancerServerGroupState { instances: IInstance[]; } export class LoadBalancerServerGroup extends React.Component< ILoadBalancerServerGroupProps, ILoadBalancerServerGroupState > { constructor(props: ILoadBalancerServerGroupProps) { super(props); this.state = this.getState(props); } private getState(props: ILoadBalancerServerGroupProps): ILoadBalancerServerGroupState { return { instances: clone(props.serverGroup.instances), }; } public componentWillReceiveProps(nextProps: ILoadBalancerServerGroupProps): void { this.setState(this.getState(nextProps)); } public render(): React.ReactElement { const { serverGroup, showInstances, account, region } = this.props; const className = classNames({ clickable: true, 'clickable-row': true, 'no-margin-y': true, disabled: serverGroup.isDisabled, }); const params = { region: serverGroup.region || region, accountId: serverGroup.account || account, serverGroup: serverGroup.name, provider: serverGroup.cloudProvider, }; return (
{' '} {serverGroup.name}
{showInstances && (
)}
); } }