import React from 'react'; import { ClusterName, BrokerMetrics, ZooKeeperStatus } from 'redux/interfaces'; import useInterval from 'lib/hooks/useInterval'; import cx from 'classnames'; import MetricsWrapper from 'components/common/Dashboard/MetricsWrapper'; import Indicator from 'components/common/Dashboard/Indicator'; import Breadcrumb from 'components/common/Breadcrumb/Breadcrumb'; interface Props extends BrokerMetrics { clusterName: ClusterName; isFetched: boolean; fetchBrokers: (clusterName: ClusterName) => void; fetchBrokerMetrics: (clusterName: ClusterName) => void; } const Topics: React.FC = ({ clusterName, isFetched, brokerCount, activeControllers, zooKeeperStatus, onlinePartitionCount, offlinePartitionCount, inSyncReplicasCount, outOfSyncReplicasCount, underReplicatedPartitionCount, fetchBrokers, fetchBrokerMetrics, }) => { React.useEffect( () => { fetchBrokers(clusterName); fetchBrokerMetrics(clusterName); }, [fetchBrokers, fetchBrokerMetrics, clusterName], ); useInterval(() => { fetchBrokerMetrics(clusterName); }, 5000); const zkOnline = zooKeeperStatus === ZooKeeperStatus.online; return (
Brokers overview {brokerCount} {activeControllers} {zkOnline ? 'Online' : 'Offline'} {onlinePartitionCount} of {onlinePartitionCount + offlinePartitionCount} {underReplicatedPartitionCount} {inSyncReplicasCount} {outOfSyncReplicasCount}
); }; export default Topics;