11import React from 'react' ;
22
33import type { ControlGroupOption } from '@gravity-ui/uikit' ;
4- import { RadioButton , Tabs } from '@gravity-ui/uikit' ;
4+ import { RadioButton , Tabs , Text } from '@gravity-ui/uikit' ;
55import JSONTree from 'react-json-inspector' ;
66
77import { ClipboardButton } from '../../../../components/ClipboardButton' ;
@@ -14,7 +14,7 @@ import {LoaderWrapper} from '../../../../components/LoaderWrapper/LoaderWrapper'
1414import { QueryExecutionStatus } from '../../../../components/QueryExecutionStatus' ;
1515import { QueryResultTable } from '../../../../components/QueryResultTable/QueryResultTable' ;
1616import { disableFullscreen } from '../../../../store/reducers/fullscreen' ;
17- import type { ColumnType , KeyValueRow , TKqpStatsQuery } from '../../../../types/api/query' ;
17+ import type { TKqpStatsQuery } from '../../../../types/api/query' ;
1818import type { ValueOf } from '../../../../types/common' ;
1919import type { ExecuteQueryResult } from '../../../../types/store/executeQuery' ;
2020import { getArray } from '../../../../utils' ;
@@ -74,8 +74,7 @@ export function ExecuteResult({
7474 const stats : TKqpStatsQuery | undefined = data ?. stats ;
7575 const resultsSetsCount = data ?. resultSets ?. length ;
7676 const isMulti = resultsSetsCount && resultsSetsCount > 0 ;
77- const currentResult = isMulti ? data ?. resultSets ?. [ selectedResultSet ] . result : data ?. result ;
78- const currentColumns = isMulti ? data ?. resultSets ?. [ selectedResultSet ] . columns : data ?. columns ;
77+ const currentResult = isMulti ? data ?. resultSets ?. [ selectedResultSet ] : data ;
7978 const { plan, simplifiedPlan} = React . useMemo ( ( ) => getPlan ( data ) , [ data ] ) ;
8079
8180 const resultOptions : ControlGroupOption < SectionID > [ ] = [
@@ -104,13 +103,6 @@ export function ExecuteResult({
104103 setActiveSection ( value ) ;
105104 } ;
106105
107- const renderResultTable = (
108- resultSet : KeyValueRow [ ] | undefined ,
109- columns : ColumnType [ ] | undefined ,
110- ) => {
111- return < QueryResultTable data = { resultSet } columns = { columns } settings = { { sortable : false } } /> ;
112- } ;
113-
114106 const renderResult = ( ) => {
115107 return (
116108 < div className = { b ( 'result-wrapper' ) } >
@@ -121,15 +113,29 @@ export function ExecuteResult({
121113 size = "l"
122114 items = { getArray ( resultsSetsCount ) . map ( ( item ) => ( {
123115 id : String ( item ) ,
124- title : `Result #${ item + 1 } ` ,
116+ title : `Result #${ item + 1 } ${ data ?. resultSets ?. [ item ] ?. truncated ? ' (T)' : '' } ` ,
125117 } ) ) }
126118 activeTab = { String ( selectedResultSet ) }
127119 onSelectTab = { ( tabId ) => setSelectedResultSet ( Number ( tabId ) ) }
128120 />
129121 </ div >
130122 ) }
131123 < div className = { b ( 'result' ) } >
132- { renderResultTable ( currentResult , currentColumns ) }
124+ { currentResult ?. truncated ? (
125+ < div className = { b ( 'result-head' ) } >
126+ < Text variant = "subheader-3" > { i18n ( 'truncated' ) } </ Text >
127+ < Text
128+ color = "secondary"
129+ variant = "body-2"
130+ className = { b ( 'row-count' ) }
131+ > { `(${ currentResult ?. result ?. length } )` } </ Text >
132+ </ div >
133+ ) : null }
134+ < QueryResultTable
135+ data = { currentResult ?. result }
136+ columns = { currentResult ?. columns }
137+ settings = { { sortable : false } }
138+ />
133139 </ div >
134140 </ div >
135141 ) ;
@@ -138,7 +144,7 @@ export function ExecuteResult({
138144 const getStatsToCopy = ( ) => {
139145 switch ( activeSection ) {
140146 case resultOptionsIds . result : {
141- const textResults = getPreparedResult ( currentResult ) ;
147+ const textResults = getPreparedResult ( currentResult ?. result ) ;
142148 return textResults ;
143149 }
144150 case resultOptionsIds . stats :
0 commit comments