kafka-ui/kafka-ui-react-app/src/components/Topics/List/ListItem.tsx
soffest 494443bb08
OpenAPI integration for kafka-ui frontend (#120)
* Added react openapi gen

* Integrated Openapi to React

Co-authored-by: German Osin <german.osin@gmail.com>
Co-authored-by: Sofia Shnaidman <sshnaidman@provectus.com>
2020-11-20 14:16:27 +03:00

40 lines
1 KiB
TypeScript

import React from 'react';
import cx from 'classnames';
import { NavLink } from 'react-router-dom';
import { TopicWithDetailedInfo } from 'redux/interfaces';
const ListItem: React.FC<TopicWithDetailedInfo> = ({
name,
internal,
partitions,
}) => {
const outOfSyncReplicas = React.useMemo(() => {
if (partitions === undefined || partitions.length === 0) {
return 0;
}
return partitions.reduce((memo: number, { replicas }) => {
const outOfSync = replicas?.filter(({ inSync }) => !inSync)
return memo + (outOfSync?.length || 0);
}, 0);
}, [partitions])
return (
<tr>
<td>
<NavLink exact to={`topics/${name}`} activeClassName="is-active" className="title is-6">
{name}
</NavLink>
</td>
<td>{partitions?.length}</td>
<td>{outOfSyncReplicas}</td>
<td>
<div className={cx('tag is-small', internal ? 'is-light' : 'is-success')}>
{internal ? 'Internal' : 'External'}
</div>
</td>
</tr>
);
}
export default ListItem;