ydb-embedded-ui 8.12.0 → 8.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ErrorBoundary/ErrorBoundary.d.ts +3 -7
- package/dist/components/ErrorBoundary/ErrorBoundary.js +44 -7
- package/dist/components/ErrorBoundary/ErrorBoundary.js.map +1 -1
- package/dist/components/ErrorBoundary/ErrorBoundary.scss +26 -30
- package/dist/components/ErrorBoundary/i18n/en.json +7 -5
- package/dist/components/ErrorBoundary/i18n/index.d.ts +1 -1
- package/dist/components/ErrorBoundary/i18n/index.js +1 -2
- package/dist/components/ErrorBoundary/i18n/index.js.map +1 -1
- package/dist/components/ErrorBoundary/utils.d.ts +17 -0
- package/dist/components/ErrorBoundary/utils.js +44 -0
- package/dist/components/ErrorBoundary/utils.js.map +1 -0
- package/dist/components/Errors/ResponseError/ResponseError.js +3 -16
- package/dist/components/Errors/ResponseError/ResponseError.js.map +1 -1
- package/dist/components/FullNodeViewer/i18n/index.d.ts +1 -1
- package/dist/components/LinkWithIcon/LinkWithIcon.scss +1 -1
- package/dist/components/PDiskInfo/PDiskInfo.d.ts +0 -1
- package/dist/components/PDiskInfo/PDiskInfo.js +2 -5
- package/dist/components/PDiskInfo/PDiskInfo.js.map +1 -1
- package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
- package/dist/components/PDiskPopup/PDiskPopup.js +6 -2
- package/dist/components/PDiskPopup/PDiskPopup.js.map +1 -1
- package/dist/components/QueryExecutionStatus/QueryExecutionStatus.js +49 -17
- package/dist/components/QueryExecutionStatus/QueryExecutionStatus.js.map +1 -1
- package/dist/components/QueryExecutionStatus/QueryExecutionStatus.scss +0 -12
- package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.js +2 -1
- package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.scss +0 -6
- package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
- package/dist/components/VDiskPopup/VDiskPopup.js +5 -2
- package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
- package/dist/containers/App/App.scss +10 -0
- package/dist/containers/Storage/StorageGroups/columns/columns.js +1 -14
- package/dist/containers/Storage/StorageGroups/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js +3 -0
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +3 -0
- package/dist/containers/Tenant/Diagnostics/Overview/Overview.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/Credentials.d.ts +6 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/Credentials.js +15 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/Credentials.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/TransferInfo.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/TransferInfo.js +72 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/TransferInfo.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/i18n/en.json +10 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/i18n/index.d.ts +2 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/i18n/index.js +5 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/i18n/index.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/index.d.ts +1 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/index.js +2 -0
- package/dist/containers/Tenant/Diagnostics/Overview/TransferInfo/index.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +5 -8
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +5 -8
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +3 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +3 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +5 -8
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.d.ts +6 -6
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.js +4 -5
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +3 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +3 -3
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.d.ts +1 -34
- package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.js +1 -5
- package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.d.ts +1 -3
- package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js +1 -5
- package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopShards/columns/columns.js +6 -17
- package/dist/containers/Tenant/Diagnostics/TopShards/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js +14 -0
- package/dist/containers/Tenant/ObjectSummary/ObjectSummary.js.map +1 -1
- package/dist/containers/Tenant/Query/NewSQL/NewSQL.js +17 -0
- package/dist/containers/Tenant/Query/NewSQL/NewSQL.js.map +1 -1
- package/dist/containers/Tenant/Query/NewSQL/i18n/en.json +5 -1
- package/dist/containers/Tenant/Query/NewSQL/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +11 -19
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/helpers.d.ts +10 -0
- package/dist/containers/Tenant/Query/QueryEditor/helpers.js +15 -0
- package/dist/containers/Tenant/Query/QueryEditor/helpers.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.d.ts +15 -0
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.js +26 -0
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.js.map +1 -0
- package/dist/containers/Tenant/Query/{CancelQueryButton/CancelQueryButton.scss → QueryEditorControls/EditorButton.scss} +7 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +4 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +77 -18
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.scss +3 -4
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.d.ts +1 -4
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +16 -10
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.scss +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/useQueryInfoMenuItems.js +2 -7
- package/dist/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/useQueryInfoMenuItems.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js +2 -2
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.scss +2 -1
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js +25 -20
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.scss +7 -7
- package/dist/containers/Tenant/Query/QueryResult/i18n/en.json +7 -3
- package/dist/containers/Tenant/Query/QueryResult/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.js +1 -1
- package/dist/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.js.map +1 -1
- package/dist/containers/Tenant/Query/QuerySettingsBanner/QuerySettingsBanner.scss +3 -1
- package/dist/containers/Tenant/Query/QueryStoppedBanner/QueryStoppedBanner.d.ts +2 -0
- package/dist/containers/Tenant/Query/QueryStoppedBanner/QueryStoppedBanner.js +17 -0
- package/dist/containers/Tenant/Query/QueryStoppedBanner/QueryStoppedBanner.js.map +1 -0
- package/dist/containers/Tenant/Query/QueryStoppedBanner/QueryStoppedBanner.scss +5 -0
- package/dist/containers/Tenant/Query/i18n/en.json +5 -1
- package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/i18n/en.json +3 -0
- package/dist/containers/Tenant/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/utils/controls.js +2 -0
- package/dist/containers/Tenant/utils/controls.js.map +1 -1
- package/dist/containers/Tenant/utils/newSQLQueryActions.d.ts +3 -0
- package/dist/containers/Tenant/utils/newSQLQueryActions.js +4 -1
- package/dist/containers/Tenant/utils/newSQLQueryActions.js.map +1 -1
- package/dist/containers/Tenant/utils/schema.js +14 -0
- package/dist/containers/Tenant/utils/schema.js.map +1 -1
- package/dist/containers/Tenant/utils/schemaActions.js +17 -1
- package/dist/containers/Tenant/utils/schemaActions.js.map +1 -1
- package/dist/containers/Tenant/utils/schemaQueryTemplates.d.ts +3 -0
- package/dist/containers/Tenant/utils/schemaQueryTemplates.js +48 -0
- package/dist/containers/Tenant/utils/schemaQueryTemplates.js.map +1 -1
- package/dist/lib.d.ts +1 -1
- package/dist/lib.js +1 -1
- package/dist/lib.js.map +1 -1
- package/dist/services/api/base.d.ts +1 -0
- package/dist/services/api/base.js.map +1 -1
- package/dist/services/api/index.d.ts +3 -8
- package/dist/services/api/index.js +2 -6
- package/dist/services/api/index.js.map +1 -1
- package/dist/services/api/viewer.d.ts +2 -1
- package/dist/services/api/viewer.js +3 -2
- package/dist/services/api/viewer.js.map +1 -1
- package/dist/services/settings.d.ts +1 -0
- package/dist/services/settings.js +2 -1
- package/dist/services/settings.js.map +1 -1
- package/dist/store/configureStore.d.ts +2 -1
- package/dist/store/configureStore.js +13 -9
- package/dist/store/configureStore.js.map +1 -1
- package/dist/store/reducers/query/query.d.ts +12 -1
- package/dist/store/reducers/query/query.js +39 -8
- package/dist/store/reducers/query/query.js.map +1 -1
- package/dist/store/reducers/query/streamingReducers.js +1 -22
- package/dist/store/reducers/query/streamingReducers.js.map +1 -1
- package/dist/store/reducers/query/types.d.ts +2 -0
- package/dist/styles/illustrations.scss +20 -0
- package/dist/styles/index.scss +1 -0
- package/dist/types/api/healthcheck.d.ts +7 -2
- package/dist/types/api/schema/replication.d.ts +9 -0
- package/dist/types/api/schema/replication.js.map +1 -1
- package/dist/types/api/schema/schema.d.ts +3 -1
- package/dist/types/api/schema/schema.js +2 -0
- package/dist/types/api/schema/schema.js.map +1 -1
- package/dist/types/store/query.d.ts +0 -9
- package/dist/utils/constants.d.ts +2 -26
- package/dist/utils/constants.js +2 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/createToast.d.ts +2 -1
- package/dist/utils/createToast.js +2 -2
- package/dist/utils/createToast.js.map +1 -1
- package/dist/utils/downloadFile.d.ts +2 -0
- package/dist/utils/downloadFile.js +17 -0
- package/dist/utils/downloadFile.js.map +1 -0
- package/dist/utils/prepareErrorMessage.d.ts +1 -0
- package/dist/utils/prepareErrorMessage.js +18 -0
- package/dist/utils/prepareErrorMessage.js.map +1 -0
- package/package.json +6 -3
- package/dist/components/ElapsedTime/ElapsedTime.d.ts +0 -5
- package/dist/components/ElapsedTime/ElapsedTime.js +0 -25
- package/dist/components/ElapsedTime/ElapsedTime.js.map +0 -1
- package/dist/components/ElapsedTime/ElapsedTime.scss +0 -3
- package/dist/components/ErrorBoundary/i18n/ru.json +0 -7
- package/dist/components/PDiskInfo/PDiskInfo.scss +0 -7
- package/dist/containers/Tenant/Query/CancelQueryButton/CancelQueryButton.d.ts +0 -8
- package/dist/containers/Tenant/Query/CancelQueryButton/CancelQueryButton.js +0 -11
- package/dist/containers/Tenant/Query/CancelQueryButton/CancelQueryButton.js.map +0 -1
- package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.d.ts +0 -6
- package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.js +0 -15
- package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.js.map +0 -1
- package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.scss +0 -27
- package/dist/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/utils.d.ts +0 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/utils.js +0 -9
- package/dist/containers/Tenant/Query/QueryResult/components/QueryInfoDropdown/utils.js.map +0 -1
@@ -1,18 +1,14 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
import './ErrorBoundary.scss';
|
2
3
|
export declare function ErrorBoundary({ children }: {
|
3
4
|
children?: React.ReactNode;
|
4
5
|
}): import("react/jsx-runtime").JSX.Element;
|
5
6
|
interface ErrorBoundaryProps {
|
6
7
|
children?: React.ReactNode;
|
7
|
-
useRetry?: boolean;
|
8
|
-
onReportProblem?: (error?: Error) => void;
|
9
8
|
}
|
10
|
-
export declare function ErrorBoundaryInner({ children
|
9
|
+
export declare function ErrorBoundaryInner({ children }: ErrorBoundaryProps): import("react/jsx-runtime").JSX.Element;
|
11
10
|
interface ErrorBoundaryFallbackProps {
|
12
11
|
error: Error;
|
13
|
-
useRetry?: boolean;
|
14
|
-
resetErrorBoundary?: () => void;
|
15
|
-
onReportProblem?: (error?: Error) => void;
|
16
12
|
}
|
17
|
-
export declare function ErrorBoundaryFallback({ error
|
13
|
+
export declare function ErrorBoundaryFallback({ error }: ErrorBoundaryFallbackProps): import("react/jsx-runtime").JSX.Element;
|
18
14
|
export {};
|
@@ -1,26 +1,63 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
-
import
|
2
|
+
import React from 'react';
|
3
|
+
import { InternalError } from '@gravity-ui/illustrations';
|
4
|
+
import { DefinitionList, Flex, Text } from '@gravity-ui/uikit';
|
5
|
+
import QRCode from 'qrcode';
|
3
6
|
import { ErrorBoundary as ErrorBoundaryBase } from 'react-error-boundary';
|
4
7
|
import { cn } from '../../utils/cn';
|
5
8
|
import { registerError } from '../../utils/registerError';
|
6
9
|
import { useComponent } from '../ComponentsProvider/ComponentsProvider';
|
7
|
-
import { Illustration } from '../Illustration';
|
8
10
|
import i18n from './i18n';
|
11
|
+
import { collectDiagnosticsData, prepareErrorStack } from './utils';
|
9
12
|
import './ErrorBoundary.scss';
|
10
13
|
const b = cn('ydb-error-boundary');
|
11
14
|
export function ErrorBoundary({ children }) {
|
12
15
|
const ErrorBoundaryComponent = useComponent('ErrorBoundary');
|
13
16
|
return _jsx(ErrorBoundaryComponent, { children: children });
|
14
17
|
}
|
15
|
-
export function ErrorBoundaryInner({ children
|
18
|
+
export function ErrorBoundaryInner({ children }) {
|
16
19
|
return (_jsx(ErrorBoundaryBase, { onError: (error, info) => {
|
17
20
|
var _a;
|
18
21
|
registerError(error, (_a = info.componentStack) !== null && _a !== void 0 ? _a : undefined, 'error-boundary');
|
19
|
-
}, fallbackRender: ({ error
|
20
|
-
return
|
22
|
+
}, fallbackRender: ({ error }) => {
|
23
|
+
return _jsx(ErrorBoundaryFallback, { error: error });
|
21
24
|
}, children: children }));
|
22
25
|
}
|
23
|
-
export function ErrorBoundaryFallback({ error
|
24
|
-
|
26
|
+
export function ErrorBoundaryFallback({ error }) {
|
27
|
+
const [diagnosticsData, setDiagnosticsData] = React.useState();
|
28
|
+
React.useEffect(() => {
|
29
|
+
collectDiagnosticsData(error).then((data) => {
|
30
|
+
setDiagnosticsData(data);
|
31
|
+
});
|
32
|
+
}, [error]);
|
33
|
+
return (_jsxs(Flex, { direction: "column", gap: 4, className: b(null), children: [_jsxs(Flex, { direction: "row", alignItems: "center", gap: 10, children: [_jsx(InternalError, { width: 230, height: 230 }), _jsxs(Flex, { direction: "column", gap: 5, children: [_jsxs(Flex, { direction: "column", gap: 2, children: [_jsx(Text, { variant: "subheader-3", children: i18n('error-title') }), _jsx(Text, { variant: "body-1", color: "complementary", children: i18n('error-description') })] }), _jsx(DiagnosticsDataList, { data: diagnosticsData })] })] }), _jsxs(Flex, { direction: "row", alignItems: "start", gap: 8, children: [_jsx(ErrorStack, { stack: error.stack }), _jsxs(Flex, { direction: "column", gap: 3, children: [_jsx(Text, { variant: "body-1", color: "complementary", className: b('qr-help-text'), children: i18n('send-qr-message') }), _jsx(DiagnosticsDataQR, { data: diagnosticsData })] })] })] }));
|
34
|
+
}
|
35
|
+
function DiagnosticsDataList({ data }) {
|
36
|
+
return (_jsxs(DefinitionList, { nameMaxWidth: 200, children: [(data === null || data === void 0 ? void 0 : data.uiVersion) && typeof data.uiVersion === 'string' && (_jsx(DefinitionList.Item, { name: i18n('ui-version'), children: data.uiVersion })), (data === null || data === void 0 ? void 0 : data.backendVersion) && typeof data.backendVersion === 'string' && (_jsx(DefinitionList.Item, { name: i18n('backend-version'), children: data.backendVersion })), _jsx(DefinitionList.Item, { name: i18n('error'), children: data === null || data === void 0 ? void 0 : data.error.message })] }));
|
37
|
+
}
|
38
|
+
function ErrorStack({ stack }) {
|
39
|
+
if (!stack) {
|
40
|
+
return null;
|
41
|
+
}
|
42
|
+
const stackToDisplay = prepareErrorStack(stack, {
|
43
|
+
trim: false,
|
44
|
+
maxLines: undefined,
|
45
|
+
});
|
46
|
+
return (_jsxs(Flex, { direction: "column", className: b('error-stack-wrapper'), children: [_jsx(Text, { variant: "body-1", className: b('error-stack-title'), children: i18n('stack-title') }), _jsx(Text, { variant: "code-1", className: b('error-stack-code'), children: stackToDisplay })] }));
|
47
|
+
}
|
48
|
+
function DiagnosticsDataQR({ data }) {
|
49
|
+
const canvasRef = React.useRef(null);
|
50
|
+
React.useEffect(() => {
|
51
|
+
if (data) {
|
52
|
+
QRCode.toCanvas(canvasRef.current, JSON.stringify(data), {
|
53
|
+
errorCorrectionLevel: 'L',
|
54
|
+
width: 400,
|
55
|
+
});
|
56
|
+
}
|
57
|
+
}, [data]);
|
58
|
+
if (!data) {
|
59
|
+
return null;
|
60
|
+
}
|
61
|
+
return _jsx("canvas", { ref: canvasRef });
|
25
62
|
}
|
26
63
|
//# sourceMappingURL=ErrorBoundary.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/ErrorBoundary.tsx"],"names":[],"mappings":"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"}
|
@@ -1,42 +1,38 @@
|
|
1
1
|
@use '../../styles/mixins.scss';
|
2
2
|
|
3
3
|
.ydb-error-boundary {
|
4
|
-
|
5
|
-
flex-direction: row;
|
6
|
-
align-items: flex-start;
|
4
|
+
--g-definition-list-item-gap: var(--g-spacing-1);
|
7
5
|
|
8
|
-
padding:
|
6
|
+
padding: var(--g-spacing-8);
|
9
7
|
|
10
|
-
|
8
|
+
&__error-stack {
|
9
|
+
&-wrapper {
|
10
|
+
overflow: auto;
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
margin-top: 8px;
|
26
|
-
}
|
27
|
-
&__error-details {
|
28
|
-
padding: 13px 18px;
|
12
|
+
width: 800px;
|
13
|
+
height: 430px;
|
14
|
+
|
15
|
+
border-radius: var(--g-border-radius-xs);
|
16
|
+
background-color: var(--code-background-color);
|
17
|
+
scrollbar-color: var(--g-color-scroll-handle) transparent;
|
18
|
+
}
|
19
|
+
|
20
|
+
&-title {
|
21
|
+
position: sticky;
|
22
|
+
left: 0;
|
23
|
+
|
24
|
+
padding: var(--g-spacing-2) var(--g-spacing-3);
|
29
25
|
|
30
|
-
|
26
|
+
border-bottom: 1px solid var(--g-color-line-generic);
|
27
|
+
}
|
28
|
+
&-code {
|
29
|
+
padding: var(--g-spacing-3) var(--g-spacing-3) var(--g-spacing-2);
|
31
30
|
|
32
|
-
|
33
|
-
|
31
|
+
white-space: pre-wrap;
|
32
|
+
}
|
34
33
|
}
|
35
|
-
&__actions {
|
36
|
-
display: flex;
|
37
|
-
flex-direction: row;
|
38
|
-
gap: 10px;
|
39
34
|
|
40
|
-
|
35
|
+
&__qr-help-text {
|
36
|
+
text-align: right;
|
41
37
|
}
|
42
38
|
}
|
@@ -1,7 +1,9 @@
|
|
1
1
|
{
|
2
|
-
"error-title": "Something went wrong",
|
3
|
-
"error-description": "
|
4
|
-
"
|
5
|
-
"
|
6
|
-
"
|
2
|
+
"error-title": "Oops! Something went wrong...",
|
3
|
+
"error-description": "Something seems to be broken. Please contact support for help.",
|
4
|
+
"send-qr-message": "Send QR code to the support",
|
5
|
+
"stack-title": "Trace",
|
6
|
+
"ui-version": "UI version",
|
7
|
+
"backend-version": "Backend version",
|
8
|
+
"error": "Error"
|
7
9
|
}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "error-title" | "error-description" | "
|
1
|
+
declare const _default: (key: "error" | "error-title" | "error-description" | "send-qr-message" | "stack-title" | "ui-version" | "backend-version", params?: import("@gravity-ui/i18n").Params) => string;
|
2
2
|
export default _default;
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { registerKeysets } from '../../../utils/i18n';
|
2
2
|
import en from './en.json';
|
3
|
-
import ru from './ru.json';
|
4
3
|
const COMPONENT = 'ydb-error-boundary';
|
5
|
-
export default registerKeysets(COMPONENT, {
|
4
|
+
export default registerKeysets(COMPONENT, { en });
|
6
5
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ErrorBoundary/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,WAAW,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ErrorBoundary/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,eAAe,eAAe,CAAC,SAAS,EAAE,EAAC,EAAE,EAAC,CAAC,CAAC"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
export declare function collectDiagnosticsData(error: Error): Promise<{
|
2
|
+
location: string;
|
3
|
+
userAgent: string;
|
4
|
+
error: {
|
5
|
+
message: string;
|
6
|
+
stack: string | undefined;
|
7
|
+
};
|
8
|
+
uiVersion: string;
|
9
|
+
backendVersion: string | {
|
10
|
+
error: string;
|
11
|
+
} | undefined;
|
12
|
+
}>;
|
13
|
+
export type DiagnosticsData = Awaited<ReturnType<typeof collectDiagnosticsData>>;
|
14
|
+
export declare function prepareErrorStack(stack?: string, { trim, maxLines }?: {
|
15
|
+
trim?: boolean;
|
16
|
+
maxLines?: number;
|
17
|
+
}): string | undefined;
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { prepareErrorMessage } from '../../utils/prepareErrorMessage';
|
2
|
+
import packageJson from '../../../package.json';
|
3
|
+
export async function collectDiagnosticsData(error) {
|
4
|
+
return await getBackendVersion().then((backendVersion) => {
|
5
|
+
return {
|
6
|
+
location: window.location.href,
|
7
|
+
userAgent: navigator.userAgent,
|
8
|
+
error: {
|
9
|
+
message: prepareErrorMessage(error),
|
10
|
+
stack: prepareErrorStack(error.stack, { trim: true, maxLines: 10 }),
|
11
|
+
},
|
12
|
+
uiVersion: packageJson.version,
|
13
|
+
backendVersion,
|
14
|
+
};
|
15
|
+
});
|
16
|
+
}
|
17
|
+
async function getBackendVersion() {
|
18
|
+
var _a, _b;
|
19
|
+
try {
|
20
|
+
// node_id=. returns data about node that fullfills request
|
21
|
+
// normally this request should be fast (200-300ms with good connection)
|
22
|
+
// timeout=1000 in order not to wait too much in case everything is broken
|
23
|
+
const data = await window.api.viewer.getNodeInfo('.', { timeout: 1000 });
|
24
|
+
return (_b = (_a = data === null || data === void 0 ? void 0 : data.SystemStateInfo) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.Version;
|
25
|
+
}
|
26
|
+
catch (error) {
|
27
|
+
return { error: prepareErrorMessage(error) };
|
28
|
+
}
|
29
|
+
}
|
30
|
+
export function prepareErrorStack(stack, { trim = true, maxLines } = {}) {
|
31
|
+
return (stack === null || stack === void 0 ? void 0 : stack.split('\n').map((line, index) => {
|
32
|
+
// Do not prepare line with error message
|
33
|
+
if (index === 0) {
|
34
|
+
return line;
|
35
|
+
}
|
36
|
+
// Remove repeating origin from stack trace location
|
37
|
+
const preparedLine = line.replace(`(${window.location.origin}/`, '(/');
|
38
|
+
if (trim) {
|
39
|
+
return preparedLine.trim();
|
40
|
+
}
|
41
|
+
return preparedLine;
|
42
|
+
}).slice(0, maxLines ? maxLines + 1 : undefined).join('\n'));
|
43
|
+
}
|
44
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/ErrorBoundary/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,iCAAiC,CAAC;AAEpE,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAY;IACrD,OAAO,MAAM,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;QACrD,OAAO;YACH,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;YAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,KAAK,EAAE;gBACH,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC;gBACnC,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAC,CAAC;aACpE;YACD,SAAS,EAAE,WAAW,CAAC,OAAO;YAC9B,cAAc;SACjB,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAID,KAAK,UAAU,iBAAiB;;IAC5B,IAAI,CAAC;QACD,2DAA2D;QAC3D,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QACvE,OAAO,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,0CAAG,CAAC,CAAC,0CAAE,OAAO,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,EAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,KAAc,EACd,EAAC,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAyC,EAAE;IAEjE,OAAO,CACH,KAAK,aAAL,KAAK,uBAAL,KAAK,CACC,KAAK,CAAC,IAAI,EACX,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjB,yCAAyC;QACzC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,oDAAoD;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC;QAEvE,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC,EAEA,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAC5C,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;AACN,CAAC"}
|
@@ -1,21 +1,8 @@
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { prepareErrorMessage } from '../../../utils/prepareErrorMessage';
|
2
3
|
import i18n from '../i18n';
|
3
4
|
export const ResponseError = ({ error, className, defaultMessage = i18n('responseError.defaultMessage'), }) => {
|
4
|
-
|
5
|
-
|
6
|
-
statusText = error;
|
7
|
-
}
|
8
|
-
if (error && typeof error === 'object') {
|
9
|
-
if ('data' in error && typeof error.data === 'string') {
|
10
|
-
statusText = error.data;
|
11
|
-
}
|
12
|
-
else if ('statusText' in error && typeof error.statusText === 'string') {
|
13
|
-
statusText = error.statusText;
|
14
|
-
}
|
15
|
-
else if ('message' in error && typeof error.message === 'string') {
|
16
|
-
statusText = error.message;
|
17
|
-
}
|
18
|
-
}
|
19
|
-
return _jsx("div", { className: `error ${className}`, children: statusText || defaultMessage });
|
5
|
+
const message = prepareErrorMessage(error) || defaultMessage;
|
6
|
+
return _jsx("div", { className: `error ${className}`, children: message });
|
20
7
|
};
|
21
8
|
//# sourceMappingURL=ResponseError.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ResponseError.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ResponseError.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAQ3B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,GACpC,EAAE,EAAE;IACrB,
|
1
|
+
{"version":3,"file":"ResponseError.js","sourceRoot":"","sources":["../../../../src/components/Errors/ResponseError/ResponseError.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AACvE,OAAO,IAAI,MAAM,SAAS,CAAC;AAQ3B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,GACpC,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC;IAE7D,OAAO,cAAK,SAAS,EAAE,SAAS,SAAS,EAAE,YAAG,OAAO,GAAO,CAAC;AACjE,CAAC,CAAC"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "version" | "database" | "uptime" | "links" | "dc" | "no-data" | "rack" | "la-interval-1m" | "la-interval-5m" | "la-interval-15m" | "
|
1
|
+
declare const _default: (key: "version" | "database" | "uptime" | "links" | "dc" | "no-data" | "rack" | "developer-ui" | "la-interval-1m" | "la-interval-5m" | "la-interval-15m" | "title.common-info" | "title.endpoints" | "title.roles" | "title.pools" | "title.load-average", params?: import("@gravity-ui/i18n").Params) => string;
|
2
2
|
export default _default;
|
@@ -3,7 +3,6 @@ import { Flex } from '@gravity-ui/uikit';
|
|
3
3
|
import { getPDiskPagePath } from '../../routes';
|
4
4
|
import { valueIsDefined } from '../../utils';
|
5
5
|
import { formatBytes } from '../../utils/bytesParsers';
|
6
|
-
import { cn } from '../../utils/cn';
|
7
6
|
import { formatStorageValuesToGb } from '../../utils/dataFormatters/dataFormatters';
|
8
7
|
import { createPDiskDeveloperUILink } from '../../utils/developerUI/developerUI';
|
9
8
|
import { useIsUserAllowedToMakeChanges } from '../../utils/hooks/useIsUserAllowedToMakeChanges';
|
@@ -12,8 +11,6 @@ import { LinkWithIcon } from '../LinkWithIcon/LinkWithIcon';
|
|
12
11
|
import { ProgressViewer } from '../ProgressViewer/ProgressViewer';
|
13
12
|
import { StatusIcon } from '../StatusIcon/StatusIcon';
|
14
13
|
import { pDiskInfoKeyset } from './i18n';
|
15
|
-
import './PDiskInfo.scss';
|
16
|
-
const b = cn('ydb-pdisk-info');
|
17
14
|
// eslint-disable-next-line complexity
|
18
15
|
function getPDiskInfo({ pDisk, nodeId, withPDiskPageLink, isUserAllowedToMakeChanges, }) {
|
19
16
|
const { PDiskId, Path, Guid, Category, Type, Device, Realtime, State, SerialNumber, TotalSize, AllocatedSize, StatusV2, NumActiveSlots, ExpectedSlotCount, LogUsedSize, LogTotalSize, SystemSize, SharedWithOs, } = pDisk || {};
|
@@ -34,7 +31,7 @@ function getPDiskInfo({ pDisk, nodeId, withPDiskPageLink, isUserAllowedToMakeCha
|
|
34
31
|
value: SerialNumber,
|
35
32
|
});
|
36
33
|
}
|
37
|
-
if (
|
34
|
+
if (SharedWithOs) {
|
38
35
|
generalInfo.push({
|
39
36
|
label: pDiskInfoKeyset('shared-with-os'),
|
40
37
|
value: pDiskInfoKeyset('yes'),
|
@@ -94,7 +91,7 @@ function getPDiskInfo({ pDisk, nodeId, withPDiskPageLink, isUserAllowedToMakeCha
|
|
94
91
|
});
|
95
92
|
additionalInfo.push({
|
96
93
|
label: pDiskInfoKeyset('links'),
|
97
|
-
value: (_jsxs(
|
94
|
+
value: (_jsxs(Flex, { wrap: "wrap", gap: 2, children: [withPDiskPageLink && (_jsx(LinkWithIcon, { title: pDiskInfoKeyset('pdisk-page'), url: pDiskPagePath, external: false })), isUserAllowedToMakeChanges && (_jsx(LinkWithIcon, { title: pDiskInfoKeyset('developer-ui'), url: pDiskInternalViewerPath }))] })),
|
98
95
|
});
|
99
96
|
}
|
100
97
|
return [generalInfo, statusInfo, spaceInfo, additionalInfo];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PDiskInfo.js","sourceRoot":"","sources":["../../../src/components/PDiskInfo/PDiskInfo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"PDiskInfo.js","sourceRoot":"","sources":["../../../src/components/PDiskInfo/PDiskInfo.tsx"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
export declare const pDiskInfoKeyset: (key: "path" | "type" | "space" | "links" | "yes" | "state" | "
|
1
|
+
export declare const pDiskInfoKeyset: (key: "path" | "type" | "space" | "links" | "yes" | "state" | "guid" | "serial-number" | "shared-with-os" | "drive-status" | "device" | "realtime" | "slots" | "log-size" | "system-size" | "developer-ui" | "pdisk-page", params?: import("@gravity-ui/i18n").Params) => string;
|
@@ -1,5 +1,7 @@
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import React from 'react';
|
3
|
+
import { Flex } from '@gravity-ui/uikit';
|
4
|
+
import { getPDiskPagePath } from '../../routes';
|
3
5
|
import { selectNodesMap } from '../../store/reducers/nodesList';
|
4
6
|
import { EFlag } from '../../types/api/enums';
|
5
7
|
import { valueIsDefined } from '../../utils';
|
@@ -10,6 +12,7 @@ import { useIsUserAllowedToMakeChanges } from '../../utils/hooks/useIsUserAllowe
|
|
10
12
|
import { bytesToGB, isNumeric } from '../../utils/utils';
|
11
13
|
import { InfoViewer } from '../InfoViewer';
|
12
14
|
import { LinkWithIcon } from '../LinkWithIcon/LinkWithIcon';
|
15
|
+
import { pDiskInfoKeyset } from '../PDiskInfo/i18n';
|
13
16
|
const errorColors = [EFlag.Orange, EFlag.Red, EFlag.Yellow];
|
14
17
|
export const preparePDiskData = (data, nodeData, withDeveloperUILink) => {
|
15
18
|
const { AvailableSize, TotalSize, State, PDiskId, NodeId, StringifiedId, Path, Realtime, Type, Device, } = data;
|
@@ -50,9 +53,10 @@ export const preparePDiskData = (data, nodeData, withDeveloperUILink) => {
|
|
50
53
|
nodeId: NodeId,
|
51
54
|
pDiskId: PDiskId,
|
52
55
|
});
|
56
|
+
const pDiskPagePath = getPDiskPagePath(PDiskId, NodeId);
|
53
57
|
pdiskData.push({
|
54
58
|
label: 'Links',
|
55
|
-
value: _jsx(LinkWithIcon, { title: '
|
59
|
+
value: (_jsxs(Flex, { gap: 2, wrap: "wrap", children: [_jsx(LinkWithIcon, { title: pDiskInfoKeyset('pdisk-page'), url: pDiskPagePath, external: false }), _jsx(LinkWithIcon, { title: pDiskInfoKeyset('developer-ui'), url: pDiskInternalViewerPath })] })),
|
56
60
|
});
|
57
61
|
}
|
58
62
|
return pdiskData;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PDiskPopup.js","sourceRoot":"","sources":["../../../src/components/PDiskPopup/PDiskPopup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAC,KAAK,EAAC,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAC,0BAA0B,EAAC,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAC,6BAA6B,EAAC,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAC,YAAY,EAAC,MAAM,8BAA8B,CAAC;
|
1
|
+
{"version":3,"file":"PDiskPopup.js","sourceRoot":"","sources":["../../../src/components/PDiskPopup/PDiskPopup.tsx"],"names":[],"mappings":"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"}
|
@@ -1,41 +1,73 @@
|
|
1
|
-
import { jsx as _jsx
|
2
|
-
import
|
3
|
-
import {
|
4
|
-
import
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { duration } from '@gravity-ui/date-utils';
|
4
|
+
import { CircleCheckFill, CircleQuestionFill, CircleStop, CircleXmark } from '@gravity-ui/icons';
|
5
|
+
import { Icon, Label, Spin, Text } from '@gravity-ui/uikit';
|
5
6
|
import { isQueryCancelledError } from '../../containers/Tenant/Query/utils/isQueryCancelledError';
|
7
|
+
import { selectQueryDuration } from '../../store/reducers/query/query';
|
6
8
|
import { cn } from '../../utils/cn';
|
7
|
-
import {
|
9
|
+
import { HOUR_IN_SECONDS, SECOND_IN_MS } from '../../utils/constants';
|
10
|
+
import { useTypedSelector } from '../../utils/hooks';
|
8
11
|
import { isAxiosError } from '../../utils/response';
|
9
|
-
import QuerySettingsDescription from '../QuerySettingsDescription/QuerySettingsDescription';
|
10
12
|
import './QueryExecutionStatus.scss';
|
11
13
|
const b = cn('kv-query-execution-status');
|
12
|
-
const QuerySettingsIndicator = () => {
|
13
|
-
const { isIndicatorShown, changedLastExecutionSettingsDescriptions } = useChangedQuerySettings();
|
14
|
-
if (!isIndicatorShown) {
|
15
|
-
return null;
|
16
|
-
}
|
17
|
-
return (_jsx(Tooltip, { openDelay: 0, content: _jsx(QuerySettingsDescription, { prefix: i18n('banner.query-settings.message'), querySettings: changedLastExecutionSettingsDescriptions }), children: _jsx(Icon, { data: CircleInfo, className: b('query-settings-icon') }) }));
|
18
|
-
};
|
19
14
|
export const QueryExecutionStatus = ({ className, error, loading }) => {
|
20
15
|
let icon;
|
21
16
|
let label;
|
17
|
+
let theme;
|
18
|
+
let textColor;
|
19
|
+
const { startTime, endTime } = useTypedSelector(selectQueryDuration);
|
20
|
+
const [queryDuration, setQueryDuration] = React.useState(startTime ? (endTime || Date.now()) - startTime : 0);
|
21
|
+
const isCancelled = isQueryCancelledError(error);
|
22
|
+
const setDuration = React.useCallback(() => {
|
23
|
+
if (startTime) {
|
24
|
+
const actualEndTime = endTime || Date.now();
|
25
|
+
setQueryDuration(actualEndTime - startTime);
|
26
|
+
}
|
27
|
+
}, [endTime, startTime]);
|
28
|
+
React.useEffect(() => {
|
29
|
+
let timerId;
|
30
|
+
setDuration();
|
31
|
+
if (loading) {
|
32
|
+
timerId = setInterval(setDuration, SECOND_IN_MS);
|
33
|
+
}
|
34
|
+
else {
|
35
|
+
clearInterval(timerId);
|
36
|
+
}
|
37
|
+
return () => {
|
38
|
+
clearInterval(timerId);
|
39
|
+
};
|
40
|
+
}, [loading, setDuration]);
|
41
|
+
const formattedQueryDuration = React.useMemo(() => {
|
42
|
+
return queryDuration > HOUR_IN_SECONDS * SECOND_IN_MS
|
43
|
+
? duration(queryDuration).format('hh:mm:ss')
|
44
|
+
: duration(queryDuration).format('mm:ss');
|
45
|
+
}, [queryDuration]);
|
22
46
|
if (loading) {
|
47
|
+
theme = 'info';
|
48
|
+
textColor = 'info-heavy';
|
23
49
|
icon = _jsx(Spin, { size: "xs" });
|
24
50
|
label = 'Running';
|
25
51
|
}
|
26
52
|
else if (isAxiosError(error) && error.code === 'ECONNABORTED') {
|
53
|
+
theme = 'danger';
|
54
|
+
textColor = 'danger-heavy';
|
27
55
|
icon = _jsx(Icon, { data: CircleQuestionFill });
|
28
56
|
label = 'Connection aborted';
|
29
57
|
}
|
30
|
-
else if (
|
31
|
-
|
58
|
+
else if (isCancelled) {
|
59
|
+
theme = 'warning';
|
60
|
+
textColor = 'warning-heavy';
|
61
|
+
icon = _jsx(Icon, { data: CircleStop, className: b('result-status-icon', { error: true }) });
|
32
62
|
label = 'Stopped';
|
33
63
|
}
|
34
64
|
else {
|
35
65
|
const hasError = Boolean(error);
|
36
|
-
|
66
|
+
theme = hasError ? 'danger' : 'success';
|
67
|
+
textColor = hasError ? 'danger-heavy' : 'positive-heavy';
|
68
|
+
icon = (_jsx(Icon, { data: hasError ? CircleXmark : CircleCheckFill, className: b('result-status-icon', { error: hasError }) }));
|
37
69
|
label = hasError ? 'Failed' : 'Completed';
|
38
70
|
}
|
39
|
-
return (
|
71
|
+
return (_jsx(Label, { theme: theme, size: "m", className: b(null, className), icon: icon, value: formattedQueryDuration, children: _jsx(Text, { color: textColor, children: label }) }));
|
40
72
|
};
|
41
73
|
//# sourceMappingURL=QueryExecutionStatus.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueryExecutionStatus.js","sourceRoot":"","sources":["../../../src/components/QueryExecutionStatus/QueryExecutionStatus.tsx"],"names":[],"mappings":";
|
1
|
+
{"version":3,"file":"QueryExecutionStatus.js","sourceRoot":"","sources":["../../../src/components/QueryExecutionStatus/QueryExecutionStatus.tsx"],"names":[],"mappings":"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"}
|
@@ -2,16 +2,4 @@
|
|
2
2
|
display: flex;
|
3
3
|
align-items: center;
|
4
4
|
gap: 4px;
|
5
|
-
|
6
|
-
color: var(--g-color-text-complementary);
|
7
|
-
&__result-status-icon {
|
8
|
-
color: var(--g-color-text-positive);
|
9
|
-
&_error {
|
10
|
-
color: var(--g-color-text-danger);
|
11
|
-
}
|
12
|
-
}
|
13
|
-
|
14
|
-
&__query-settings-icon {
|
15
|
-
color: var(--g-color-text-hint);
|
16
|
-
}
|
17
5
|
}
|
@@ -1 +1 @@
|
|
1
|
-
export declare const storageGroupInfoKeyset: (key: "yes" | "no" | "state" | "encryption" | "missing-disks" | "usage" | "latency" | "allocation-units" | "
|
1
|
+
export declare const storageGroupInfoKeyset: (key: "yes" | "no" | "state" | "encryption" | "missing-disks" | "usage" | "latency" | "allocation-units" | "read-throughput" | "write-throughput" | "media-type" | "available" | "overall" | "disk-space" | "erasure-species" | "used-space" | "group-generation" | "latency-put-tablet-log" | "latency-put-user-data" | "latency-get-fast", params?: import("@gravity-ui/i18n").Params) => string;
|