ydb-embedded-ui 4.19.3 → 4.20.1
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/CHANGELOG.md +27 -0
- package/dist/components/CellWithPopover/CellWithPopover.scss +13 -0
- package/dist/components/CellWithPopover/CellWithPopover.tsx +26 -0
- package/dist/components/LinkToSchemaObject/LinkToSchemaObject.tsx +20 -0
- package/dist/components/NodeHostWrapper/NodeHostWrapper.scss +0 -2
- package/dist/components/NodeHostWrapper/NodeHostWrapper.tsx +28 -29
- package/dist/components/QueryExecutionStatus/QueryExecutionStatus.tsx +3 -2
- package/dist/components/TruncatedQuery/TruncatedQuery.scss +8 -0
- package/dist/components/TruncatedQuery/TruncatedQuery.tsx +15 -1
- package/dist/components/UsageLabel/UsageLabel.scss +6 -0
- package/dist/components/UsageLabel/UsageLabel.tsx +22 -0
- package/dist/containers/AsideNavigation/AsideNavigation.tsx +13 -8
- package/dist/containers/AsideNavigation/i18n/en.json +13 -0
- package/dist/containers/AsideNavigation/i18n/index.ts +11 -0
- package/dist/containers/AsideNavigation/i18n/ru.json +13 -0
- package/dist/containers/Node/NodeStructure/Pdisk.tsx +74 -68
- package/dist/containers/Node/NodeStructure/Vdisk.tsx +9 -33
- package/dist/containers/Nodes/Nodes.tsx +10 -2
- package/dist/containers/Nodes/getNodesColumns.tsx +207 -123
- package/dist/containers/Storage/Storage.tsx +9 -2
- package/dist/containers/Storage/StorageGroups/StorageGroups.scss +0 -11
- package/dist/containers/Storage/StorageGroups/getStorageGroupsColumns.tsx +11 -11
- package/dist/containers/Storage/utils/index.ts +1 -22
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.tsx +2 -3
- package/dist/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.scss +0 -1
- package/dist/containers/Tenant/Diagnostics/DetailedOverview/DetailedOverview.tsx +4 -2
- package/dist/containers/Tenant/Diagnostics/Diagnostics.tsx +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckDetails.tsx +8 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.tsx +11 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/IssuesViewer/IssueTree.tsx +0 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.tsx +3 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.tsx +21 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.tsx +53 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.tsx +53 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.tsx +83 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.tsx +53 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.tsx +9 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.tsx +55 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.scss +44 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx +35 -19
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.tsx +53 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx +4 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.tsx +9 -36
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.tsx +22 -41
- package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json +3 -3
- package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/ru.json +3 -3
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.scss +0 -2
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.tsx +19 -61
- package/dist/containers/Tenant/Diagnostics/TopQueries/getTopQueriesColumns.tsx +102 -0
- package/dist/containers/Tenant/Diagnostics/TopShards/Filters/Filters.tsx +2 -2
- package/dist/containers/Tenant/Diagnostics/TopShards/TopShards.tsx +18 -97
- package/dist/containers/Tenant/Diagnostics/TopShards/getTopShardsColumns.tsx +138 -0
- package/dist/containers/Tenant/Info/ExternalTable/ExternalTable.tsx +2 -4
- package/dist/containers/Tenant/Query/ExecuteResult/{ExecuteResult.js → ExecuteResult.tsx} +51 -31
- package/dist/containers/Tenant/Query/Issues/Issues.tsx +4 -6
- package/dist/containers/Tenant/Query/QueryDuration/QueryDuration.tsx +1 -1
- package/dist/containers/Tenant/utils/paneVisibilityToggleHelpers.tsx +1 -1
- package/dist/routes.ts +26 -1
- package/dist/store/reducers/{executeTopQueries.ts → executeTopQueries/executeTopQueries.ts} +23 -75
- package/dist/{types/store/executeTopQueries.ts → store/reducers/executeTopQueries/types.ts} +3 -7
- package/dist/store/reducers/executeTopQueries/utils.ts +36 -0
- package/dist/store/reducers/index.ts +12 -2
- package/dist/store/reducers/nodes/types.ts +1 -0
- package/dist/store/reducers/nodes/utils.ts +16 -6
- package/dist/store/reducers/{shardsWorkload.ts → shardsWorkload/shardsWorkload.ts} +5 -11
- package/dist/{types/store/shardsWorkload.ts → store/reducers/shardsWorkload/types.ts} +3 -7
- package/dist/store/reducers/tenantOverview/topNodesByCpu/topNodesByCpu.ts +87 -0
- package/dist/store/reducers/tenantOverview/topNodesByCpu/types.ts +29 -0
- package/dist/store/reducers/tenantOverview/topNodesByLoad/topNodesByLoad.ts +87 -0
- package/dist/store/reducers/tenantOverview/topNodesByLoad/types.ts +29 -0
- package/dist/store/reducers/tenantOverview/topNodesByMemory/topNodesByMemory.ts +87 -0
- package/dist/store/reducers/tenantOverview/topNodesByMemory/types.ts +29 -0
- package/dist/store/reducers/tenantOverview/topQueries/tenantOverviewTopQueries.ts +93 -0
- package/dist/store/reducers/tenantOverview/topQueries/types.ts +14 -0
- package/dist/store/reducers/tenantOverview/topShards/tenantOverviewTopShards.ts +103 -0
- package/dist/store/reducers/tenantOverview/topShards/types.ts +14 -0
- package/dist/store/reducers/tenantOverview/topShards/utils.ts +3 -0
- package/dist/styles/mixins.scss +4 -0
- package/dist/types/additionalProps.ts +3 -1
- package/dist/types/api/compute.ts +1 -1
- package/dist/types/react-json-inspector.d.ts +21 -0
- package/dist/utils/diagnostics.ts +23 -0
- package/dist/utils/generateEvaluator.ts +21 -0
- package/dist/utils/generateHash.ts +11 -0
- package/package.json +3 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.scss +0 -41
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.20.1](https://github.com/ydb-platform/ydb-embedded-ui/compare/v4.20.0...v4.20.1) (2023-10-24)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* fix createExternalUILink ([#571](https://github.com/ydb-platform/ydb-embedded-ui/issues/571)) ([52546f1](https://github.com/ydb-platform/ydb-embedded-ui/commit/52546f17dbfdb255b2429836e880d6812b19d66a))
|
|
9
|
+
* fix incorrect truncate strings with popover ([#567](https://github.com/ydb-platform/ydb-embedded-ui/issues/567)) ([d82e65b](https://github.com/ydb-platform/ydb-embedded-ui/commit/d82e65b925b76dc539a76520eccf601951654e94))
|
|
10
|
+
* fix top queries table row height ([#565](https://github.com/ydb-platform/ydb-embedded-ui/issues/565)) ([b12dceb](https://github.com/ydb-platform/ydb-embedded-ui/commit/b12dcebdb0167fd5852c247bca48844ef6ab35af))
|
|
11
|
+
* refactor metrics storage section ([#568](https://github.com/ydb-platform/ydb-embedded-ui/issues/568)) ([db5d922](https://github.com/ydb-platform/ydb-embedded-ui/commit/db5d922d06b88c9d8a792220d2a178c81806c09e))
|
|
12
|
+
* update @types/react ([#570](https://github.com/ydb-platform/ydb-embedded-ui/issues/570)) ([1e38c5b](https://github.com/ydb-platform/ydb-embedded-ui/commit/1e38c5bb3b4b2139b2141636d6434c2a2ec65772))
|
|
13
|
+
|
|
14
|
+
## [4.20.0](https://github.com/ydb-platform/ydb-embedded-ui/compare/v4.19.3...v4.20.0) (2023-10-19)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* add top nodes by memory table ([#562](https://github.com/ydb-platform/ydb-embedded-ui/issues/562)) ([0d4ccf2](https://github.com/ydb-platform/ydb-embedded-ui/commit/0d4ccf2a85251fadad66182ab7d6ccd54a58e6cf))
|
|
20
|
+
* add top tables links ([#564](https://github.com/ydb-platform/ydb-embedded-ui/issues/564)) ([e9b918f](https://github.com/ydb-platform/ydb-embedded-ui/commit/e9b918f0abace890cfafd9d7b219be5b69cac820))
|
|
21
|
+
* **Storage:** hide nodes table for node page ([#557](https://github.com/ydb-platform/ydb-embedded-ui/issues/557)) ([9a25a00](https://github.com/ydb-platform/ydb-embedded-ui/commit/9a25a002b28824f7e616ac8143dbde12de0b0fb7))
|
|
22
|
+
* **TenantOverview:** add cpu tab to tenant diagnostics ([#550](https://github.com/ydb-platform/ydb-embedded-ui/issues/550)) ([3048f84](https://github.com/ydb-platform/ydb-embedded-ui/commit/3048f8478d97249da4f7b66c26ed55f6f21e0f81))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* add loader for healthcheck ([#563](https://github.com/ydb-platform/ydb-embedded-ui/issues/563)) ([6caea3d](https://github.com/ydb-platform/ydb-embedded-ui/commit/6caea3dec8f901090b0f8f7c1796880d7dc90a99))
|
|
28
|
+
* **LinkToSchemaObject:** fix schema link ([#566](https://github.com/ydb-platform/ydb-embedded-ui/issues/566)) ([6ca8a70](https://github.com/ydb-platform/ydb-embedded-ui/commit/6ca8a705b6ddacb1f845aabb7761fd22c0c3b4e0))
|
|
29
|
+
|
|
3
30
|
## [4.19.3](https://github.com/ydb-platform/ydb-embedded-ui/compare/v4.19.2...v4.19.3) (2023-10-13)
|
|
4
31
|
|
|
5
32
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import cn from 'bem-cn-lite';
|
|
2
|
+
|
|
3
|
+
import {Popover, type PopoverProps} from '@gravity-ui/uikit';
|
|
4
|
+
|
|
5
|
+
import './CellWithPopover.scss';
|
|
6
|
+
|
|
7
|
+
const b = cn('ydb-cell-with-popover');
|
|
8
|
+
|
|
9
|
+
interface CellWithPopoverProps extends PopoverProps {
|
|
10
|
+
wrapperClassName?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function CellWithPopover({
|
|
14
|
+
children,
|
|
15
|
+
className,
|
|
16
|
+
wrapperClassName,
|
|
17
|
+
...props
|
|
18
|
+
}: CellWithPopoverProps) {
|
|
19
|
+
return (
|
|
20
|
+
<div className={b(null, wrapperClassName)}>
|
|
21
|
+
<Popover className={b('popover', className)} {...props}>
|
|
22
|
+
{children}
|
|
23
|
+
</Popover>
|
|
24
|
+
</div>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type {Location} from 'history';
|
|
2
|
+
|
|
3
|
+
import {Link, type LinkProps} from '@gravity-ui/uikit';
|
|
4
|
+
|
|
5
|
+
import {createExternalUILink, parseQuery} from '../../routes';
|
|
6
|
+
|
|
7
|
+
interface LinkToSchemaObjectProps extends LinkProps {
|
|
8
|
+
path: string;
|
|
9
|
+
location: Location;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function LinkToSchemaObject({path, location, ...props}: LinkToSchemaObjectProps) {
|
|
13
|
+
const queryParams = parseQuery(location);
|
|
14
|
+
const pathToSchemaObject = createExternalUILink({
|
|
15
|
+
...queryParams,
|
|
16
|
+
schema: path,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
return <Link view="normal" href={pathToSchemaObject} {...props} />;
|
|
20
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import block from 'bem-cn-lite';
|
|
2
2
|
|
|
3
|
-
import {Button,
|
|
3
|
+
import {Button, PopoverBehavior} from '@gravity-ui/uikit';
|
|
4
4
|
|
|
5
5
|
import type {NodesPreparedEntity} from '../../store/reducers/nodes/types';
|
|
6
6
|
import type {NodeAddress} from '../../types/additionalProps';
|
|
@@ -10,6 +10,7 @@ import {isUnavailableNode} from '../../utils/nodes';
|
|
|
10
10
|
import EntityStatus from '../EntityStatus/EntityStatus';
|
|
11
11
|
import {NodeEndpointsTooltipContent} from '../TooltipsContent';
|
|
12
12
|
import {IconWrapper} from '../Icon';
|
|
13
|
+
import {CellWithPopover} from '../CellWithPopover/CellWithPopover';
|
|
13
14
|
|
|
14
15
|
import './NodeHostWrapper.scss';
|
|
15
16
|
|
|
@@ -34,33 +35,31 @@ export const NodeHostWrapper = ({node, getNodeRef}: NodeHostWrapperProps) => {
|
|
|
34
35
|
: undefined;
|
|
35
36
|
|
|
36
37
|
return (
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
>
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
</Popover>
|
|
64
|
-
</div>
|
|
38
|
+
<CellWithPopover
|
|
39
|
+
disabled={!isNodeAvailable}
|
|
40
|
+
content={<NodeEndpointsTooltipContent data={node} />}
|
|
41
|
+
placement={['top', 'bottom']}
|
|
42
|
+
behavior={PopoverBehavior.Immediate}
|
|
43
|
+
>
|
|
44
|
+
<div className={b('host-wrapper')}>
|
|
45
|
+
<EntityStatus
|
|
46
|
+
name={node.Host}
|
|
47
|
+
status={node.SystemState}
|
|
48
|
+
path={nodePath}
|
|
49
|
+
hasClipboardButton
|
|
50
|
+
className={b('host')}
|
|
51
|
+
/>
|
|
52
|
+
{nodeRef && (
|
|
53
|
+
<Button
|
|
54
|
+
size="s"
|
|
55
|
+
href={nodeRef}
|
|
56
|
+
className={b('external-button')}
|
|
57
|
+
target="_blank"
|
|
58
|
+
>
|
|
59
|
+
<IconWrapper name="external" />
|
|
60
|
+
</Button>
|
|
61
|
+
)}
|
|
62
|
+
</div>
|
|
63
|
+
</CellWithPopover>
|
|
65
64
|
);
|
|
66
65
|
};
|
|
@@ -14,14 +14,15 @@ const b = cn('kv-query-execution-status');
|
|
|
14
14
|
|
|
15
15
|
interface QueryExecutionStatusProps {
|
|
16
16
|
className?: string;
|
|
17
|
-
|
|
17
|
+
// TODO: Remove Record<string, any> when ECONNABORTED error case is fully typed
|
|
18
|
+
error?: AxiosError | Record<string, any> | string;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
export const QueryExecutionStatus = ({className, error}: QueryExecutionStatusProps) => {
|
|
21
22
|
let icon: ReactNode;
|
|
22
23
|
let label: string;
|
|
23
24
|
|
|
24
|
-
if (error?.code === 'ECONNABORTED') {
|
|
25
|
+
if (typeof error === 'object' && error?.code === 'ECONNABORTED') {
|
|
25
26
|
icon = <UiKitIcon data={questionIcon} size={16} />;
|
|
26
27
|
label = 'Connection aborted';
|
|
27
28
|
} else {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import cn from 'bem-cn-lite';
|
|
2
2
|
|
|
3
|
+
import {CellWithPopover} from '../CellWithPopover/CellWithPopover';
|
|
4
|
+
|
|
3
5
|
import './TruncatedQuery.scss';
|
|
4
6
|
|
|
5
7
|
const b = cn('kv-truncated-query');
|
|
6
8
|
|
|
7
9
|
interface TruncatedQueryProps {
|
|
8
|
-
value
|
|
10
|
+
value?: string;
|
|
9
11
|
maxQueryHeight?: number;
|
|
10
12
|
}
|
|
11
13
|
|
|
@@ -26,3 +28,15 @@ export const TruncatedQuery = ({value = '', maxQueryHeight = 6}: TruncatedQueryP
|
|
|
26
28
|
}
|
|
27
29
|
return <>{value}</>;
|
|
28
30
|
};
|
|
31
|
+
|
|
32
|
+
interface OneLineQueryWithPopoverProps {
|
|
33
|
+
value?: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const OneLineQueryWithPopover = ({value = ''}: OneLineQueryWithPopoverProps) => {
|
|
37
|
+
return (
|
|
38
|
+
<CellWithPopover contentClassName={b('popover-content')} content={value}>
|
|
39
|
+
{value}
|
|
40
|
+
</CellWithPopover>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import cn from 'bem-cn-lite';
|
|
2
|
+
|
|
3
|
+
import {Label, type LabelProps} from '@gravity-ui/uikit';
|
|
4
|
+
|
|
5
|
+
const b = cn('ydb-usage-label');
|
|
6
|
+
|
|
7
|
+
interface UsageLabelProps extends LabelProps {
|
|
8
|
+
value: number | string;
|
|
9
|
+
overloadThreshold?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function UsageLabel({value, overloadThreshold = 90, theme, ...props}: UsageLabelProps) {
|
|
13
|
+
return (
|
|
14
|
+
<Label
|
|
15
|
+
theme={theme}
|
|
16
|
+
className={b({overload: Number(value) >= overloadThreshold})}
|
|
17
|
+
{...props}
|
|
18
|
+
>
|
|
19
|
+
{value || 0}%
|
|
20
|
+
</Label>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -28,6 +28,7 @@ import {ASIDE_HEADER_COMPACT_KEY, TENANT_INITIAL_PAGE_KEY} from '../../utils/con
|
|
|
28
28
|
import {getTenantPath} from '../Tenant/TenantPages';
|
|
29
29
|
import {UserSettings} from '../UserSettings/UserSettings';
|
|
30
30
|
|
|
31
|
+
import i18n from './i18n';
|
|
31
32
|
import './AsideNavigation.scss';
|
|
32
33
|
|
|
33
34
|
const b = cn('kv-navigation');
|
|
@@ -58,15 +59,19 @@ function YbdInternalUser({ydbUser, logout}: YbdInternalUserProps) {
|
|
|
58
59
|
return (
|
|
59
60
|
<div className={b('internal-user')}>
|
|
60
61
|
<div className={b('user-info-wrapper')}>
|
|
61
|
-
<div className={b('ydb-internal-user-title')}>
|
|
62
|
+
<div className={b('ydb-internal-user-title')}>{i18n('account.user')}</div>
|
|
62
63
|
{ydbUser && <div className={b('username')}>{ydbUser}</div>}
|
|
63
64
|
</div>
|
|
64
65
|
{ydbUser ? (
|
|
65
|
-
<Button view="flat-secondary"
|
|
66
|
+
<Button view="flat-secondary" title={i18n('account.logout')} onClick={logout}>
|
|
66
67
|
<Icon data={signOutIcon} size={16} />
|
|
67
68
|
</Button>
|
|
68
69
|
) : (
|
|
69
|
-
<Button
|
|
70
|
+
<Button
|
|
71
|
+
view="flat-secondary"
|
|
72
|
+
title={i18n('account.login')}
|
|
73
|
+
onClick={handleLoginClick}
|
|
74
|
+
>
|
|
70
75
|
<Icon data={signInIcon} size={16} />
|
|
71
76
|
</Button>
|
|
72
77
|
)}
|
|
@@ -91,7 +96,7 @@ function YdbUserDropdown({isCompact, popupAnchor, ydbUser}: YdbUserDropdownProps
|
|
|
91
96
|
compact={isCompact}
|
|
92
97
|
item={{
|
|
93
98
|
id: 'user-popup',
|
|
94
|
-
title: ydbUser?.login ?? '
|
|
99
|
+
title: ydbUser?.login ?? i18n('navigation-item.account'),
|
|
95
100
|
current: isUserDropdownVisible,
|
|
96
101
|
icon: iconData,
|
|
97
102
|
iconSize: 22,
|
|
@@ -142,7 +147,7 @@ export const useGetLeftNavigationItems = () => {
|
|
|
142
147
|
const items: MenuItem[] = [
|
|
143
148
|
{
|
|
144
149
|
id: TENANT_PAGES_IDS.query,
|
|
145
|
-
title: '
|
|
150
|
+
title: i18n('pages.query'),
|
|
146
151
|
icon: terminalIcon,
|
|
147
152
|
iconSize: 20,
|
|
148
153
|
location: getTenantPath({
|
|
@@ -152,7 +157,7 @@ export const useGetLeftNavigationItems = () => {
|
|
|
152
157
|
},
|
|
153
158
|
{
|
|
154
159
|
id: TENANT_PAGES_IDS.diagnostics,
|
|
155
|
-
title: '
|
|
160
|
+
title: i18n('pages.diagnostics'),
|
|
156
161
|
icon: pulseIcon,
|
|
157
162
|
iconSize: 20,
|
|
158
163
|
location: getTenantPath({
|
|
@@ -212,7 +217,7 @@ function AsideNavigation(props: AsideNavigationProps) {
|
|
|
212
217
|
compact={compact}
|
|
213
218
|
item={{
|
|
214
219
|
id: 'documentation',
|
|
215
|
-
title: '
|
|
220
|
+
title: i18n('navigation-item.documentation'),
|
|
216
221
|
icon: supportIcon,
|
|
217
222
|
iconSize: 24,
|
|
218
223
|
onItemClick: () => {
|
|
@@ -224,7 +229,7 @@ function AsideNavigation(props: AsideNavigationProps) {
|
|
|
224
229
|
<FooterItem
|
|
225
230
|
item={{
|
|
226
231
|
id: 'user-settings',
|
|
227
|
-
title: '
|
|
232
|
+
title: i18n('navigation-item.settings'),
|
|
228
233
|
icon: settingsIcon,
|
|
229
234
|
iconSize: 24,
|
|
230
235
|
current: visiblePanel === Panel.UserSettings,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pages.query": "Query",
|
|
3
|
+
"pages.diagnostics": "Diagnostics",
|
|
4
|
+
|
|
5
|
+
"navigation-item.documentation": "Documentation",
|
|
6
|
+
"navigation-item.settings": "Settings",
|
|
7
|
+
"navigation-item.account": "Account",
|
|
8
|
+
|
|
9
|
+
"account.user": "YDB User",
|
|
10
|
+
|
|
11
|
+
"account.login": "Login",
|
|
12
|
+
"account.logout": "Logout"
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {i18n, Lang} from '../../../utils/i18n';
|
|
2
|
+
|
|
3
|
+
import en from './en.json';
|
|
4
|
+
import ru from './ru.json';
|
|
5
|
+
|
|
6
|
+
const COMPONENT = 'ydb-aside-navigation';
|
|
7
|
+
|
|
8
|
+
i18n.registerKeyset(Lang.En, COMPONENT, en);
|
|
9
|
+
i18n.registerKeyset(Lang.Ru, COMPONENT, ru);
|
|
10
|
+
|
|
11
|
+
export default i18n.keyset(COMPONENT);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pages.query": "Редактор запросов",
|
|
3
|
+
"pages.diagnostics": "Диагностика",
|
|
4
|
+
|
|
5
|
+
"navigation-item.documentation": "Документация",
|
|
6
|
+
"navigation-item.settings": "Настройки",
|
|
7
|
+
"navigation-item.account": "Аккаунт",
|
|
8
|
+
|
|
9
|
+
"account.user": "Пользователь YDB",
|
|
10
|
+
|
|
11
|
+
"account.login": "Войти",
|
|
12
|
+
"account.logout": "Выйти"
|
|
13
|
+
}
|