Skip to content

Commit d6b2179

Browse files
committed
fix: review fixes
1 parent 1572a21 commit d6b2179

File tree

5 files changed

+51
-20
lines changed

5 files changed

+51
-20
lines changed

src/components/CriticalActionDialog/CriticalActionDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const b = cn('ydb-critical-dialog');
1515

1616
const parseError = (error: IResponseError) => {
1717
if (error.data && 'issues' in error.data && error.data.issues) {
18-
return <ResultIssues data={error.data} />;
18+
return <ResultIssues hideSeverity data={error.data} />;
1919
}
2020
if (error.status === 403) {
2121
return criticalActionDialogKeyset('no-rights-error');

src/containers/Operations/Operations.scss

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,4 @@
22
&__search {
33
width: 220px;
44
}
5-
6-
&__buttons-container {
7-
display: flex;
8-
gap: var(--g-spacing-2);
9-
}
105
}

src/containers/Operations/columns.tsx

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
import {duration} from '@gravity-ui/date-utils';
22
import {Ban, CircleStop} from '@gravity-ui/icons';
33
import type {Column as DataTableColumn} from '@gravity-ui/react-data-table';
4-
import {Icon, Text} from '@gravity-ui/uikit';
4+
import {Flex, Icon, Text} from '@gravity-ui/uikit';
55

66
import {ButtonWithConfirmDialog} from '../../components/ButtonWithConfirmDialog/ButtonWithConfirmDialog';
77
import {CellWithPopover} from '../../components/CellWithPopover/CellWithPopover';
88
import {operationsApi} from '../../store/reducers/operations';
99
import type {TOperation} from '../../types/api/operations';
1010
import {EStatusCode} from '../../types/api/operations';
1111
import {EMPTY_DATA_PLACEHOLDER, HOUR_IN_SECONDS, SECOND_IN_MS} from '../../utils/constants';
12+
import createToast from '../../utils/createToast';
1213
import {formatDateTime} from '../../utils/dataFormatters/dataFormatters';
1314
import {parseProtobufTimestampToMs} from '../../utils/timeParsers';
1415

1516
import {COLUMNS_NAMES, COLUMNS_TITLES} from './constants';
1617
import i18n from './i18n';
17-
import {b} from './shared';
1818

1919
import './Operations.scss';
2020

@@ -162,15 +162,22 @@ function OperationsActions({operation, database, refreshTable}: OperationsAction
162162
}
163163

164164
return (
165-
<div className={b('buttons-container')}>
165+
<Flex gap="2">
166166
<ButtonWithConfirmDialog
167167
buttonView="outlined"
168168
dialogHeader={i18n('header_forget')}
169169
dialogText={i18n('text_forget')}
170170
onConfirmAction={() =>
171171
forgetOperation({id, database})
172172
.unwrap()
173-
.then(() => refreshTable())
173+
.then(() => {
174+
createToast({
175+
name: 'Forgotten',
176+
title: i18n('text_forgotten', {id}),
177+
type: 'success',
178+
});
179+
refreshTable();
180+
})
174181
}
175182
buttonDisabled={isLoadingCancel}
176183
withPopover
@@ -187,7 +194,14 @@ function OperationsActions({operation, database, refreshTable}: OperationsAction
187194
onConfirmAction={() =>
188195
cancelOperation({id, database})
189196
.unwrap()
190-
.then(() => refreshTable())
197+
.then(() => {
198+
createToast({
199+
name: 'Cancelled',
200+
title: i18n('text_cancelled', {id}),
201+
type: 'success',
202+
});
203+
refreshTable();
204+
})
191205
}
192206
buttonDisabled={isForgetLoading}
193207
withPopover
@@ -197,6 +211,6 @@ function OperationsActions({operation, database, refreshTable}: OperationsAction
197211
>
198212
<Icon data={CircleStop} />
199213
</ButtonWithConfirmDialog>
200-
</div>
214+
</Flex>
201215
);
202216
}

src/containers/Operations/i18n/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@
1818
"header_cancel": "Cancel operation",
1919
"header_forget": "Forget operation",
2020
"text_cancel": "The operation will be cancelled. Do you want to proceed?",
21-
"text_forget": "The operation will be forgotten. Do you want to proceed?"
21+
"text_forget": "The operation will be forgotten. Do you want to proceed?",
22+
"text_forgotten": "The operation {{id}} has been forgotten",
23+
"text_cancelled": "The operation {{id}} has been cancelled"
2224
}

src/containers/Tenant/Query/Issues/Issues.tsx

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ const blockIssue = cn('kv-issue');
2525

2626
interface ResultIssuesProps {
2727
data: ErrorResponse | string;
28+
hideSeverity?: boolean;
2829
}
2930

30-
export function ResultIssues({data}: ResultIssuesProps) {
31+
export function ResultIssues({data, hideSeverity}: ResultIssuesProps) {
3132
const [showIssues, setShowIssues] = React.useState(false);
3233

3334
const issues = typeof data === 'string' ? undefined : data?.issues;
@@ -41,7 +42,11 @@ export function ResultIssues({data}: ResultIssuesProps) {
4142
const severity = getSeverity(data?.error?.severity);
4243
content = (
4344
<React.Fragment>
44-
<IssueSeverity severity={severity} />{' '}
45+
{hideSeverity ? null : (
46+
<React.Fragment>
47+
<IssueSeverity severity={severity} />{' '}
48+
</React.Fragment>
49+
)}
4550
<span className={blockWrapper('error-message-text')}>
4651
{data?.error?.message}
4752
</span>
@@ -62,29 +67,44 @@ export function ResultIssues({data}: ResultIssuesProps) {
6267
</Button>
6368
)}
6469
</div>
65-
{hasIssues && showIssues && <Issues issues={issues} />}
70+
{hasIssues && showIssues && <Issues hideSeverity={hideSeverity} issues={issues} />}
6671
</div>
6772
);
6873
}
6974

7075
interface IssuesProps {
7176
issues: IssueMessage[] | null | undefined;
77+
hideSeverity?: boolean;
7278
}
73-
export function Issues({issues}: IssuesProps) {
79+
export function Issues({issues, hideSeverity}: IssuesProps) {
7480
const mostSevereIssue = issues?.reduce((result, issue) => {
7581
const severity = issue.severity ?? 10;
7682
return Math.min(result, severity);
7783
}, 10);
7884
return (
7985
<div className={blockIssues(null)}>
8086
{issues?.map((issue, index) => (
81-
<Issue key={index} issue={issue} expanded={issue === mostSevereIssue} />
87+
<Issue
88+
key={index}
89+
hideSeverity={hideSeverity}
90+
issue={issue}
91+
expanded={issue === mostSevereIssue}
92+
/>
8293
))}
8394
</div>
8495
);
8596
}
8697

87-
function Issue({issue, level = 0}: {issue: IssueMessage; expanded?: boolean; level?: number}) {
98+
function Issue({
99+
issue,
100+
hideSeverity,
101+
level = 0,
102+
}: {
103+
issue: IssueMessage;
104+
expanded?: boolean;
105+
hideSeverity?: boolean;
106+
level?: number;
107+
}) {
88108
const [isExpand, setIsExpand] = React.useState(true);
89109
const severity = getSeverity(issue.severity);
90110
const position = getIssuePosition(issue);
@@ -111,7 +131,7 @@ function Issue({issue, level = 0}: {issue: IssueMessage; expanded?: boolean; lev
111131
<ArrowToggle direction={arrowDirection} size={16} />
112132
</Button>
113133
)}
114-
<IssueSeverity severity={severity} />
134+
{hideSeverity ? null : <IssueSeverity severity={severity} />}
115135

116136
<span className={blockIssue('message')}>
117137
{position && (

0 commit comments

Comments
 (0)