import React from 'react'; import { ClusterId, BrokerMetrics, ZooKeeperStatus } from 'redux/interfaces'; import useInterval from 'lib/hooks/useInterval'; import formatBytes from 'lib/utils/formatBytes'; 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 { clusterId: string; isFetched: boolean; minDiskUsage: number; maxDiskUsage: number; fetchBrokers: (clusterId: ClusterId) => void; fetchBrokerMetrics: (clusterId: ClusterId) => void; } const Topics: React.FC = ({ clusterId, isFetched, brokerCount, activeControllers, zooKeeperStatus, onlinePartitionCount, offlinePartitionCount, underReplicatedPartitionCount, diskUsageDistribution, minDiskUsage, maxDiskUsage, networkPoolUsage, requestPoolUsage, fetchBrokers, fetchBrokerMetrics, }) => { React.useEffect( () => { fetchBrokers(clusterId); fetchBrokerMetrics(clusterId); }, [fetchBrokers, fetchBrokerMetrics, clusterId], ); useInterval(() => { fetchBrokerMetrics(clusterId); }, 5000); const [minDiskUsageValue, minDiskUsageSize] = formatBytes(minDiskUsage); const [maxDiskUsageValue, maxDiskUsageSize] = formatBytes(maxDiskUsage); const zkOnline = zooKeeperStatus === ZooKeeperStatus.online; return (
Brokers overview {brokerCount} {activeControllers} {zkOnline ? 'Online' : 'Offline'} {onlinePartitionCount} of {onlinePartitionCount + offlinePartitionCount} {underReplicatedPartitionCount} Soon Soon {maxDiskUsageValue} {maxDiskUsageSize} {minDiskUsageValue} {minDiskUsageSize} {diskUsageDistribution} {Math.round(networkPoolUsage * 10000) / 100} % {Math.round(requestPoolUsage * 10000) / 100} %
); } export default Topics;