import React, { FC, useEffect } from 'react'; import useAppParams from 'lib/hooks/useAppParams'; import * as Metrics from 'components/common/Metrics'; import PageLoader from 'components/common/PageLoader/PageLoader'; import ListItem from 'components/KsqlDb/List/ListItem'; import { useDispatch, useSelector } from 'react-redux'; import { fetchKsqlDbTables } from 'redux/reducers/ksqlDb/ksqlDbSlice'; import { getKsqlDbTables } from 'redux/reducers/ksqlDb/selectors'; import { clusterKsqlDbQueryRelativePath, ClusterNameRoute } from 'lib/paths'; import PageHeading from 'components/common/PageHeading/PageHeading'; import { Table } from 'components/common/table/Table/Table.styled'; import TableHeaderCell from 'components/common/table/TableHeaderCell/TableHeaderCell'; import { Button } from 'components/common/Button/Button'; import { KsqlDescription } from 'redux/interfaces/ksqlDb'; export type KsqlDescriptionAccessor = keyof KsqlDescription; interface HeadersType { Header: string; accessor: KsqlDescriptionAccessor; } const headers: HeadersType[] = [ { Header: 'Type', accessor: 'type' }, { Header: 'Name', accessor: 'name' }, { Header: 'Topic', accessor: 'topic' }, { Header: 'Key Format', accessor: 'keyFormat' }, { Header: 'Value Format', accessor: 'valueFormat' }, ]; const accessors = headers.map((header) => header.accessor); const List: FC = () => { const dispatch = useDispatch(); const { clusterName } = useAppParams(); const { rows, fetching, tablesCount, streamsCount } = useSelector(getKsqlDbTables); useEffect(() => { dispatch(fetchKsqlDbTables(clusterName)); }, [clusterName, dispatch]); return ( <> {tablesCount} {streamsCount}
{fetching ? ( ) : ( {headers.map(({ Header, accessor }) => ( ))} {rows.map((row) => ( ))} {rows.length === 0 && ( )}
No tables or streams found
)}
); }; export default List;