[CHORE] Unified getTagColor method (#1785)

* [CHORE] Unified getTagColor method

* [CHORE] Reduce component complexity
This commit is contained in:
Oleg Shur 2022-03-31 16:01:09 +03:00 committed by GitHub
parent 913b8921b4
commit cb7627d8df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 49 additions and 55 deletions

View file

@ -32,8 +32,8 @@ const Brokers: React.FC = () => {
items, items,
} = useAppSelector(selectStats); } = useAppSelector(selectStats);
let replicas = inSyncReplicasCount ?? 0; const replicas = inSyncReplicasCount ?? 0 + (outOfSyncReplicasCount ?? 0);
replicas += outOfSyncReplicasCount ?? 0; const areAllInSync = inSyncReplicasCount && replicas === inSyncReplicasCount;
React.useEffect(() => { React.useEffect(() => {
dispatch(fetchClusterStats(clusterName)); dispatch(fetchClusterStats(clusterName));
@ -103,14 +103,12 @@ const Brokers: React.FC = () => {
<Metrics.Indicator <Metrics.Indicator
label="In Sync Replicas" label="In Sync Replicas"
isAlert isAlert
alertType={inSyncReplicasCount === replicas ? 'success' : 'error'} alertType={areAllInSync ? 'success' : 'error'}
> >
{inSyncReplicasCount && {areAllInSync ? (
replicas && replicas
inSyncReplicasCount < replicas ? (
<Metrics.RedText>{inSyncReplicasCount}</Metrics.RedText>
) : ( ) : (
inSyncReplicasCount <Metrics.RedText>{inSyncReplicasCount}</Metrics.RedText>
)} )}
<Metrics.LightText> of {replicas}</Metrics.LightText> <Metrics.LightText> of {replicas}</Metrics.LightText>
</Metrics.Indicator> </Metrics.Indicator>
@ -130,7 +128,14 @@ const Brokers: React.FC = () => {
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{diskUsage && diskUsage.length !== 0 ? ( {(!diskUsage || diskUsage.length === 0) && (
<tr>
<td colSpan={10}>Disk usage data not available</td>
</tr>
)}
{diskUsage &&
diskUsage.length !== 0 &&
diskUsage.map(({ brokerId, segmentSize, segmentCount }) => ( diskUsage.map(({ brokerId, segmentSize, segmentCount }) => (
<tr key={brokerId}> <tr key={brokerId}>
<td>{brokerId}</td> <td>{brokerId}</td>
@ -141,12 +146,7 @@ const Brokers: React.FC = () => {
<td>{items && items[brokerId]?.port}</td> <td>{items && items[brokerId]?.port}</td>
<td>{items && items[brokerId]?.host}</td> <td>{items && items[brokerId]?.host}</td>
</tr> </tr>
)) ))}
) : (
<tr>
<td colSpan={10}>Disk usage data not available</td>
</tr>
)}
</tbody> </tbody>
</Table> </Table>
</> </>

View file

@ -2,7 +2,7 @@ import React from 'react';
import { Connector } from 'generated-sources'; import { Connector } from 'generated-sources';
import * as C from 'components/common/Tag/Tag.styled'; import * as C from 'components/common/Tag/Tag.styled';
import * as Metrics from 'components/common/Metrics'; import * as Metrics from 'components/common/Metrics';
import getTagColor from 'components/Connect/Utils/TagColor'; import getTagColor from 'components/common/Tag/getTagColor';
export interface OverviewProps { export interface OverviewProps {
connector: Connector | null; connector: Connector | null;

View file

@ -6,7 +6,7 @@ import Dropdown from 'components/common/Dropdown/Dropdown';
import DropdownItem from 'components/common/Dropdown/DropdownItem'; import DropdownItem from 'components/common/Dropdown/DropdownItem';
import VerticalElipsisIcon from 'components/common/Icons/VerticalElipsisIcon'; import VerticalElipsisIcon from 'components/common/Icons/VerticalElipsisIcon';
import * as C from 'components/common/Tag/Tag.styled'; import * as C from 'components/common/Tag/Tag.styled';
import getTagColor from 'components/Connect/Utils/TagColor'; import getTagColor from 'components/common/Tag/getTagColor';
interface RouterParams { interface RouterParams {
clusterName: ClusterName; clusterName: ClusterName;

View file

@ -12,7 +12,7 @@ import ConfirmationModal from 'components/common/ConfirmationModal/ConfirmationM
import { Tag } from 'components/common/Tag/Tag.styled'; import { Tag } from 'components/common/Tag/Tag.styled';
import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled'; import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled';
import VerticalElipsisIcon from 'components/common/Icons/VerticalElipsisIcon'; import VerticalElipsisIcon from 'components/common/Icons/VerticalElipsisIcon';
import getTagColor from 'components/Connect/Utils/TagColor'; import getTagColor from 'components/common/Tag/getTagColor';
import * as S from './List.styled'; import * as S from './List.styled';

View file

@ -1,17 +0,0 @@
import { ConnectorState, ConnectorStatus, TaskStatus } from 'generated-sources';
const getTagColor = (status: ConnectorStatus | TaskStatus) => {
const { state = '' } = status;
switch (state) {
case ConnectorState.RUNNING:
return 'green';
case ConnectorState.FAILED:
case ConnectorState.TASK_FAILED:
return 'red';
default:
return 'yellow';
}
};
export default getTagColor;

View file

@ -26,7 +26,7 @@ import {
getIsConsumerGroupDeleted, getIsConsumerGroupDeleted,
getAreConsumerGroupDetailsFulfilled, getAreConsumerGroupDetailsFulfilled,
} from 'redux/reducers/consumerGroups/consumerGroupsSlice'; } from 'redux/reducers/consumerGroups/consumerGroupsSlice';
import getTagColor from 'components/ConsumerGroups/Utils/TagColor'; import getTagColor from 'components/common/Tag/getTagColor';
import ListItem from './ListItem'; import ListItem from './ListItem';

View file

@ -2,9 +2,9 @@ import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { Tag } from 'components/common/Tag/Tag.styled'; import { Tag } from 'components/common/Tag/Tag.styled';
import { TableCellProps } from 'components/common/SmartTable/TableColumn'; import { TableCellProps } from 'components/common/SmartTable/TableColumn';
import getTagColor from 'components/ConsumerGroups/Utils/TagColor';
import { ConsumerGroup } from 'generated-sources'; import { ConsumerGroup } from 'generated-sources';
import { SmartTableKeyLink } from 'components/common/table/Table/TableKeyLink.styled'; import { SmartTableKeyLink } from 'components/common/table/Table/TableKeyLink.styled';
import getTagColor from 'components/common/Tag/getTagColor';
export const StatusCell: React.FC<TableCellProps<ConsumerGroup, string>> = ({ export const StatusCell: React.FC<TableCellProps<ConsumerGroup, string>> = ({
dataItem, dataItem,

View file

@ -3,7 +3,7 @@ import { Link } from 'react-router-dom';
import { ConsumerGroup } from 'generated-sources'; import { ConsumerGroup } from 'generated-sources';
import { Tag } from 'components/common/Tag/Tag.styled'; import { Tag } from 'components/common/Tag/Tag.styled';
import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled'; import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled';
import getTagColor from 'components/ConsumerGroups/Utils/TagColor'; import getTagColor from 'components/common/Tag/getTagColor';
const ListItem: React.FC<{ consumerGroup: ConsumerGroup }> = ({ const ListItem: React.FC<{ consumerGroup: ConsumerGroup }> = ({
consumerGroup, consumerGroup,

View file

@ -1,16 +0,0 @@
import { ConsumerGroupState, ConsumerGroup } from 'generated-sources';
const getTagColor = (consumerGroup: ConsumerGroup) => {
const { state = '' } = consumerGroup;
switch (state) {
case ConsumerGroupState.STABLE:
return 'green';
case ConsumerGroupState.DEAD:
return 'red';
case ConsumerGroupState.EMPTY:
return 'white';
default:
return 'yellow';
}
};
export default getTagColor;

View file

@ -7,8 +7,8 @@ import TableHeaderCell from 'components/common/table/TableHeaderCell/TableHeader
import { Tag } from 'components/common/Tag/Tag.styled'; import { Tag } from 'components/common/Tag/Tag.styled';
import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled'; import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import getTagColor from 'components/ConsumerGroups/Utils/TagColor';
import PageLoader from 'components/common/PageLoader/PageLoader'; import PageLoader from 'components/common/PageLoader/PageLoader';
import getTagColor from 'components/common/Tag/getTagColor';
export interface Props extends Topic, TopicDetails { export interface Props extends Topic, TopicDetails {
clusterName: ClusterName; clusterName: ClusterName;

View file

@ -0,0 +1,27 @@
import {
ConnectorState,
ConnectorStatus,
ConsumerGroup,
ConsumerGroupState,
TaskStatus,
} from 'generated-sources';
const getTagColor = ({
state,
}: ConnectorStatus | TaskStatus | ConsumerGroup) => {
switch (state) {
case ConnectorState.RUNNING:
case ConsumerGroupState.STABLE:
return 'green';
case ConnectorState.FAILED:
case ConnectorState.TASK_FAILED:
case ConsumerGroupState.DEAD:
return 'red';
case ConsumerGroupState.EMPTY:
return 'white';
default:
return 'yellow';
}
};
export default getTagColor;