Skip to content

Commit 8921243

Browse files
committed
fix: tabs
1 parent d62660c commit 8921243

File tree

2 files changed

+38
-42
lines changed

2 files changed

+38
-42
lines changed

src/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.scss

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
.ydb-query-result-sets-viewer {
44
&__tabs {
5-
padding-left: 10px;
5+
padding-top: var(--g-spacing-2);
6+
padding-left: var(--g-spacing-4);
67
}
78

89
&__head {
910
margin-top: var(--g-spacing-4);
1011
}
1112

12-
&__row-count {
13-
margin-left: var(--g-spacing-1);
13+
&__tab-title {
14+
display: flex;
15+
align-items: center;
16+
gap: var(--g-spacing-2);
1417
}
1518

1619
&__result-wrapper {

src/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.tsx

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import type {Settings} from '@gravity-ui/react-data-table';
2+
import type {TabsItemProps} from '@gravity-ui/uikit';
23
import {Tabs, Text} from '@gravity-ui/uikit';
34

45
import {QueryResultTable} from '../../../../../../components/QueryResultTable';
56
import type {ParsedResultSet} from '../../../../../../types/store/query';
6-
import {getArray} from '../../../../../../utils';
77
import {cn} from '../../../../../../utils/cn';
8-
import i18n from '../../i18n';
98
import {QueryResultError} from '../QueryResultError/QueryResultError';
109

1110
import './ResultSetsViewer.scss';
@@ -23,47 +22,42 @@ interface ResultSetsViewerProps {
2322
export function ResultSetsViewer(props: ResultSetsViewerProps) {
2423
const {selectedResultSet, setSelectedResultSet, resultSets, error} = props;
2524

26-
const resultsSetsCount = resultSets?.length || 0;
2725
const currentResult = resultSets?.[selectedResultSet];
2826

2927
const renderTabs = () => {
30-
if (resultsSetsCount > 1) {
31-
const tabsItems = getArray(resultsSetsCount).map((item) => ({
32-
id: String(item),
33-
title: `Result #${item + 1}${resultSets?.[item]?.truncated ? ' (T)' : ''}`,
34-
}));
28+
const tabsItems: TabsItemProps[] =
29+
resultSets?.map((_, index) => {
30+
const resultSet = resultSets?.[index];
31+
const rowsPerSecond = resultSet?.streamMetrics?.rowsPerSecond;
32+
const rowsPerSecondFormatted =
33+
rowsPerSecond && rowsPerSecond > 1000
34+
? `${(rowsPerSecond / 1000).toFixed(0)}k`
35+
: rowsPerSecond?.toFixed(0);
36+
return {
37+
id: String(index),
38+
title: (
39+
<div className={b('tab-title')}>
40+
<Text>
41+
{`Result ${resultSets.length > 1 ? `#${index + 1}${resultSets?.[index]?.truncated ? ' (T)' : ''}` : ''}`}
42+
</Text>
43+
<Text color="secondary">{resultSet.result?.length || 0}</Text>
44+
</div>
45+
),
46+
label: {
47+
content: `${rowsPerSecondFormatted} rows/s`,
48+
},
49+
};
50+
}) || [];
3551

36-
return (
37-
<div>
38-
<Tabs
39-
className={b('tabs')}
40-
size="l"
41-
items={tabsItems}
42-
activeTab={String(selectedResultSet)}
43-
onSelectTab={(tabId) => setSelectedResultSet(Number(tabId))}
44-
/>
45-
</div>
46-
);
47-
}
48-
49-
return null;
50-
};
51-
52-
const renderResultHeadWithCount = () => {
5352
return (
54-
<div className={b('head')}>
55-
<Text variant="subheader-3">
56-
{currentResult?.truncated ? i18n('title.truncated') : i18n('title.result')}
57-
</Text>
58-
{currentResult?.result ? (
59-
<Text color="secondary" variant="body-2" className={b('row-count')}>
60-
{`(${currentResult?.result.length}${
61-
currentResult.streamMetrics?.rowsPerSecond
62-
? `, ${currentResult.streamMetrics.rowsPerSecond.toFixed(0)} rows/s`
63-
: ''
64-
})`}
65-
</Text>
66-
) : null}
53+
<div>
54+
<Tabs
55+
className={b('tabs')}
56+
size="l"
57+
items={tabsItems}
58+
activeTab={String(selectedResultSet)}
59+
onSelectTab={(tabId) => setSelectedResultSet(Number(tabId))}
60+
/>
6761
</div>
6862
);
6963
};
@@ -74,7 +68,6 @@ export function ResultSetsViewer(props: ResultSetsViewerProps) {
7468
{props.error ? <QueryResultError error={error} /> : null}
7569
{currentResult ? (
7670
<div className={b('result')}>
77-
{renderResultHeadWithCount()}
7871
<QueryResultTable
7972
settings={props.tableSettings}
8073
data={currentResult.result}

0 commit comments

Comments
 (0)