import React from 'react'; import { FullConnectorInfo } from 'generated-sources'; import { clusterConnectConnectorPath, clusterTopicPath } from 'lib/paths'; import { ClusterName } from 'redux/interfaces'; import { Link, NavLink } from 'react-router-dom'; import { useDispatch } from 'react-redux'; import { deleteConnector } from 'redux/actions'; import Dropdown from 'components/common/Dropdown/Dropdown'; import DropdownDivider from 'components/common/Dropdown/DropdownDivider'; import DropdownItem from 'components/common/Dropdown/DropdownItem'; import ConfirmationModal from 'components/common/ConfirmationModal/ConfirmationModal'; import { Tag } from 'components/common/Tag/Tag.styled'; import { TableKeyLink } from 'components/common/table/Table/TableKeyLink.styled'; import VerticalElipsisIcon from 'components/common/Icons/VerticalElipsisIcon'; import getTagColor from 'components/common/Tag/getTagColor'; import * as S from './List.styled'; export interface ListItemProps { clusterName: ClusterName; connector: FullConnectorInfo; } const ListItem: React.FC = ({ clusterName, connector: { name, connect, type, connectorClass, topics, status, tasksCount, failedTasksCount, }, }) => { const dispatch = useDispatch(); const [ isDeleteConnectorConfirmationVisible, setDeleteConnectorConfirmationVisible, ] = React.useState(false); const handleDelete = React.useCallback(() => { if (clusterName && connect && name) { dispatch(deleteConnector(clusterName, connect, name)); } setDeleteConnectorConfirmationVisible(false); }, [clusterName, connect, dispatch, name]); const runningTasks = React.useMemo(() => { if (!tasksCount) return null; return tasksCount - (failedTasksCount || 0); }, [tasksCount, failedTasksCount]); return ( {name} {connect} {type} {connectorClass} {topics?.map((t) => ( {t} ))} {status && {status.state}} {runningTasks && ( {runningTasks} of {tasksCount} )}
} right> setDeleteConnectorConfirmationVisible(true)} danger > Remove Connector
setDeleteConnectorConfirmationVisible(false)} onConfirm={handleDelete} > Are you sure want to remove {name} connector? ); }; export default ListItem;