Skip to content

Commit 4b0d84b

Browse files
committed
fix(QueryEditor): result status for aborted connection
1 parent 44528a8 commit 4b0d84b

File tree

4 files changed

+31
-12
lines changed

4 files changed

+31
-12
lines changed
Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,47 @@
1+
import type {ReactNode} from 'react';
2+
import type {AxiosError} from 'axios';
13
import cn from 'bem-cn-lite';
24

5+
import {Icon as UiKitIcon} from '@gravity-ui/uikit';
6+
37
import Icon from '../Icon/Icon';
48

9+
import questionIcon from '../../assets/icons/question.svg';
10+
511
import './QueryExecutionStatus.scss';
612

713
const b = cn('kv-query-execution-status');
814

915
interface QueryExecutionStatusProps {
1016
className?: string;
11-
hasError?: boolean;
17+
error?: AxiosError | Record<string, any>;
1218
}
1319

14-
function QueryExecutionStatus({className, hasError}: QueryExecutionStatusProps) {
15-
return hasError === undefined ? null : (
16-
<div className={b(null, className)}>
20+
export const QueryExecutionStatus = ({className, error}: QueryExecutionStatusProps) => {
21+
let icon: ReactNode;
22+
let label: string;
23+
24+
if (error?.code === 'ECONNABORTED') {
25+
icon = <UiKitIcon data={questionIcon} size={16} />;
26+
label = 'Connection aborted';
27+
} else {
28+
const hasError = Boolean(error);
29+
icon = (
1730
<Icon
1831
name={hasError ? 'failure' : 'success'}
1932
viewBox={hasError ? '0 0 512 512' : '0 0 16 16'}
2033
width={16}
2134
height={16}
2235
className={b('result-status-icon', {error: hasError})}
2336
/>
24-
{hasError ? 'Failed' : 'Completed'}
37+
);
38+
label = hasError ? 'Failed' : 'Completed';
39+
}
40+
41+
return (
42+
<div className={b(null, className)}>
43+
{icon}
44+
{label}
2545
</div>
2646
);
27-
}
28-
29-
export default QueryExecutionStatus;
47+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './QueryExecutionStatus';

src/containers/Tenant/QueryEditor/QueryExplain/QueryExplain.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from '@gravity-ui/paranoid';
1313
import {renderExplainNode} from '../../../../utils';
1414
import {explainVersions} from '../../../../store/reducers/explainQuery';
15-
import QueryExecutionStatus from '../../../../components/QueryExecutionStatus/QueryExecutionStatus';
15+
import {QueryExecutionStatus} from '../../../../components/QueryExecutionStatus';
1616
import Divider from '../../../../components/Divider/Divider';
1717
import EnableFullscreenButton from '../../../../components/EnableFullscreenButton/EnableFullscreenButton';
1818
import {PaneVisibilityToggleButtons} from '../../utils/paneVisibilityToggleHelpers';
@@ -263,7 +263,7 @@ function QueryExplain(props) {
263263
{!props.loading && (
264264
<React.Fragment>
265265
<div className={b('controls-right')}>
266-
<QueryExecutionStatus hasError={Boolean(props.error)} />
266+
<QueryExecutionStatus error={props.error} />
267267
{!props.error && (
268268
<React.Fragment>
269269
<Divider />

src/containers/Tenant/QueryEditor/QueryResult/QueryResult.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {disableFullscreen} from '../../../../store/reducers/fullscreen';
1111

1212
import './QueryResult.scss';
1313
import {PaneVisibilityToggleButtons} from '../../utils/paneVisibilityToggleHelpers';
14-
import QueryExecutionStatus from '../../../../components/QueryExecutionStatus/QueryExecutionStatus';
14+
import {QueryExecutionStatus} from '../../../../components/QueryExecutionStatus';
1515
import EnableFullscreenButton from '../../../../components/EnableFullscreenButton/EnableFullscreenButton';
1616
import ResultIssues from '../Issues/Issues';
1717
import {prepareQueryError} from '../../../../utils/query';
@@ -127,7 +127,7 @@ function QueryResult(props) {
127127
<React.Fragment>
128128
<div className={b('controls')}>
129129
<div className={b('controls-right')}>
130-
<QueryExecutionStatus hasError={Boolean(props.error)} />
130+
<QueryExecutionStatus error={props.error} />
131131

132132
{props.stats && !props.error && (
133133
<React.Fragment>

0 commit comments

Comments
 (0)