import React from 'react'; import { Partition, Replica } from 'generated-sources'; import ClusterContext from 'components/contexts/ClusterContext'; import BytesFormatted from 'components/common/BytesFormatted/BytesFormatted'; import { Table } from 'components/common/table/Table/Table.styled'; import TableHeaderCell from 'components/common/table/TableHeaderCell/TableHeaderCell'; import * as Metrics from 'components/common/Metrics'; import { Tag } from 'components/common/Tag/Tag.styled'; import { useAppDispatch } from 'lib/hooks/redux'; import { RouteParamsClusterTopic } from 'lib/paths'; import useAppParams from 'lib/hooks/useAppParams'; import { Dropdown, DropdownItem } from 'components/common/Dropdown'; import { clearTopicMessages } from 'redux/reducers/topicMessages/topicMessagesSlice'; import { useTopicDetails } from 'lib/hooks/api/topics'; import * as S from './Overview.styled'; const Overview: React.FC = () => { const { clusterName, topicName } = useAppParams(); const dispatch = useAppDispatch(); const { data } = useTopicDetails({ clusterName, topicName }); const { isReadOnly } = React.useContext(ClusterContext); const messageCount = React.useMemo( () => (data?.partitions || []).reduce((memo, partition) => { return memo + partition.offsetMax - partition.offsetMin; }, 0), [data] ); return ( <> {data?.partitionCount} {data?.replicationFactor} {data?.underReplicatedPartitions === 0 ? ( {data?.underReplicatedPartitions} ) : ( {data?.underReplicatedPartitions} )} {data?.inSyncReplicas && data?.replicas && data?.inSyncReplicas < data?.replicas ? ( {data?.inSyncReplicas} ) : ( data?.inSyncReplicas )} of {data?.replicas} {data?.internal ? 'Internal' : 'External'} {data?.segmentCount} {data?.cleanUpPolicy || 'Unknown'} {messageCount} {data?.partitions?.map((partition: Partition) => ( ))} {data?.partitions?.length === 0 && ( )}
{partition.partition} {partition.replicas?.map(({ broker, leader }: Replica) => ( {broker} ))} {partition.offsetMin} {partition.offsetMax} {partition.offsetMax - partition.offsetMin} {!data?.internal && !isReadOnly && data?.cleanUpPolicy === 'DELETE' ? ( dispatch( clearTopicMessages({ clusterName, topicName, partitions: [partition.partition], }) ).unwrap() } danger > Clear Messages ) : null}
No Partitions found
); }; export default Overview;