import { Card, Typography } from 'antd'; // components import ListLogView from 'components/Logs/ListLogView'; import RawLogView from 'components/Logs/RawLogView'; import LogsTableView from 'components/Logs/TableView'; import Spinner from 'components/Spinner'; import { LogViewMode } from 'container/LogsTable'; import { Container, Heading } from 'container/LogsTable/styles'; import { contentStyle } from 'container/Trace/Search/config'; import useFontFaceObserver from 'hooks/useFontObserver'; import { memo, useCallback, useMemo, useState } from 'react'; import { Virtuoso } from 'react-virtuoso'; // interfaces import { ILog } from 'types/api/logs/log'; import { LogsExplorerListProps } from './LogsExplorerList.interfaces'; function LogsExplorerList({ data, isLoading, }: LogsExplorerListProps): JSX.Element { const [viewMode] = useState('raw'); const [linesPerRow] = useState(20); const logs: ILog[] = useMemo(() => { if (data.length > 0 && data[0].list) { const logs: ILog[] = data[0].list.map((item) => ({ timestamp: +item.timestamp, ...item.data, })); return logs; } return []; }, [data]); useFontFaceObserver( [ { family: 'Fira Code', weight: '300', }, ], viewMode === 'raw', { timeout: 5000, }, ); // TODO: implement here linesPerRow, mode like in useSelectedLogView const getItemContent = useCallback( (index: number): JSX.Element => { const log = logs[index]; if (viewMode === 'raw') { return ( {}} /> ); } return ; }, [logs, linesPerRow, viewMode], ); const renderContent = useMemo(() => { if (viewMode === 'table') { return ( {}} /> ); } return ( ); }, [getItemContent, linesPerRow, logs, viewMode]); if (isLoading) { return ; } return ( {viewMode !== 'table' && ( Event )} {logs.length === 0 && No logs lines found} {renderContent} ); } export default memo(LogsExplorerList);