import React from 'react'; import { ClusterId, BrokerMetrics, ZooKeeperStatus } from 'types'; import useInterval from 'lib/hooks/useInterval'; import formatBytes from 'lib/utils/formatBytes'; import cx from 'classnames'; 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); return (
Uptime

Total Brokers

{brokerCount}

Active Controllers

{activeControllers}

Zookeeper Status

{zooKeeperStatus === ZooKeeperStatus.online ? ( Online ) : ( Offline )}

Partitions

Online

{onlinePartitionCount} of {onlinePartitionCount + offlinePartitionCount}

Under Replicated

{underReplicatedPartitionCount}

In Sync Replicas

Soon

Out of Sync Replicas

Soon

Disk

Max usage

{maxDiskUsageValue} {maxDiskUsageSize}

Min Usage

{minDiskUsageValue} {minDiskUsageSize}

Distribution

{diskUsageDistribution}

System

Network pool usage

{Math.round(networkPoolUsage * 10000) / 100} %

Request pool usage

{Math.round(requestPoolUsage * 10000) / 100} %

); } export default Topics;