import { Card, Typography } from 'antd'; // components import ListLogView from 'components/Logs/ListLogView'; import RawLogView from 'components/Logs/RawLogView'; import Spinner from 'components/Spinner'; import { LOCALSTORAGE } from 'constants/localStorage'; import ExplorerControlPanel from 'container/ExplorerControlPanel'; import { Heading } from 'container/LogsTable/styles'; import { useOptionsMenu } from 'container/OptionsMenu'; import { contentStyle } from 'container/Trace/Search/config'; import { useQueryBuilder } from 'hooks/queryBuilder/useQueryBuilder'; import useFontFaceObserver from 'hooks/useFontObserver'; import { memo, useCallback, useMemo } from 'react'; import { Virtuoso } from 'react-virtuoso'; // interfaces import { ILog } from 'types/api/logs/log'; import { DataSource, StringOperators } from 'types/common/queryBuilder'; import InfinityTableView from './InfinityTableView'; import { LogsExplorerListProps } from './LogsExplorerList.interfaces'; import { InfinityWrapperStyled } from './styles'; import { convertKeysToColumnFields } from './utils'; function Footer(): JSX.Element { return ; } function LogsExplorerList({ isLoading, currentStagedQueryData, logs, onOpenDetailedView, onEndReached, onExpand, onAddToQuery, }: LogsExplorerListProps): JSX.Element { const { initialDataSource } = useQueryBuilder(); const { options, config } = useOptionsMenu({ storageKey: LOCALSTORAGE.LOGS_LIST_OPTIONS, dataSource: initialDataSource || DataSource.METRICS, aggregateOperator: currentStagedQueryData?.aggregateOperator || StringOperators.NOOP, }); useFontFaceObserver( [ { family: 'Fira Code', weight: '300', }, ], options.format === 'raw', { timeout: 5000, }, ); const selectedFields = useMemo( () => convertKeysToColumnFields(options.selectColumns), [options], ); const getItemContent = useCallback( (_: number, log: ILog): JSX.Element => { if (options.format === 'raw') { return ( ); } return ( ); }, [ options.format, options.maxLines, selectedFields, onOpenDetailedView, onAddToQuery, onExpand, ], ); const renderContent = useMemo(() => { const components = isLoading ? { Footer, } : {}; if (options.format === 'table') { return ( ); } return ( ); }, [ isLoading, logs, options.format, options.maxLines, onEndReached, getItemContent, selectedFields, onExpand, ]); return ( <> {options.format !== 'table' && ( Event )} {!isLoading && logs.length === 0 && ( No logs lines found )} {renderContent} ); } export default memo(LogsExplorerList);