ydb-embedded-ui 22.4.0 → 22.5.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/ButtonWithConfirmDialog/ButtonWithConfirmDialog.d.ts +3 -2
- package/dist/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.js +19 -4
- package/dist/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.js.map +1 -1
- package/dist/components/CopyableValue/CopyableValue.d.ts +10 -0
- package/dist/components/CopyableValue/CopyableValue.js +10 -0
- package/dist/components/CopyableValue/CopyableValue.js.map +1 -0
- package/dist/components/CopyableValue/CopyableValue.scss +16 -0
- package/dist/components/CopyableValue/i18n/en.json +3 -0
- package/dist/components/CopyableValue/i18n/index.d.ts +2 -0
- package/dist/components/CopyableValue/i18n/index.js +6 -0
- package/dist/components/CopyableValue/i18n/index.js.map +1 -0
- package/dist/components/CriticalActionDialog/CriticalActionDialog.d.ts +2 -1
- package/dist/components/CriticalActionDialog/CriticalActionDialog.js +2 -1
- package/dist/components/CriticalActionDialog/CriticalActionDialog.js.map +1 -1
- package/dist/components/DiskCapacityInfo/DiskCapacityInfo.d.ts +1 -21
- package/dist/components/DiskCapacityInfo/DiskCapacityInfo.js +40 -126
- package/dist/components/DiskCapacityInfo/DiskCapacityInfo.js.map +1 -1
- package/dist/components/DiskCapacityInfo/i18n/en.json +0 -1
- package/dist/components/DiskCapacityInfo/i18n/index.d.ts +1 -1
- package/dist/components/EntityStatus/EntityStatus.d.ts +18 -6
- package/dist/components/EntityStatus/EntityStatus.js +5 -1
- package/dist/components/EntityStatus/EntityStatus.js.map +1 -1
- package/dist/components/EntityStatus/EntityStatus.scss +5 -0
- package/dist/components/EvictVDiskButton/EvictVDiskButton.d.ts +5 -2
- package/dist/components/EvictVDiskButton/EvictVDiskButton.js +3 -2
- package/dist/components/EvictVDiskButton/EvictVDiskButton.js.map +1 -1
- package/dist/components/EvictVDiskButton/i18n/en.json +2 -2
- package/dist/components/FullNodeViewer/FullNodeViewer.js +4 -7
- package/dist/components/FullNodeViewer/FullNodeViewer.js.map +1 -1
- package/dist/components/FullNodeViewer/i18n/index.d.ts +1 -1
- package/dist/components/HoverPopup/HoverPopup.d.ts +1 -0
- package/dist/components/HoverPopup/HoverPopup.js +87 -16
- package/dist/components/HoverPopup/HoverPopup.js.map +1 -1
- package/dist/components/MemoryViewer/MemoryViewer.d.ts +3 -1
- package/dist/components/MemoryViewer/MemoryViewer.js +25 -16
- package/dist/components/MemoryViewer/MemoryViewer.js.map +1 -1
- package/dist/components/MemoryViewer/i18n/en.json +4 -3
- package/dist/components/MemoryViewer/i18n/index.d.ts +1 -1
- package/dist/components/MemoryViewer/utils.d.ts +4 -2
- package/dist/components/MemoryViewer/utils.js +11 -11
- package/dist/components/MemoryViewer/utils.js.map +1 -1
- package/dist/components/PDiskInfo/PDiskInfo.d.ts +4 -9
- package/dist/components/PDiskInfo/PDiskInfo.js +32 -144
- package/dist/components/PDiskInfo/PDiskInfo.js.map +1 -1
- package/dist/components/PDiskInfo/PDiskInfo.scss +15 -0
- package/dist/components/PDiskInfo/PDiskLogSize.js +1 -1
- package/dist/components/PDiskInfo/PDiskLogSize.js.map +1 -1
- package/dist/components/PDiskInfo/i18n/en.json +6 -3
- package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
- package/dist/components/PDiskInfo/statuses.js +12 -3
- package/dist/components/PDiskInfo/statuses.js.map +1 -1
- package/dist/components/Search/Search.js +3 -1
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/StorageGroupInfo/StorageGroupInfo.js +4 -9
- package/dist/components/StorageGroupInfo/StorageGroupInfo.js.map +1 -1
- package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
- package/dist/components/TenantNameWrapper/i18n/index.d.ts +1 -1
- package/dist/components/VDisk/VDisk.js +2 -2
- package/dist/components/VDisk/VDisk.js.map +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.d.ts +3 -7
- package/dist/components/VDiskInfo/VDiskInfo.js +57 -235
- package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.scss +19 -3
- package/dist/components/VDiskInfo/getVDiskDetails.d.ts +7 -1
- package/dist/components/VDiskInfo/getVDiskDetails.js +14 -1
- package/dist/components/VDiskInfo/getVDiskDetails.js.map +1 -1
- package/dist/components/VDiskInfo/i18n/en.json +4 -13
- package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
- package/dist/components/VDiskPopup/VDiskPopup.d.ts +2 -1
- package/dist/components/VDiskPopup/VDiskPopup.js +10 -26
- package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
- package/dist/components/VDiskPopup/i18n/en.json +0 -2
- package/dist/components/VDiskPopup/i18n/index.d.ts +1 -1
- package/dist/components/VDiskStatus/VDiskReplicationStatus.js +1 -1
- package/dist/components/VDiskStatus/VDiskReplicationStatus.js.map +1 -1
- package/dist/components/VDiskStatus/VDiskStatus.js +2 -2
- package/dist/components/VDiskStatus/VDiskStatus.js.map +1 -1
- package/dist/components/VDiskStatus/VDiskStatus.scss +4 -0
- package/dist/components/VDiskStatus/statuses.js +2 -2
- package/dist/components/VDiskStatus/statuses.js.map +1 -1
- package/dist/components/nodesColumns/columns.d.ts +1 -0
- package/dist/components/nodesColumns/columns.js +13 -6
- package/dist/components/nodesColumns/columns.js.map +1 -1
- package/dist/containers/Clusters/Clusters.js +35 -6
- package/dist/containers/Clusters/Clusters.js.map +1 -1
- package/dist/containers/Clusters/Clusters.scss +24 -6
- package/dist/containers/Clusters/columns.js +9 -4
- package/dist/containers/Clusters/columns.js.map +1 -1
- package/dist/containers/Clusters/i18n/en.json +6 -0
- package/dist/containers/Clusters/i18n/index.d.ts +1 -1
- package/dist/containers/Header/Header.js +8 -0
- package/dist/containers/Header/Header.js.map +1 -1
- package/dist/containers/Header/HeaderLeftControls.js +3 -1
- package/dist/containers/Header/HeaderLeftControls.js.map +1 -1
- package/dist/containers/Header/PDiskLeftControls.d.ts +1 -0
- package/dist/containers/Header/PDiskLeftControls.js +24 -0
- package/dist/containers/Header/PDiskLeftControls.js.map +1 -0
- package/dist/containers/Header/VDiskLeftControls.d.ts +1 -0
- package/dist/containers/Header/VDiskLeftControls.js +23 -0
- package/dist/containers/Header/VDiskLeftControls.js.map +1 -0
- package/dist/containers/Header/breadcrumbs.js +5 -2
- package/dist/containers/Header/breadcrumbs.js.map +1 -1
- package/dist/containers/Header/i18n/en.json +4 -1
- package/dist/containers/Header/i18n/index.d.ts +1 -1
- package/dist/containers/Nodes/NodesControls/NodesControls.js +1 -1
- package/dist/containers/Nodes/NodesControls/NodesControls.js.map +1 -1
- package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js +5 -3
- package/dist/containers/Nodes/PaginatedNodes/GroupedNodesComponent.js.map +1 -1
- package/dist/containers/Nodes/PaginatedNodes/NodesComponent.js +4 -2
- package/dist/containers/Nodes/PaginatedNodes/NodesComponent.js.map +1 -1
- package/dist/containers/Nodes/useDebouncedSearch.d.ts +2 -0
- package/dist/containers/Nodes/useDebouncedSearch.js +11 -0
- package/dist/containers/Nodes/useDebouncedSearch.js.map +1 -0
- package/dist/containers/PDiskPage/PDiskPage.js +30 -31
- package/dist/containers/PDiskPage/PDiskPage.js.map +1 -1
- package/dist/containers/PDiskPage/PDiskPage.scss +22 -11
- package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js +3 -3
- package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js.map +1 -1
- package/dist/containers/PDiskPage/PDiskStorageDetails.d.ts +6 -0
- package/dist/containers/PDiskPage/PDiskStorageDetails.js +28 -0
- package/dist/containers/PDiskPage/PDiskStorageDetails.js.map +1 -0
- package/dist/containers/PDiskPage/PDiskStorageDetails.scss +51 -0
- package/dist/containers/PDiskPage/i18n/en.json +2 -0
- package/dist/containers/PDiskPage/i18n/index.d.ts +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/constants.d.ts +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/i18n/index.d.ts +1 -1
- package/dist/containers/Storage/useStorageQueryParams.d.ts +4 -4
- package/dist/containers/StorageGroupPage/StorageGroupPage.js +7 -5
- package/dist/containers/StorageGroupPage/StorageGroupPage.js.map +1 -1
- package/dist/containers/StorageGroupPage/StorageGroupPage.scss +10 -0
- package/dist/containers/StorageGroupPage/i18n/en.json +0 -1
- package/dist/containers/StorageGroupPage/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +5 -12
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/columns/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Healthcheck/Healthcheck.scss +6 -1
- package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js +2 -2
- package/dist/containers/Tenant/Healthcheck/components/HealthcheckIssue.js.map +1 -1
- package/dist/containers/Tenant/TenantDrawerHealthcheck.js +10 -2
- package/dist/containers/Tenant/TenantDrawerHealthcheck.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskPage.js +33 -33
- package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskPage.scss +21 -8
- package/dist/containers/VDiskPage/VDiskStorageDetails.js +27 -29
- package/dist/containers/VDiskPage/VDiskStorageDetails.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskStorageDetails.scss +24 -93
- package/dist/containers/VDiskPage/i18n/en.json +3 -12
- package/dist/containers/VDiskPage/i18n/index.d.ts +1 -1
- package/dist/store/reducers/cluster/parseFields.js +1 -0
- package/dist/store/reducers/cluster/parseFields.js.map +1 -1
- package/dist/store/reducers/clusters/clusters.js +1 -0
- package/dist/store/reducers/clusters/clusters.js.map +1 -1
- package/dist/store/reducers/clusters/selectors.d.ts +1 -0
- package/dist/store/reducers/clusters/selectors.js +4 -1
- package/dist/store/reducers/clusters/selectors.js.map +1 -1
- package/dist/store/reducers/clusters/types.d.ts +2 -0
- package/dist/store/reducers/storage/prepareGroupsDisks.d.ts +1 -1
- package/dist/store/reducers/storage/prepareGroupsDisks.js +2 -1
- package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
- package/dist/store/reducers/storage/utils.js +10 -3
- package/dist/store/reducers/storage/utils.js.map +1 -1
- package/dist/store/reducers/vdisk/types.d.ts +1 -1
- package/dist/store/reducers/vdisk/utils.js +5 -5
- package/dist/store/reducers/vdisk/utils.js.map +1 -1
- package/dist/types/api/meta.d.ts +1 -0
- package/dist/types/api/nodesList.d.ts +2 -0
- package/dist/utils/hooks/useDatabaseHealthcheckAvailable.d.ts +2 -0
- package/dist/utils/hooks/useDatabaseHealthcheckAvailable.js +6 -0
- package/dist/utils/hooks/useDatabaseHealthcheckAvailable.js.map +1 -0
- package/dist/utils/memory.d.ts +5 -0
- package/dist/utils/memory.js +9 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/nodes.js +3 -3
- package/dist/utils/nodes.js.map +1 -1
- package/dist/utils/storageMetrics.d.ts +1 -0
- package/dist/utils/storageMetrics.js +8 -0
- package/dist/utils/storageMetrics.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ButtonWithConfirmDialog/ButtonWithConfirmDialog.tsx +22 -3
- package/src/components/CopyableValue/CopyableValue.scss +16 -0
- package/src/components/CopyableValue/CopyableValue.tsx +40 -0
- package/src/components/CopyableValue/i18n/en.json +3 -0
- package/src/components/CopyableValue/i18n/index.ts +8 -0
- package/src/components/CriticalActionDialog/CriticalActionDialog.tsx +3 -0
- package/src/components/DiskCapacityInfo/DiskCapacityInfo.tsx +40 -185
- package/src/components/DiskCapacityInfo/i18n/en.json +0 -1
- package/src/components/EntityStatus/EntityStatus.scss +5 -0
- package/src/components/EntityStatus/EntityStatus.tsx +38 -5
- package/src/components/EvictVDiskButton/EvictVDiskButton.tsx +10 -2
- package/src/components/EvictVDiskButton/i18n/en.json +2 -2
- package/src/components/FullNodeViewer/FullNodeViewer.tsx +4 -9
- package/src/components/HoverPopup/HoverPopup.tsx +95 -19
- package/src/components/MemoryViewer/MemoryViewer.tsx +30 -17
- package/src/components/MemoryViewer/i18n/en.json +4 -3
- package/src/components/MemoryViewer/utils.ts +19 -12
- package/src/components/PDiskInfo/PDiskInfo.scss +15 -0
- package/src/components/PDiskInfo/PDiskInfo.tsx +51 -243
- package/src/components/PDiskInfo/PDiskLogSize.tsx +12 -8
- package/src/components/PDiskInfo/i18n/en.json +6 -3
- package/src/components/PDiskInfo/statuses.ts +16 -3
- package/src/components/Search/Search.tsx +5 -2
- package/src/components/StorageGroupInfo/StorageGroupInfo.tsx +8 -13
- package/src/components/VDisk/VDisk.tsx +3 -2
- package/src/components/VDiskInfo/VDiskInfo.scss +19 -3
- package/src/components/VDiskInfo/VDiskInfo.tsx +119 -341
- package/src/components/VDiskInfo/getVDiskDetails.tsx +24 -2
- package/src/components/VDiskInfo/i18n/en.json +4 -13
- package/src/components/VDiskPopup/VDiskPopup.tsx +16 -24
- package/src/components/VDiskPopup/i18n/en.json +0 -2
- package/src/components/VDiskStatus/VDiskReplicationStatus.tsx +1 -1
- package/src/components/VDiskStatus/VDiskStatus.scss +4 -0
- package/src/components/VDiskStatus/VDiskStatus.tsx +13 -2
- package/src/components/VDiskStatus/statuses.ts +2 -2
- package/src/components/nodesColumns/columns.tsx +26 -12
- package/src/containers/Clusters/Clusters.scss +24 -6
- package/src/containers/Clusters/Clusters.tsx +74 -5
- package/src/containers/Clusters/columns.tsx +36 -6
- package/src/containers/Clusters/i18n/en.json +6 -0
- package/src/containers/Header/Header.tsx +8 -0
- package/src/containers/Header/HeaderLeftControls.tsx +3 -1
- package/src/containers/Header/PDiskLeftControls.tsx +41 -0
- package/src/containers/Header/VDiskLeftControls.tsx +40 -0
- package/src/containers/Header/breadcrumbs.tsx +4 -2
- package/src/containers/Header/i18n/en.json +4 -1
- package/src/containers/Nodes/NodesControls/NodesControls.tsx +1 -0
- package/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx +5 -3
- package/src/containers/Nodes/PaginatedNodes/NodesComponent.tsx +4 -2
- package/src/containers/Nodes/useDebouncedSearch.ts +13 -0
- package/src/containers/PDiskPage/PDiskPage.scss +22 -11
- package/src/containers/PDiskPage/PDiskPage.tsx +88 -56
- package/src/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.tsx +3 -9
- package/src/containers/PDiskPage/PDiskStorageDetails.scss +51 -0
- package/src/containers/PDiskPage/PDiskStorageDetails.tsx +64 -0
- package/src/containers/PDiskPage/i18n/en.json +2 -0
- package/src/containers/StorageGroupPage/StorageGroupPage.scss +10 -0
- package/src/containers/StorageGroupPage/StorageGroupPage.tsx +37 -28
- package/src/containers/StorageGroupPage/i18n/en.json +0 -1
- package/src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.tsx +5 -32
- package/src/containers/Tenant/Healthcheck/Healthcheck.scss +6 -1
- package/src/containers/Tenant/Healthcheck/components/HealthcheckIssue.tsx +18 -8
- package/src/containers/Tenant/TenantDrawerHealthcheck.tsx +14 -1
- package/src/containers/VDiskPage/VDiskPage.scss +21 -8
- package/src/containers/VDiskPage/VDiskPage.tsx +103 -64
- package/src/containers/VDiskPage/VDiskStorageDetails.scss +24 -93
- package/src/containers/VDiskPage/VDiskStorageDetails.tsx +50 -158
- package/src/containers/VDiskPage/i18n/en.json +3 -14
- package/src/store/reducers/cluster/parseFields.ts +1 -0
- package/src/store/reducers/clusters/clusters.ts +1 -0
- package/src/store/reducers/clusters/selectors.ts +4 -0
- package/src/store/reducers/clusters/types.ts +3 -0
- package/src/store/reducers/storage/prepareGroupsDisks.ts +2 -0
- package/src/store/reducers/storage/utils.ts +13 -3
- package/src/store/reducers/vdisk/types.ts +2 -1
- package/src/store/reducers/vdisk/utils.ts +4 -5
- package/src/types/api/meta.ts +1 -0
- package/src/types/api/nodesList.ts +3 -0
- package/src/utils/hooks/useDatabaseHealthcheckAvailable.ts +9 -0
- package/src/utils/memory.ts +16 -0
- package/src/utils/nodes.ts +3 -2
- package/src/utils/storageMetrics.ts +11 -0
- package/dist/components/VDiskInfo/getVDiskCapacityColumns.d.ts +0 -11
- package/dist/components/VDiskInfo/getVDiskCapacityColumns.js +0 -52
- package/dist/components/VDiskInfo/getVDiskCapacityColumns.js.map +0 -1
- package/src/components/VDiskInfo/getVDiskCapacityColumns.tsx +0 -83
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { selectAllHealthcheckInfo, selectCheckStatus, } from '../../store/reducers/healthcheckInfo/healthcheckInfo';
|
|
4
4
|
import { useTypedSelector } from '../../utils/hooks';
|
|
5
|
+
import { useDatabaseHealthcheckAvailable } from '../../utils/hooks/useDatabaseHealthcheckAvailable';
|
|
5
6
|
import { Healthcheck } from './Healthcheck/Healthcheck';
|
|
6
7
|
import { HealthcheckDrawer } from './Healthcheck/components/HealthcheckDrawer';
|
|
7
8
|
import { getDatabaseHealthcheckAssistantTarget } from './Healthcheck/utils';
|
|
@@ -9,8 +10,9 @@ import { useCurrentSchema } from './TenantContext';
|
|
|
9
10
|
import i18n from './i18n';
|
|
10
11
|
import { useTenantQueryParams } from './useTenantQueryParams';
|
|
11
12
|
export function TenantDrawerHealthcheck({ children, clusterName }) {
|
|
13
|
+
const healthcheckAvailable = useDatabaseHealthcheckAvailable();
|
|
12
14
|
const { database } = useCurrentSchema();
|
|
13
|
-
const { handleShowHealthcheckChange, showHealthcheck, handleIssuesFilterChange, handleHealthcheckViewChange, } = useTenantQueryParams();
|
|
15
|
+
const { handleShowHealthcheckChange, showHealthcheck, handleIssuesFilterChange, handleHealthcheckViewChange, issuesFilter, view, } = useTenantQueryParams();
|
|
14
16
|
const healthcheckStatus = useTypedSelector((state) => selectCheckStatus(state, database || '', clusterName));
|
|
15
17
|
const healthcheckData = useTypedSelector((state) => selectAllHealthcheckInfo(state, database || '', clusterName));
|
|
16
18
|
const handleCloseDrawer = React.useCallback(() => {
|
|
@@ -18,6 +20,12 @@ export function TenantDrawerHealthcheck({ children, clusterName }) {
|
|
|
18
20
|
handleIssuesFilterChange(undefined);
|
|
19
21
|
handleHealthcheckViewChange(undefined);
|
|
20
22
|
}, [handleShowHealthcheckChange, handleIssuesFilterChange, handleHealthcheckViewChange]);
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
if (healthcheckAvailable === false &&
|
|
25
|
+
(showHealthcheck !== undefined || view !== undefined || issuesFilter !== undefined)) {
|
|
26
|
+
handleCloseDrawer();
|
|
27
|
+
}
|
|
28
|
+
}, [healthcheckAvailable, showHealthcheck, view, issuesFilter, handleCloseDrawer]);
|
|
21
29
|
const renderDrawerContent = React.useCallback(() => {
|
|
22
30
|
return _jsx(Healthcheck, { database: database, clusterName: clusterName });
|
|
23
31
|
}, [database, clusterName]);
|
|
@@ -27,6 +35,6 @@ export function TenantDrawerHealthcheck({ children, clusterName }) {
|
|
|
27
35
|
clusterName,
|
|
28
36
|
scope: 'database',
|
|
29
37
|
})
|
|
30
|
-
: undefined, isDrawerVisible: Boolean(showHealthcheck), onCloseDrawer: handleCloseDrawer, renderDrawerContent: renderDrawerContent, drawerId: "tenant-healthcheck-details", storageKey: "tenant-healthcheck-details-drawer-width", title: i18n('title_healthcheck-dashboard'), status: healthcheckStatus, healthcheckData: healthcheckData, downloadFilePrefix: `${database}-healthcheck`, downloadTooltip: i18n('action_download-healthcheck'), children: children }));
|
|
38
|
+
: undefined, isDrawerVisible: Boolean(healthcheckAvailable && showHealthcheck), onCloseDrawer: handleCloseDrawer, renderDrawerContent: renderDrawerContent, drawerId: "tenant-healthcheck-details", storageKey: "tenant-healthcheck-details-drawer-width", title: i18n('title_healthcheck-dashboard'), status: healthcheckStatus, healthcheckData: healthcheckData, downloadFilePrefix: `${database}-healthcheck`, downloadTooltip: i18n('action_download-healthcheck'), children: children }));
|
|
31
39
|
}
|
|
32
40
|
//# sourceMappingURL=TenantDrawerHealthcheck.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TenantDrawerHealthcheck.js","sourceRoot":"","sources":["../../../src/containers/Tenant/TenantDrawerHealthcheck.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,wBAAwB,EACxB,iBAAiB,GACpB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"TenantDrawerHealthcheck.js","sourceRoot":"","sources":["../../../src/containers/Tenant/TenantDrawerHealthcheck.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { ArrowLeft, Wrench } from '@gravity-ui/icons';
|
|
4
|
+
import { Button, Flex, Icon, Tab, TabList, TabProvider, Text } from '@gravity-ui/uikit';
|
|
4
5
|
import { skipToken } from '@reduxjs/toolkit/query';
|
|
5
6
|
import { isNil } from 'lodash';
|
|
6
7
|
import { Helmet } from 'react-helmet-async';
|
|
7
|
-
import {
|
|
8
|
+
import { useHistory } from 'react-router-dom';
|
|
9
|
+
import { AutoRefreshControl } from '../../components/AutoRefreshControl/AutoRefreshControl';
|
|
10
|
+
import { CopyableValue } from '../../components/CopyableValue/CopyableValue';
|
|
11
|
+
import { DiskTypeLabel } from '../../components/DiskStatus/DiskStatus';
|
|
8
12
|
import { ResponseError } from '../../components/Errors/ResponseError';
|
|
9
13
|
import { EvictVDiskButton, isAllVdiskParamsDefined, } from '../../components/EvictVDiskButton/EvictVDiskButton';
|
|
10
14
|
import { InfoViewerSkeleton } from '../../components/InfoViewerSkeleton/InfoViewerSkeleton';
|
|
11
15
|
import { InternalLink } from '../../components/InternalLink/InternalLink';
|
|
12
|
-
import {
|
|
16
|
+
import { LinkWithIcon } from '../../components/LinkWithIcon/LinkWithIcon';
|
|
13
17
|
import { VDiskInfo } from '../../components/VDiskInfo/VDiskInfo';
|
|
18
|
+
import { vDiskInfoKeyset } from '../../components/VDiskInfo/i18n';
|
|
19
|
+
import { VDiskDonorLabel, VDiskReplicationStatus, VDiskStateLabel, } from '../../components/VDiskStatus';
|
|
14
20
|
import { useVDiskPagePath } from '../../routes';
|
|
15
21
|
import { api } from '../../store/reducers/api';
|
|
16
|
-
import { useNewStorageViewEnabled } from '../../store/reducers/capabilities/hooks';
|
|
17
22
|
import { setHeaderBreadcrumbs } from '../../store/reducers/header/header';
|
|
18
23
|
import { vDiskApi } from '../../store/reducers/vdisk/vdisk';
|
|
19
24
|
import { cn } from '../../utils/cn';
|
|
25
|
+
import { EMPTY_DATA_PLACEHOLDER } from '../../utils/constants';
|
|
20
26
|
import { parseVdiskId } from '../../utils/dataFormatters/dataFormatters';
|
|
21
|
-
import {
|
|
22
|
-
import { formatPDiskType } from '../../utils/disks/getPDiskType';
|
|
23
|
-
import { getDataSeverityColor } from '../../utils/disks/helpers';
|
|
27
|
+
import { createVDiskDeveloperUILink, useHasDeveloperUi } from '../../utils/developerUI/developerUI';
|
|
24
28
|
import { useAutoRefreshInterval, useTypedDispatch } from '../../utils/hooks';
|
|
25
29
|
import { useAppTitle } from '../App/AppTitleContext';
|
|
26
30
|
import { PaginatedStorage } from '../Storage/PaginatedStorage';
|
|
@@ -33,10 +37,12 @@ const vDiskPageCn = cn('ydb-vdisk-page');
|
|
|
33
37
|
export function VDiskPage() {
|
|
34
38
|
var _a;
|
|
35
39
|
const dispatch = useTypedDispatch();
|
|
40
|
+
const history = useHistory();
|
|
41
|
+
const showBackButton = history.length > 1;
|
|
36
42
|
const getVDiskPagePath = useVDiskPagePath();
|
|
37
43
|
const containerRef = React.useRef(null);
|
|
38
44
|
const { nodeId, vDiskId: vDiskIdParam, database, vDiskTab, vDiskTabs } = useVDiskQueryParams();
|
|
39
|
-
const
|
|
45
|
+
const hasDeveloperUi = useHasDeveloperUi();
|
|
40
46
|
const [autoRefreshInterval] = useAutoRefreshInterval();
|
|
41
47
|
const params = React.useMemo(() => {
|
|
42
48
|
if (!isNil(vDiskIdParam)) {
|
|
@@ -57,7 +63,7 @@ export function VDiskPage() {
|
|
|
57
63
|
}));
|
|
58
64
|
}, [dispatch, database, (_a = vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.VDiskId) === null || _a === void 0 ? void 0 : _a.GroupID, vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.StringifiedId]);
|
|
59
65
|
const loading = isFetching && vDiskData === undefined;
|
|
60
|
-
const { NodeHost, NodeId,
|
|
66
|
+
const { NodeHost, NodeId, PDiskId, PDiskType, VDiskId, StringifiedId } = vDiskData || {};
|
|
61
67
|
const resolvedVDiskId = VDiskId || (!loading && parseVdiskId(vDiskIdParam)) || undefined;
|
|
62
68
|
const { GroupID } = resolvedVDiskId || {};
|
|
63
69
|
const vDiskId = (vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.StringifiedId) || (loading ? undefined : vDiskIdParam);
|
|
@@ -73,27 +79,16 @@ export function VDiskPage() {
|
|
|
73
79
|
return (_jsx(Helmet, { titleTemplate: `%s - ${vDiskPagePart} - ${pDiskPagePart} — ${nodePagePart} — ${appTitle}`, defaultTitle: `${vDiskPagePart} - ${pDiskPagePart} — ${nodePagePart} — ${appTitle}` }));
|
|
74
80
|
};
|
|
75
81
|
const renderPageMeta = () => {
|
|
76
|
-
|
|
77
|
-
const nodeIdItem = NodeId ? `${vDiskPageKeyset('node')}: ${NodeId}` : undefined;
|
|
78
|
-
const pDiskIdItem = NodeId ? `${vDiskPageKeyset('pdisk')}: ${PDiskId}` : undefined;
|
|
79
|
-
return (_jsx(PageMetaWithAutorefresh, { className: vDiskPageCn('meta'), loading: loading, items: [
|
|
80
|
-
hostItem,
|
|
81
|
-
nodeIdItem,
|
|
82
|
-
NodeType,
|
|
83
|
-
NodeDC,
|
|
84
|
-
pDiskIdItem,
|
|
85
|
-
formatPDiskType(PDiskType),
|
|
86
|
-
] }));
|
|
87
|
-
};
|
|
88
|
-
const renderTitleMeta = () => {
|
|
89
|
-
if (!(vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.DonorMode)) {
|
|
82
|
+
if (!showBackButton) {
|
|
90
83
|
return null;
|
|
91
84
|
}
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
return (_jsxs(Flex, { className: vDiskPageCn('meta'), alignItems: "center", justifyContent: "space-between", gap: 1, children: [_jsxs(Button, { size: "m", view: "outlined", onClick: () => history.goBack(), children: [_jsx(Icon, { data: ArrowLeft, size: 16 }), vDiskPageKeyset('action_back')] }), _jsx(AutoRefreshControl, { className: vDiskPageCn('refresh-control') })] }));
|
|
86
|
+
};
|
|
87
|
+
const renderTitleMeta = () => {
|
|
88
|
+
return (_jsxs(Flex, { gap: 2, wrap: "wrap", alignItems: "center", children: [_jsx(VDiskStateLabel, { state: vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.VDiskState, size: "s" }), (vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.DonorMode) ? (_jsx(VDiskDonorLabel, { donorMode: true, size: "s" })) : (_jsx(VDiskReplicationStatus, { data: vDiskData || {}, size: "s" })), _jsx(DiskTypeLabel, { type: PDiskType, size: "s" })] }));
|
|
94
89
|
};
|
|
95
90
|
const renderPageTitle = () => {
|
|
96
|
-
return (
|
|
91
|
+
return (_jsxs(Flex, { className: vDiskPageCn('title'), alignItems: "flex-start", gap: 2, wrap: "nowrap", qa: "vdisk-header", children: [_jsxs(Flex, { direction: "column", gap: 1, className: vDiskPageCn('title-content'), children: [_jsxs(Flex, { gap: 3, alignItems: "center", wrap: "wrap", children: [_jsx(CopyableValue, { copyText: vDiskId, fieldName: vDiskPageKeyset('vdisk'), children: _jsxs(Text, { as: "h1", variant: "header-1", className: vDiskPageCn('heading'), children: [vDiskPageKeyset('vdisk'), ' ', _jsx(Text, { color: "hint", variant: "header-1", children: vDiskId || EMPTY_DATA_PLACEHOLDER })] }) }), renderTitleMeta()] }), _jsxs(Flex, { gap: 1, alignItems: "center", className: vDiskPageCn('pool'), children: [_jsxs(Text, { color: "secondary", children: [vDiskInfoKeyset('pool-name'), ":"] }), _jsx(CopyableValue, { copyText: vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.StoragePoolName, fieldName: vDiskInfoKeyset('pool-name'), children: _jsx(Text, { color: "secondary", className: vDiskPageCn('pool-name'), children: (vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.StoragePoolName) || EMPTY_DATA_PLACEHOLDER }) })] })] }), !showBackButton && (_jsx(AutoRefreshControl, { className: vDiskPageCn('refresh-control') }))] }));
|
|
97
92
|
};
|
|
98
93
|
const handleAfterEvictVDisk = React.useCallback(() => {
|
|
99
94
|
dispatch(api.util.invalidateTags([
|
|
@@ -105,18 +100,23 @@ export function VDiskPage() {
|
|
|
105
100
|
]));
|
|
106
101
|
}, [dispatch, vDiskId]);
|
|
107
102
|
const renderControls = () => {
|
|
108
|
-
|
|
103
|
+
const canEvict = isAllVdiskParamsDefined(resolvedVDiskId) && !(vDiskData === null || vDiskData === void 0 ? void 0 : vDiskData.DonorMode);
|
|
104
|
+
const developerUILink = hasDeveloperUi && !isNil(NodeId) && !isNil(PDiskId) && !isNil(vDiskSlotId)
|
|
105
|
+
? createVDiskDeveloperUILink({
|
|
106
|
+
nodeId: NodeId,
|
|
107
|
+
pDiskId: PDiskId,
|
|
108
|
+
vDiskSlotId,
|
|
109
|
+
})
|
|
110
|
+
: undefined;
|
|
111
|
+
if (!canEvict && !developerUILink) {
|
|
109
112
|
return null;
|
|
110
113
|
}
|
|
111
|
-
return (
|
|
114
|
+
return (_jsxs("div", { className: vDiskPageCn('controls'), "data-qa": "vdisk-controls", children: [canEvict && isAllVdiskParamsDefined(resolvedVDiskId) && (_jsx(EvictVDiskButton, { vDiskId: resolvedVDiskId, view: "action", onSuccess: handleAfterEvictVDisk })), developerUILink && (_jsx(LinkWithIcon, { title: vDiskPageKeyset('action_open-in-developer-ui'), url: developerUILink, icon: Wrench, hideEndIcon: true }))] }));
|
|
112
115
|
};
|
|
113
116
|
const renderInfo = () => {
|
|
114
|
-
return _jsx(VDiskInfo, { data: vDiskData, className: vDiskPageCn('info'),
|
|
117
|
+
return _jsx(VDiskInfo, { data: vDiskData, className: vDiskPageCn('info') }, vDiskId);
|
|
115
118
|
};
|
|
116
119
|
const renderStorageDetails = () => {
|
|
117
|
-
if (!newStorageViewEnabled) {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
120
|
return _jsx(VDiskStorageDetails, { data: vDiskData, className: vDiskPageCn('storage-details') });
|
|
121
121
|
};
|
|
122
122
|
const renderTabs = () => {
|
|
@@ -155,7 +155,7 @@ export function VDiskPage() {
|
|
|
155
155
|
if (loading) {
|
|
156
156
|
return _jsx(InfoViewerSkeleton, { rows: 9 });
|
|
157
157
|
}
|
|
158
|
-
return (_jsxs(React.Fragment, { children: [error ? _jsx(ResponseError, { error: error }) : null,
|
|
158
|
+
return (_jsxs(React.Fragment, { children: [error ? _jsx(ResponseError, { error: error }) : null, renderStorageDetails(), renderInfo(), renderTabs(), renderTabsContent()] }));
|
|
159
159
|
};
|
|
160
160
|
return (_jsxs("div", { className: vDiskPageCn(null), ref: containerRef, children: [renderHelmet(), renderPageMeta(), renderPageTitle(), renderControls(), renderContent()] }));
|
|
161
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDiskPage.js","sourceRoot":"","sources":["../../../src/containers/VDiskPage/VDiskPage.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"VDiskPage.js","sourceRoot":"","sources":["../../../src/containers/VDiskPage/VDiskPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
@use '../../styles//mixins.scss';
|
|
2
|
-
|
|
3
1
|
.ydb-vdisk-page {
|
|
4
2
|
--g-definition-list-item-gap: var(--g-spacing-3);
|
|
5
3
|
position: relative;
|
|
6
4
|
|
|
7
5
|
overflow: auto;
|
|
6
|
+
overflow-anchor: none;
|
|
8
7
|
|
|
9
8
|
height: 100%;
|
|
10
|
-
padding:
|
|
9
|
+
padding: 20px 20px 0;
|
|
11
10
|
|
|
12
11
|
&__meta,
|
|
13
12
|
&__title,
|
|
14
13
|
&__controls,
|
|
14
|
+
&__storage-details,
|
|
15
15
|
&__info,
|
|
16
16
|
&__tabs {
|
|
17
17
|
position: sticky;
|
|
@@ -20,22 +20,35 @@
|
|
|
20
20
|
margin-bottom: 20px;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
&
|
|
24
|
-
|
|
23
|
+
&__heading {
|
|
24
|
+
margin: 0;
|
|
25
|
+
overflow-wrap: anywhere;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
&__pool-name {
|
|
29
|
+
min-width: 0;
|
|
30
|
+
overflow-wrap: anywhere;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&__title-content {
|
|
34
|
+
flex: 1;
|
|
35
|
+
|
|
36
|
+
min-width: 0;
|
|
25
37
|
}
|
|
26
38
|
|
|
27
|
-
&
|
|
28
|
-
|
|
39
|
+
&__refresh-control {
|
|
40
|
+
flex-shrink: 0;
|
|
29
41
|
}
|
|
30
42
|
|
|
31
43
|
&__controls {
|
|
32
44
|
display: flex;
|
|
45
|
+
flex-wrap: wrap;
|
|
33
46
|
align-items: center;
|
|
34
47
|
gap: var(--g-spacing-2);
|
|
35
48
|
}
|
|
36
49
|
|
|
37
50
|
&__storage-details {
|
|
38
|
-
margin-bottom: var(--g-spacing-
|
|
51
|
+
margin-bottom: var(--g-spacing-4);
|
|
39
52
|
}
|
|
40
53
|
|
|
41
54
|
&__tablets-content {
|
|
@@ -1,42 +1,40 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { Text } from '@gravity-ui/uikit';
|
|
3
|
+
import { isNil } from 'lodash';
|
|
3
4
|
import { CellWithPopover } from '../../components/CellWithPopover/CellWithPopover';
|
|
4
|
-
import {
|
|
5
|
+
import { CopyableValue } from '../../components/CopyableValue/CopyableValue';
|
|
6
|
+
import { InternalLinkButton } from '../../components/InternalLinkButton';
|
|
7
|
+
import { getVDiskLocationItems } from '../../components/VDiskInfo/getVDiskDetails';
|
|
5
8
|
import { getPDiskPagePath } from '../../routes';
|
|
9
|
+
import { useNewStorageViewEnabled } from '../../store/reducers/capabilities/hooks';
|
|
6
10
|
import { cn } from '../../utils/cn';
|
|
7
|
-
import { BRAND_BUTTON_CLASS, EMPTY_DATA_PLACEHOLDER } from '../../utils/constants';
|
|
8
11
|
import { useIsViewerUser } from '../../utils/hooks/useIsUserAllowedToMakeChanges';
|
|
9
|
-
import { formatMetricBytes, formatMetricPercent, getMetricBytesCommonSize, } from '../../utils/storageMetrics';
|
|
10
12
|
import { vDiskPageKeyset } from './i18n';
|
|
11
13
|
import './VDiskStorageDetails.scss';
|
|
12
14
|
const b = cn('ydb-vdisk-storage-details');
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const LOCATION_IDS = ['datacenter', 'rack', 'fqdn', 'pdisk-path'];
|
|
16
|
+
function DetailItem({ item }) {
|
|
17
|
+
const copyText = item.copyText === undefined ? undefined : String(item.copyText);
|
|
18
|
+
return (_jsxs("div", { className: b('detail', { location: LOCATION_IDS.includes(item.id) }), "data-qa": `vdisk-location-${item.id}`, children: [_jsx(Text, { color: "secondary", children: item.name }), _jsx(CopyableValue, { copyText: copyText, fieldName: item.name, children: _jsx(CellWithPopover, { content: copyText, disabled: !copyText, placement: ['top', 'bottom'], fullWidth: true, wrapperClassName: b('value-popover'), className: b('value-popover-content', {
|
|
19
|
+
'with-left-trim': item.id === 'pdisk-path',
|
|
20
|
+
}), children: _jsx("span", { tabIndex: copyText ? 0 : undefined, children: item.content }) }) })] }));
|
|
15
21
|
}
|
|
16
|
-
function
|
|
17
|
-
return (_jsxs("div", { className: b('detail'), children: [_jsx(TruncatedDetailValue, { value: value }), _jsx(Text, { color: "secondary", className: b('label'), children: title })] }));
|
|
18
|
-
}
|
|
19
|
-
function TruncatedDetailValue({ value }) {
|
|
20
|
-
const normalizedValue = value === undefined || value === null || value === '' ? undefined : String(value);
|
|
21
|
-
const displayValue = normalizedValue !== null && normalizedValue !== void 0 ? normalizedValue : EMPTY_DATA_PLACEHOLDER;
|
|
22
|
-
return (_jsx(CellWithPopover, { content: normalizedValue, disabled: !normalizedValue, placement: ['top', 'bottom'], fullWidth: true, wrapperClassName: b('value-popover'), className: b('value-popover-content'), children: _jsx(Text, { variant: "subheader-2", className: b('value'), children: displayValue }) }));
|
|
23
|
-
}
|
|
24
|
-
function CopyableDetailItem({ title, value }) {
|
|
25
|
-
const normalizedValue = value === undefined || value === null || value === '' ? undefined : String(value);
|
|
26
|
-
const displayValue = normalizedValue !== null && normalizedValue !== void 0 ? normalizedValue : EMPTY_DATA_PLACEHOLDER;
|
|
27
|
-
return (_jsxs("div", { className: b('detail'), children: [_jsxs(Flex, { alignItems: "center", gap: "1", className: b('value-row', { copyable: true }), children: [_jsx(CellWithPopover, { content: normalizedValue, disabled: !normalizedValue, placement: ['top', 'bottom'], fullWidth: true, wrapperClassName: b('value-popover', { copyable: true }), className: b('value-popover-content', { copyable: true }), children: _jsx(Text, { variant: "subheader-2", className: b('value'), children: displayValue }) }), _jsx(ClipboardButton, { copyText: normalizedValue, withLabel: false, view: "flat-secondary", size: "s" })] }), _jsx(Text, { color: "secondary", className: b('label'), children: title })] }));
|
|
28
|
-
}
|
|
29
|
-
export function VDiskStorageDetails({ className, data }) {
|
|
22
|
+
export function VDiskStorageDetails({ className, data = {} }) {
|
|
30
23
|
const isViewerUser = useIsViewerUser();
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
const free = Number(data === null || data === void 0 ? void 0 : data.FreeSize);
|
|
35
|
-
const metricsSize = getMetricBytesCommonSize([used, total, free]);
|
|
36
|
-
const { NodeDC, NodeRack, NodeHost, NodeId, PDiskId } = data || {};
|
|
37
|
-
const pDiskPath = isViewerUser && NodeId !== undefined && PDiskId !== undefined
|
|
38
|
-
? getPDiskPagePath(PDiskId, NodeId, undefined, { withBasename: true })
|
|
24
|
+
const newStorageViewEnabled = useNewStorageViewEnabled();
|
|
25
|
+
const pDiskPath = isViewerUser && !isNil(data.NodeId) && !isNil(data.PDiskId)
|
|
26
|
+
? getPDiskPagePath(data.PDiskId, data.NodeId)
|
|
39
27
|
: undefined;
|
|
40
|
-
|
|
28
|
+
const items = getVDiskLocationItems(data, {
|
|
29
|
+
Host: data.NodeHost,
|
|
30
|
+
Rack: data.NodeRack,
|
|
31
|
+
DC: data.NodeDC,
|
|
32
|
+
}).filter(({ id }) => newStorageViewEnabled || (id !== 'rack' && id !== 'pdisk-path'));
|
|
33
|
+
return (_jsxs("div", { className: b(null, className), "data-qa": "vdisk-location", children: [_jsx("div", { className: b('card'), children: LOCATION_IDS.map((id) => {
|
|
34
|
+
const item = items.find((entry) => entry.id === id);
|
|
35
|
+
return item ? _jsx(DetailItem, { item: item }, id) : null;
|
|
36
|
+
}) }), _jsxs("div", { className: b('card', { ids: true }), children: [items
|
|
37
|
+
.filter(({ id }) => !LOCATION_IDS.includes(id))
|
|
38
|
+
.map((item) => (_jsx(DetailItem, { item: item }, item.id))), pDiskPath && (_jsx(InternalLinkButton, { href: pDiskPath, size: "s", view: "normal", children: vDiskPageKeyset('action_go-to-pdisk') }))] })] }));
|
|
41
39
|
}
|
|
42
40
|
//# sourceMappingURL=VDiskStorageDetails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDiskStorageDetails.js","sourceRoot":"","sources":["../../../src/containers/VDiskPage/VDiskStorageDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"VDiskStorageDetails.js","sourceRoot":"","sources":["../../../src/containers/VDiskPage/VDiskStorageDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,129 +1,60 @@
|
|
|
1
1
|
.ydb-vdisk-storage-details {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-wrap: wrap;
|
|
4
|
+
gap: var(--g-spacing-1);
|
|
5
5
|
|
|
6
|
-
&
|
|
6
|
+
&__card {
|
|
7
7
|
display: flex;
|
|
8
8
|
flex-wrap: wrap;
|
|
9
|
-
align-items:
|
|
10
|
-
gap: var(--g-spacing-
|
|
11
|
-
|
|
12
|
-
width: fit-content;
|
|
13
|
-
max-width: 100%;
|
|
14
|
-
}
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: var(--g-spacing-5);
|
|
15
11
|
|
|
16
|
-
&__card {
|
|
17
12
|
min-width: 0;
|
|
18
|
-
padding: var(--g-spacing-
|
|
13
|
+
padding: var(--g-spacing-3) var(--g-spacing-5);
|
|
19
14
|
|
|
20
15
|
border-radius: var(--g-border-radius-m) var(--g-border-radius-xs) var(--g-border-radius-xs)
|
|
21
16
|
var(--g-border-radius-m);
|
|
22
17
|
background-color: var(--g-color-base-generic);
|
|
23
18
|
|
|
24
|
-
&
|
|
25
|
-
display: flex;
|
|
26
|
-
flex: 0 0 auto;
|
|
27
|
-
align-items: stretch;
|
|
28
|
-
gap: var(--g-spacing-5);
|
|
29
|
-
|
|
30
|
-
width: max-content;
|
|
31
|
-
max-width: 100%;
|
|
32
|
-
min-height: 74px;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
&_details {
|
|
36
|
-
display: flex;
|
|
37
|
-
flex: 0 1 auto;
|
|
38
|
-
flex-wrap: wrap;
|
|
39
|
-
justify-content: flex-start;
|
|
40
|
-
align-items: center;
|
|
41
|
-
gap: var(--g-spacing-4);
|
|
42
|
-
|
|
43
|
-
width: fit-content;
|
|
44
|
-
max-width: 100%;
|
|
45
|
-
min-height: 74px;
|
|
46
|
-
|
|
19
|
+
&_ids {
|
|
47
20
|
border-radius: var(--g-border-radius-xs) var(--g-border-radius-m)
|
|
48
21
|
var(--g-border-radius-m) var(--g-border-radius-xs);
|
|
49
22
|
}
|
|
50
23
|
}
|
|
51
24
|
|
|
52
|
-
&__details {
|
|
53
|
-
display: flex;
|
|
54
|
-
flex: 0 1 auto;
|
|
55
|
-
flex-wrap: wrap;
|
|
56
|
-
align-items: stretch;
|
|
57
|
-
gap: var(--g-spacing-4);
|
|
58
|
-
|
|
59
|
-
min-width: 0;
|
|
60
|
-
max-width: 100%;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
&__metric,
|
|
64
25
|
&__detail {
|
|
65
26
|
display: flex;
|
|
66
27
|
flex-direction: column;
|
|
67
|
-
|
|
68
|
-
align-items: flex-start;
|
|
69
|
-
gap: var(--g-spacing-1);
|
|
28
|
+
gap: var(--g-spacing-half);
|
|
70
29
|
|
|
71
30
|
min-width: 0;
|
|
72
|
-
|
|
73
|
-
}
|
|
31
|
+
max-width: 250px;
|
|
74
32
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
min-width: 100px;
|
|
79
|
-
max-width: 200px;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
&__value,
|
|
83
|
-
&__label {
|
|
84
|
-
display: block;
|
|
85
|
-
|
|
86
|
-
white-space: nowrap;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
&__value-row &__value {
|
|
90
|
-
overflow: hidden;
|
|
91
|
-
|
|
92
|
-
text-overflow: ellipsis;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
&__value-row {
|
|
96
|
-
flex-wrap: nowrap;
|
|
97
|
-
|
|
98
|
-
width: 100%;
|
|
99
|
-
min-width: 0;
|
|
100
|
-
height: 20px;
|
|
101
|
-
|
|
102
|
-
&_copyable {
|
|
103
|
-
width: auto;
|
|
104
|
-
max-width: 100%;
|
|
33
|
+
&_location {
|
|
34
|
+
min-width: 100px;
|
|
35
|
+
max-width: 200px;
|
|
105
36
|
}
|
|
106
37
|
}
|
|
107
38
|
|
|
108
39
|
&__value-popover {
|
|
109
|
-
flex:
|
|
40
|
+
flex: 0 1 auto;
|
|
110
41
|
|
|
111
42
|
min-width: 0;
|
|
112
|
-
|
|
113
|
-
&_copyable {
|
|
114
|
-
flex: 0 1 auto;
|
|
115
|
-
|
|
116
|
-
max-width: 100%;
|
|
117
|
-
}
|
|
43
|
+
max-width: 100%;
|
|
118
44
|
}
|
|
119
45
|
|
|
120
46
|
&__value-popover-content {
|
|
121
|
-
width:
|
|
47
|
+
width: auto;
|
|
122
48
|
min-width: 0;
|
|
49
|
+
max-width: 100%;
|
|
50
|
+
|
|
51
|
+
&_with-left-trim {
|
|
52
|
+
text-align: end;
|
|
53
|
+
direction: rtl;
|
|
123
54
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
55
|
+
> span {
|
|
56
|
+
unicode-bidi: plaintext;
|
|
57
|
+
}
|
|
127
58
|
}
|
|
128
59
|
}
|
|
129
60
|
}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"fqdn": "FQDN",
|
|
3
2
|
"node": "Node",
|
|
4
3
|
"pdisk": "PDisk",
|
|
5
4
|
"vdisk": "VDisk",
|
|
6
5
|
"storage": "Storage",
|
|
7
6
|
"tablets": "Tablets",
|
|
8
|
-
"
|
|
9
|
-
"field_storage-details-used": "Used",
|
|
10
|
-
"field_storage-details-total": "Total",
|
|
11
|
-
"field_storage-details-free": "Free",
|
|
12
|
-
"field_storage-details-usage": "Usage",
|
|
13
|
-
"field_datacenter": "Datacenter",
|
|
14
|
-
"field_rack": "Rack",
|
|
15
|
-
"field_node": "Node",
|
|
16
|
-
"field_pdisk-id": "PDisk ID",
|
|
7
|
+
"action_back": "Back",
|
|
17
8
|
"action_go-to-pdisk": "Go to PDisk",
|
|
9
|
+
"action_open-in-developer-ui": "Open in Developer UI",
|
|
18
10
|
"tablet-id": "Tablet ID",
|
|
19
11
|
"channel-id": "Channel ID",
|
|
20
12
|
"count": "Count",
|
|
21
|
-
"size": "Size"
|
|
22
|
-
"label_donor": "Donor"
|
|
13
|
+
"size": "Size"
|
|
23
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const vDiskPageKeyset: (key: "count" | "storage" | "size" | "tablets" | "node" | "
|
|
1
|
+
export declare const vDiskPageKeyset: (key: "count" | "storage" | "size" | "tablets" | "node" | "tablet-id" | "action_open-in-developer-ui" | "action_go-to-pdisk" | "action_back" | "vdisk" | "pdisk" | "channel-id", params?: import("@gravity-ui/i18n").Params) => string;
|
|
@@ -78,6 +78,7 @@ export function parseLoggingUrls(logging) {
|
|
|
78
78
|
return undefined;
|
|
79
79
|
}
|
|
80
80
|
const settingsSchema = z.object({
|
|
81
|
+
unavailable: z.boolean().optional().catch(undefined),
|
|
81
82
|
use_meta_proxy: z.boolean().optional(),
|
|
82
83
|
cluster_domain: z.string().optional(),
|
|
83
84
|
cluster_external_name: z.string().optional(),
|