import React from 'react'; import type {Settings} from '@gravity-ui/react-data-table'; import {Flex, Tab, TabList, TabProvider, Text} from '@gravity-ui/uikit'; import {QueryResultTable} from '../../../../../../components/QueryResultTable'; import type {QuerySourcePosition} from '../../../../../../store/reducers/query/types'; import type {ParsedResultSet} from '../../../../../../types/store/query'; import {cn} from '../../../../../../utils/cn'; import {QueryResultError} from '../QueryResultError/QueryResultError'; import './ResultSetsViewer.scss'; const b = cn('ydb-query-result-sets-viewer'); interface ResultSetsViewerProps { resultSets?: ParsedResultSet[]; selectedResultSet: number; error?: unknown; sourcePosition?: QuerySourcePosition; tableSettings?: Partial; setSelectedResultSet: (resultSet: number) => void; } export function ResultSetsViewer(props: ResultSetsViewerProps) { const {selectedResultSet, setSelectedResultSet, resultSets, error} = props; const scrollRef = React.useRef(null); const currentResult = resultSets?.[selectedResultSet]; const renderTabs = () => { return ( {resultSets?.map((_, index) => { const resultSet = resultSets?.[index]; return ( setSelectedResultSet(index)} > {`Result #${index + 1}${resultSets?.[index]?.truncated ? '(T)' : ''}`} {resultSet.result?.length || 0} ); })} ); }; const renderSingleResult = () => { const result = resultSets?.[0]; return ( {result?.truncated ? 'Truncated' : 'Result'} {result?.result?.length || 0} ); }; const renderResults = () => { if (resultSets?.length) { if (resultSets?.length > 1) { return renderTabs(); } else { return renderSingleResult(); } } return null; }; return (
{props.error ? ( ) : null} {renderResults()} {currentResult ? (
) : null}
); }