Skip to content

Commit abd097d

Browse files
committed
fix: design fixes
1 parent d24374a commit abd097d

File tree

8 files changed

+27
-65
lines changed

8 files changed

+27
-65
lines changed

src/containers/Tenant/Query/QueryEditorControls/EditorButton.scss

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
}
99

1010
&__stop-button {
11-
color: var(--g-color-text-brand-contrast);
12-
background-color: var(--g-color-text-danger);
1311
&_error {
1412
@include mixins.query-buttons-animations();
1513
}

src/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ export const QueryEditorControls = ({
106106
loading={cancelQueryResponse.isLoading}
107107
error={Boolean(cancelQueryResponse.error)}
108108
onClick={onStopButtonClick}
109+
view="action"
109110
/>
110111
);
111112

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,19 @@
22

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

9-
&__head {
10-
margin-top: var(--g-spacing-4);
10+
&__title {
11+
display: flex;
12+
align-items: center;
13+
gap: var(--g-spacing-2);
14+
15+
padding-top: var(--g-spacing-4);
16+
padding-bottom: var(--g-spacing-4);
17+
padding-left: var(--g-spacing-4);
1118
}
1219

1320
&__tab-title {

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,16 @@ export function ResultSetsViewer(props: ResultSetsViewerProps) {
2828
const tabsItems: TabsItemProps[] =
2929
resultSets?.map((_, index) => {
3030
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);
3631
return {
3732
id: String(index),
3833
title: (
3934
<div className={b('tab-title')}>
4035
<Text>
41-
{`Result${resultSets.length > 1 ? ` #${index + 1}` : ''}${resultSets?.[index]?.truncated ? '(T)' : ''}`}
36+
{`Result #${index + 1}${resultSets?.[index]?.truncated ? '(T)' : ''}`}
4237
</Text>
4338
<Text color="secondary">{resultSet.result?.length || 0}</Text>
4439
</div>
4540
),
46-
label: rowsPerSecondFormatted
47-
? {
48-
content: `${rowsPerSecondFormatted} rows/s`,
49-
}
50-
: undefined,
5141
};
5242
}) || [];
5343

@@ -64,10 +54,20 @@ export function ResultSetsViewer(props: ResultSetsViewerProps) {
6454
);
6555
};
6656

57+
const renderSingleResult = () => {
58+
const result = resultSets?.[0];
59+
return (
60+
<div className={b('title')}>
61+
<Text>{`Result ${result?.truncated ? '(T)' : ''}`}</Text>
62+
<Text color="secondary">{result?.result?.length || 0}</Text>
63+
</div>
64+
);
65+
};
66+
6767
return (
6868
<div className={b('result-wrapper')}>
6969
{props.error ? <QueryResultError error={error} /> : null}
70-
{renderTabs()}
70+
{resultSets?.length && resultSets?.length > 1 ? renderTabs() : renderSingleResult()}
7171
{currentResult ? (
7272
<div className={b('result')}>
7373
<QueryResultTable
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
.ydb-query-settings-banner {
2-
margin: var(--g-spacing-1) var(--g-spacing-5);
2+
margin-top: var(--g-spacing-4);
3+
margin-right: var(--g-spacing-4);
4+
margin-left: var(--g-spacing-4);
35
}

src/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export function QuerySettingsBanner() {
1717
className={b()}
1818
theme="info"
1919
align="baseline"
20+
style={{paddingTop: 11, paddingBottom: 11}}
2021
message={
2122
<QuerySettingsDescription
2223
prefix={i18n('banner.query-settings.message')}

src/store/reducers/query/streamingReducers.ts

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type {PayloadAction} from '@reduxjs/toolkit';
22

3-
import type {StreamMetrics} from '../../../types/store/query';
43
import type {
54
QueryResponseChunk,
65
SessionChunk,
@@ -58,38 +57,11 @@ export const setStreamQueryResponse = (
5857
}
5958
};
6059

61-
const updateStreamMetrics = (metrics: StreamMetrics, totalNewRows: number) => {
62-
const currentTime = Date.now();
63-
const WINDOW_SIZE = 5000; // 5 seconds in milliseconds
64-
65-
metrics.recentChunks.push({timestamp: currentTime, rowCount: totalNewRows});
66-
metrics.recentChunks = metrics.recentChunks.filter(
67-
(chunk) => currentTime - chunk.timestamp <= WINDOW_SIZE,
68-
);
69-
70-
if (metrics.recentChunks.length > 0) {
71-
const oldestChunkTime = metrics.recentChunks[0].timestamp;
72-
const timeWindow = (currentTime - oldestChunkTime) / 1000;
73-
const totalRows = metrics.recentChunks.reduce(
74-
(sum: number, chunk) => sum + chunk.rowCount,
75-
0,
76-
);
77-
metrics.rowsPerSecond = timeWindow > 0 ? totalRows / timeWindow : 0;
78-
}
79-
80-
metrics.lastUpdateTime = currentTime;
81-
};
82-
8360
const getEmptyResultSet = () => {
8461
return {
8562
columns: [],
8663
result: [],
8764
truncated: false,
88-
streamMetrics: {
89-
rowsPerSecond: 0,
90-
lastUpdateTime: Date.now(),
91-
recentChunks: [],
92-
},
9365
};
9466
};
9567

@@ -123,11 +95,6 @@ export const addStreamingChunks = (state: QueryState, action: PayloadAction<Stre
12395
return acc;
12496
}, new Map<number, StreamDataChunk>());
12597

126-
const totalNewRows = action.payload.reduce(
127-
(sum: number, chunk) => sum + (chunk.result.rows?.length || 0),
128-
0,
129-
);
130-
13198
// Process merged chunks
13299
for (const [resultIndex, chunk] of mergedChunks.entries()) {
133100
const {columns, rows} = chunk.result;
@@ -149,9 +116,5 @@ export const addStreamingChunks = (state: QueryState, action: PayloadAction<Stre
149116
resultSet.result?.push(row);
150117
});
151118
resultSet.truncated = chunk.result.truncated;
152-
153-
if (resultSet.streamMetrics) {
154-
updateStreamMetrics(resultSet.streamMetrics, totalNewRows);
155-
}
156119
}
157120
};

src/types/store/query.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,10 @@ import type {
2020
} from '../api/query';
2121
import type {ValueOf} from '../common';
2222

23-
export interface StreamMetrics {
24-
rowsPerSecond: number;
25-
lastUpdateTime: number;
26-
recentChunks: Array<{
27-
timestamp: number;
28-
rowCount: number;
29-
}>;
30-
}
31-
3223
export interface ParsedResultSet {
3324
columns?: ColumnType[];
3425
result?: KeyValueRow[];
3526
truncated?: boolean;
36-
streamMetrics?: StreamMetrics;
3727
}
3828

3929
export interface IQueryResult {

0 commit comments

Comments
 (0)