diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f943cbc277..6145226d26 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "9.10.0" + ".": "9.11.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 225e39a53d..9068b814bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [9.11.0](https://github.com/ydb-platform/ydb-embedded-ui/compare/v9.10.0...v9.11.0) (2025-06-30) + + +### Features + +* **Clusters:** redesign table ([#2495](https://github.com/ydb-platform/ydb-embedded-ui/issues/2495)) ([7fa0358](https://github.com/ydb-platform/ydb-embedded-ui/commit/7fa0358d0be8572cb0bb46d6ac7b59de5f58e262)) + + +### Bug Fixes + +* **HealthcheckPreview:** enable autorefresh for all clusters ([#2512](https://github.com/ydb-platform/ydb-embedded-ui/issues/2512)) ([6ed077e](https://github.com/ydb-platform/ydb-embedded-ui/commit/6ed077ef1bb5a78774e43f875d3d37cee0f61f43)) +* unskip tests ([#2514](https://github.com/ydb-platform/ydb-embedded-ui/issues/2514)) ([0198726](https://github.com/ydb-platform/ydb-embedded-ui/commit/0198726db84917950799ae757479e50acd90948b)) +* **VDiskPage:** display params in 2 columns, change order ([#2479](https://github.com/ydb-platform/ydb-embedded-ui/issues/2479)) ([2e0f203](https://github.com/ydb-platform/ydb-embedded-ui/commit/2e0f2035c8bc61406f746fa15b697a1fde646fa7)) + ## [9.10.0](https://github.com/ydb-platform/ydb-embedded-ui/compare/v9.9.1...v9.10.0) (2025-06-30) diff --git a/package-lock.json b/package-lock.json index 4e26377903..467b2efb62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ydb-embedded-ui", - "version": "9.10.0", + "version": "9.11.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ydb-embedded-ui", - "version": "9.10.0", + "version": "9.11.0", "dependencies": { "@bem-react/classname": "^1.6.0", "@ebay/nice-modal-react": "^1.2.13", diff --git a/package.json b/package.json index 2d58c0364e..a86daed755 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ydb-embedded-ui", - "version": "9.10.0", + "version": "9.11.0", "files": [ "dist" ], diff --git a/src/components/Search/Search.tsx b/src/components/Search/Search.tsx index 3892f94cd8..4923baedc5 100644 --- a/src/components/Search/Search.tsx +++ b/src/components/Search/Search.tsx @@ -1,5 +1,7 @@ import React from 'react'; +import type {TextInputProps} from '@gravity-ui/uikit'; + import {cn} from '../../utils/cn'; import {DebouncedInput} from '../DebouncedInput/DebouncedTextInput'; @@ -7,13 +9,11 @@ import './Search.scss'; const b = cn('ydb-search'); -interface SearchProps { +interface SearchProps extends Omit { onChange: (value: string) => void; value?: string; width?: React.CSSProperties['width']; - className?: string; debounce?: number; - placeholder?: string; inputRef?: React.RefObject; } @@ -23,8 +23,8 @@ export const Search = ({ width, className, debounce, - placeholder, inputRef, + ...props }: SearchProps) => { return ( ); }; diff --git a/src/components/VDiskInfo/VDiskInfo.scss b/src/components/VDiskInfo/VDiskInfo.scss index d4c2490977..321e5c063f 100644 --- a/src/components/VDiskInfo/VDiskInfo.scss +++ b/src/components/VDiskInfo/VDiskInfo.scss @@ -1,4 +1,8 @@ .ydb-vdisk-info { + &__info { + width: 500px; + } + &__title { display: flex; flex-direction: row; diff --git a/src/components/VDiskInfo/VDiskInfo.tsx b/src/components/VDiskInfo/VDiskInfo.tsx index ad2a82615c..3013b521bb 100644 --- a/src/components/VDiskInfo/VDiskInfo.tsx +++ b/src/components/VDiskInfo/VDiskInfo.tsx @@ -12,7 +12,6 @@ import type {PreparedVDisk} from '../../utils/disks/types'; import {useIsUserAllowedToMakeChanges} from '../../utils/hooks/useIsUserAllowedToMakeChanges'; import {bytesToSpeed} from '../../utils/utils'; import {InfoViewer} from '../InfoViewer'; -import type {InfoViewerProps} from '../InfoViewer/InfoViewer'; import {LinkWithIcon} from '../LinkWithIcon/LinkWithIcon'; import {ProgressViewer} from '../ProgressViewer/ProgressViewer'; import {StatusIcon} from '../StatusIcon/StatusIcon'; @@ -23,10 +22,12 @@ import './VDiskInfo.scss'; const b = cn('ydb-vdisk-info'); -interface VDiskInfoProps extends Omit { +interface VDiskInfoProps { data?: T; withVDiskPageLink?: boolean; withTitle?: boolean; + className?: string; + wrap?: true; } // eslint-disable-next-line complexity @@ -34,7 +35,8 @@ export function VDiskInfo({ data, withVDiskPageLink, withTitle, - ...infoViewerProps + className, + wrap, }: VDiskInfoProps) { const isUserAllowedToMakeChanges = useIsUserAllowedToMakeChanges(); @@ -59,22 +61,19 @@ export function VDiskInfo({ NodeId, } = data || {}; - const vdiskInfo = []; + const leftColumn = []; - if (valueIsDefined(VDiskSlotId)) { - vdiskInfo.push({label: vDiskInfoKeyset('slot-id'), value: VDiskSlotId}); - } if (valueIsDefined(StoragePoolName)) { - vdiskInfo.push({label: vDiskInfoKeyset('pool-name'), value: StoragePoolName}); + leftColumn.push({label: vDiskInfoKeyset('pool-name'), value: StoragePoolName}); } if (valueIsDefined(VDiskState)) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('state-status'), value: VDiskState, }); } if (Number(AllocatedSize) >= 0 && Number(AvailableSize) >= 0) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('size'), value: ( ({ ), }); } - if (valueIsDefined(Kind)) { - vdiskInfo.push({label: vDiskInfoKeyset('kind'), value: Kind}); - } - if (valueIsDefined(Guid)) { - vdiskInfo.push({label: vDiskInfoKeyset('guid'), value: Guid}); - } - if (valueIsDefined(IncarnationGuid)) { - vdiskInfo.push({label: vDiskInfoKeyset('incarnation-guid'), value: IncarnationGuid}); - } - if (valueIsDefined(InstanceGuid)) { - vdiskInfo.push({label: vDiskInfoKeyset('instance-guid'), value: InstanceGuid}); - } - if (valueIsDefined(Replicated)) { - vdiskInfo.push({ - label: vDiskInfoKeyset('replication-status'), - value: Replicated ? vDiskInfoKeyset('yes') : vDiskInfoKeyset('no'), - }); - } if (valueIsDefined(DiskSpace)) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('space-status'), value: , }); } + if (valueIsDefined(FrontQueues)) { + leftColumn.push({ + label: vDiskInfoKeyset('front-queues'), + value: , + }); + } if (valueIsDefined(SatisfactionRank?.FreshRank?.Flag)) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('fresh-rank-satisfaction'), value: , }); } if (valueIsDefined(SatisfactionRank?.LevelRank?.Flag)) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('level-rank-satisfaction'), value: , }); } - if (valueIsDefined(FrontQueues)) { - vdiskInfo.push({ - label: vDiskInfoKeyset('front-queues'), - value: , - }); - } - if (valueIsDefined(HasUnreadableBlobs)) { - vdiskInfo.push({ - label: vDiskInfoKeyset('has-unreadable-blobs'), - value: HasUnreadableBlobs ? vDiskInfoKeyset('yes') : vDiskInfoKeyset('no'), - }); - } if (valueIsDefined(ReadThroughput)) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('read-throughput'), value: bytesToSpeed(ReadThroughput), }); } if (valueIsDefined(WriteThroughput)) { - vdiskInfo.push({ + leftColumn.push({ label: vDiskInfoKeyset('write-throughput'), value: bytesToSpeed(WriteThroughput), }); } + const rightColumn = []; + + if (valueIsDefined(Replicated)) { + rightColumn.push({ + label: vDiskInfoKeyset('replication-status'), + value: Replicated ? vDiskInfoKeyset('yes') : vDiskInfoKeyset('no'), + }); + } + if (valueIsDefined(VDiskSlotId)) { + rightColumn.push({label: vDiskInfoKeyset('slot-id'), value: VDiskSlotId}); + } + + if (valueIsDefined(Kind)) { + rightColumn.push({label: vDiskInfoKeyset('kind'), value: Kind}); + } + if (valueIsDefined(Guid)) { + rightColumn.push({label: vDiskInfoKeyset('guid'), value: Guid}); + } + if (valueIsDefined(IncarnationGuid)) { + rightColumn.push({label: vDiskInfoKeyset('incarnation-guid'), value: IncarnationGuid}); + } + if (valueIsDefined(InstanceGuid)) { + rightColumn.push({label: vDiskInfoKeyset('instance-guid'), value: InstanceGuid}); + } + if (valueIsDefined(HasUnreadableBlobs)) { + rightColumn.push({ + label: vDiskInfoKeyset('has-unreadable-blobs'), + value: HasUnreadableBlobs ? vDiskInfoKeyset('yes') : vDiskInfoKeyset('no'), + }); + } + const diskParamsDefined = valueIsDefined(PDiskId) && valueIsDefined(NodeId) && valueIsDefined(VDiskSlotId); @@ -186,7 +192,7 @@ export function VDiskInfo({ } if (links.length) { - vdiskInfo.push({ + rightColumn.push({ label: vDiskInfoKeyset('links'), value: ( @@ -199,7 +205,19 @@ export function VDiskInfo({ const title = data && withTitle ? : null; - return ; + // Component is used both on vdisk page and in popups + // Display in two columns on page (row + wrap) and in one column in popups (column + nowrap) + return ( + + null} + className={b('info')} + /> + null} className={b('info')} /> + + ); } interface VDiskTitleProps { diff --git a/src/containers/Clusters/Clusters.scss b/src/containers/Clusters/Clusters.scss index 2e12a1349c..72d21aa075 100644 --- a/src/containers/Clusters/Clusters.scss +++ b/src/containers/Clusters/Clusters.scss @@ -17,37 +17,6 @@ &__autorefresh { margin-left: auto; } - &__cluster-status { - width: 18px; - height: 18px; - margin-right: 8px; - - border-radius: 3px; - - & span { - display: flex; - align-items: center; - } - - &_type_green { - background-color: var(--ydb-color-status-green); - } - &_type_yellow { - background-color: var(--ydb-color-status-yellow); - } - &_type_blue { - background-color: var(--ydb-color-status-blue); - } - &_type_red { - background: var(--ydb-color-status-red); - } - &_type_grey { - background: var(--ydb-color-status-grey); - } - &_type_orange { - background: var(--ydb-color-status-orange); - } - } &__cluster-name { white-space: normal; text-decoration: none; @@ -71,29 +40,17 @@ margin-right: 15px; &_wide { - width: 300px; + width: 320px; } } &__empty-cell { color: var(--g-color-text-secondary); } - &__tooltip-content { - word-break: break-all; - } & .g-progress__item { transition: none; } - &__text { - color: var(--g-color-text-primary); - @include mixins.body-2-typography(); - - &::first-letter { - color: var(--g-color-text-danger); - } - } - &__description { max-width: 200px; @@ -113,36 +70,25 @@ } &__table { + --data-table-cell-align: top; + --data-table-cell-vertical-padding: var(--g-spacing-3); @include mixins.freeze-nth-column(1); } - &__balancer-cell { - display: flex; - flex-direction: row; - align-items: center; - } - - &__balancer-text { - display: inline-block; - overflow: hidden; - - max-width: 92%; - margin-right: 5px; - - text-overflow: ellipsis; - overflow-wrap: break-word !important; - } - &__balancer-icon { - display: flex; - align-items: center; + &__balancer-copy-icon { + color: var(--g-color-text-secondary); } + &__search-icon { + margin: 0 var(--g-spacing-1); - &__error { - margin-left: 15px; - @include mixins.body-2-typography(); + color: var(--g-color-text-secondary); } &__remove-cluster { color: var(--ydb-color-status-red); } + + &__progress { + --g-progress-filled-background-color: var(--ydb-color-status-green); + } } diff --git a/src/containers/Clusters/Clusters.tsx b/src/containers/Clusters/Clusters.tsx index 6f6ed8821e..2cadf127de 100644 --- a/src/containers/Clusters/Clusters.tsx +++ b/src/containers/Clusters/Clusters.tsx @@ -1,7 +1,8 @@ import React from 'react'; +import {Magnifier} from '@gravity-ui/icons'; import DataTable from '@gravity-ui/react-data-table'; -import {Flex, Select, TableColumnSetup, Text} from '@gravity-ui/uikit'; +import {Flex, Icon, Select, TableColumnSetup, Text} from '@gravity-ui/uikit'; import {Helmet} from 'react-helmet-async'; import {AutoRefreshControl} from '../../components/AutoRefreshControl/AutoRefreshControl'; @@ -129,12 +130,7 @@ export function Clusters() { const renderPageTitle = () => { return ( - - {i18n('page_title')} - - {clusters?.length} - - + {uiFactory.clustersPageTitle ?? i18n('page_title')} ); @@ -152,6 +148,7 @@ export function Clusters() {
} onChange={changeClusterName} value={clusterName} /> @@ -206,7 +203,12 @@ export function Clusters() { />
- {query.isError ? : null} + {clusters?.length ? ( + + {i18n('clusters-count', {count: filteredClusters?.length})} + + ) : null} + {query.isError ? : null} {query.isLoading ? : null} {query.fulfilledTimeStamp ? (
diff --git a/src/containers/Clusters/columns.tsx b/src/containers/Clusters/columns.tsx index 291d5adbf1..ec168f21c3 100644 --- a/src/containers/Clusters/columns.tsx +++ b/src/containers/Clusters/columns.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import {HelpPopover} from '@gravity-ui/components'; import {Pencil, TrashBin} from '@gravity-ui/icons'; import DataTable from '@gravity-ui/react-data-table'; import type {Column} from '@gravity-ui/react-data-table'; @@ -10,14 +9,16 @@ import { DropdownMenu, Link as ExternalLink, Flex, + Label, Progress, + Text, } from '@gravity-ui/uikit'; -import {ProgressViewer} from '../../components/ProgressViewer/ProgressViewer'; -import {UserCard} from '../../components/User/User'; +import {EntityStatus} from '../../components/EntityStatusNew/EntityStatus'; import type {PreparedCluster} from '../../store/reducers/clusters/types'; +import {EFlag} from '../../types/api/enums'; import {uiFactory} from '../../uiFactory/uiFactory'; -import {formatStorageValuesToTb} from '../../utils/dataFormatters/dataFormatters'; +import {formatNumber, formatStorageValuesToTb} from '../../utils/dataFormatters/dataFormatters'; import {createDeveloperUIMonitoringPageHref} from '../../utils/developerUI/developerUI'; import {getCleanBalancerValue} from '../../utils/parseBalancer'; import {clusterTabsIds, getClusterPath} from '../Cluster/utils'; @@ -39,8 +40,9 @@ function getTitleColumn({isEditClusterAvailable, isDeleteClusterAvailable}: Clus return { name: COLUMNS_NAMES.TITLE, header: COLUMNS_TITLES[COLUMNS_NAMES.TITLE], - width: 230, + width: 320, defaultOrder: DataTable.ASCENDING, + sortAccessor: (row) => row.title || row.name, render: ({row}) => { const { name: clusterName, @@ -55,6 +57,8 @@ function getTitleColumn({isEditClusterAvailable, isDeleteClusterAvailable}: Clus const clusterStatus = row.cluster?.Overall; + const cleanedBalancer = row.balancer ? getCleanBalancerValue(row.balancer) : null; + const renderActions = () => { const menuItems: (DropdownMenuItem | DropdownMenuItem[])[] = []; @@ -87,41 +91,63 @@ function getTitleColumn({isEditClusterAvailable, isDeleteClusterAvailable}: Clus return ( ); }; + const renderName = () => { + return ( +
+ {row.title || row.name} +
+ ); + }; + + const renderStatus = () => { + if (clusterStatus) { + return ; + } + return ( + + ); + }; + + const renderBalancer = () => { + if (!cleanedBalancer) { + return null; + } + + return ( + + + {cleanedBalancer} + + + + ); + }; + return ( - - - {clusterStatus ? ( - -
- - ) : ( -
- - {row.cluster?.error || i18n('tooltip_no-cluster-data')} - - } - offset={{left: 0}} - /> -
- )} -
- {row.title || row.name} -
+ + + {renderName()} + + {renderStatus()} + {renderActions()} + - {renderActions()} + {renderBalancer()} ); }, @@ -193,6 +219,21 @@ const CLUSTERS_COLUMNS: Column[] = [ ); }, }, + { + name: COLUMNS_NAMES.STATUS, + header: COLUMNS_TITLES[COLUMNS_NAMES.STATUS], + width: 180, + sortable: true, + render: ({row}) => { + return ; + }, + }, + { + name: COLUMNS_NAMES.SERVICE, + header: COLUMNS_TITLES[COLUMNS_NAMES.SERVICE], + width: 100, + sortable: true, + }, { name: COLUMNS_NAMES.DC, header: COLUMNS_TITLES[COLUMNS_NAMES.DC], @@ -206,21 +247,10 @@ const CLUSTERS_COLUMNS: Column[] = [ ); }, }, - { - name: COLUMNS_NAMES.SERVICE, - header: COLUMNS_TITLES[COLUMNS_NAMES.SERVICE], - width: 100, - sortable: true, - }, - { - name: COLUMNS_NAMES.STATUS, - header: COLUMNS_TITLES[COLUMNS_NAMES.STATUS], - width: 150, - sortable: true, - }, { name: COLUMNS_NAMES.NODES, header: COLUMNS_TITLES[COLUMNS_NAMES.NODES], + width: 170, resizeMinWidth: 170, defaultOrder: DataTable.DESCENDING, sortAccessor: ({cluster = {}}) => { @@ -235,16 +265,26 @@ const CLUSTERS_COLUMNS: Column[] = [ return EMPTY_CELL; } - return ; + return ( + + ); }, }, { name: COLUMNS_NAMES.LOAD, header: COLUMNS_TITLES[COLUMNS_NAMES.LOAD], + width: 170, resizeMinWidth: 170, defaultOrder: DataTable.DESCENDING, sortAccessor: ({cluster}) => { - return cluster?.NumberOfCpus; + return cluster?.NumberOfCpus || 0; }, render: ({row}) => { const { @@ -259,17 +299,25 @@ const CLUSTERS_COLUMNS: Column[] = [ } return ( - + ); }, }, { name: COLUMNS_NAMES.STORAGE, header: COLUMNS_TITLES[COLUMNS_NAMES.STORAGE], + width: 170, resizeMinWidth: 170, defaultOrder: DataTable.DESCENDING, sortAccessor: ({cluster}) => { - return Number(cluster?.StorageTotal); + return Number(cluster?.StorageTotal) || 0; }, render: ({row}) => { const {StorageUsed = 0, StorageTotal = 0, Overall} = row.cluster || {}; @@ -278,11 +326,19 @@ const CLUSTERS_COLUMNS: Column[] = [ return EMPTY_CELL; } + const [valueString, capacityString] = formatStorageValuesToTb( + Number(StorageUsed), + Number(StorageTotal), + ); + return ( - ); }, @@ -311,23 +367,11 @@ const CLUSTERS_COLUMNS: Column[] = [ return Number(row.cluster?.Tenants) || EMPTY_CELL; }, }, - { - name: COLUMNS_NAMES.OWNER, - header: COLUMNS_TITLES[COLUMNS_NAMES.OWNER], - sortable: false, - width: 120, - render: ({row}) => { - const logins = row.owner?.split(', '); - return logins?.length - ? logins.map((login) => ) - : EMPTY_CELL; - }, - }, { name: COLUMNS_NAMES.DESCRIPTION, header: COLUMNS_TITLES[COLUMNS_NAMES.DESCRIPTION], sortable: false, - width: 150, + width: 200, render: ({row}) => { return row.description ? (
{row.description}
@@ -336,27 +380,29 @@ const CLUSTERS_COLUMNS: Column[] = [ ); }, }, - { - name: COLUMNS_NAMES.BALANCER, - header: COLUMNS_TITLES[COLUMNS_NAMES.BALANCER], - sortable: false, - width: 290, - render: ({row}) => { - if (!row.balancer) { - return EMPTY_CELL; - } - - const cleanedValue = getCleanBalancerValue(row.balancer); - return ( -
-
{cleanedValue}
- -
- ); - }, - }, ]; export function getClustersColumns(params: ClustersColumnsParams) { return [getTitleColumn(params), ...CLUSTERS_COLUMNS]; } + +function ClustersTableProgressBar({ + value, + capacity, + description, +}: { + value: number; + capacity: number; + description?: string; +}) { + const usage = capacity ? (value / capacity) * 100 : 0; + + return ( + +
+ +
+ {description} +
+ ); +} diff --git a/src/containers/Clusters/constants.ts b/src/containers/Clusters/constants.ts index 58149dd429..70a0e517bd 100644 --- a/src/containers/Clusters/constants.ts +++ b/src/containers/Clusters/constants.ts @@ -11,9 +11,7 @@ export const COLUMNS_NAMES = { STORAGE: 'storage', HOSTS: 'hosts', TENANTS: 'tenants', - OWNER: 'owner', DESCRIPTION: 'description', - BALANCER: 'balancer', } as const; export const DEFAULT_COLUMNS = [ @@ -26,8 +24,6 @@ export const DEFAULT_COLUMNS = [ COLUMNS_NAMES.STORAGE, COLUMNS_NAMES.HOSTS, COLUMNS_NAMES.TENANTS, - COLUMNS_NAMES.OWNER, - COLUMNS_NAMES.BALANCER, ]; export const COLUMNS_TITLES = { @@ -40,8 +36,6 @@ export const COLUMNS_TITLES = { [COLUMNS_NAMES.LOAD]: 'Load', [COLUMNS_NAMES.STORAGE]: 'Storage', [COLUMNS_NAMES.HOSTS]: 'Hosts', - [COLUMNS_NAMES.TENANTS]: 'Tenants', - [COLUMNS_NAMES.OWNER]: 'Owner', + [COLUMNS_NAMES.TENANTS]: 'Databases', [COLUMNS_NAMES.DESCRIPTION]: 'Description', - [COLUMNS_NAMES.BALANCER]: 'Balancer', } as const; diff --git a/src/containers/Clusters/i18n/en.json b/src/containers/Clusters/i18n/en.json index 49164c22b2..2e2749eac2 100644 --- a/src/containers/Clusters/i18n/en.json +++ b/src/containers/Clusters/i18n/en.json @@ -3,7 +3,7 @@ "controls_service-select-label": "Service:", "controls_version-select-label": "Version:", - "controls_search-placeholder": "Cluster name, version, host", + "controls_search-placeholder": "Cluster name, version, host...", "controls_select-placeholder": "All", "statistics_clusters": "Clusters", @@ -15,6 +15,9 @@ "tooltip_no-cluster-data": "No cluster data", + "clusters-count": "{{count}} clusters", + "entities-count": "{{value}} of {{capacity}}", + "page_title": "Clusters", "edit-cluster": "Edit Cluster", diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.scss b/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.scss index f5b75ce77b..e278f0cedf 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.scss +++ b/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.scss @@ -1,12 +1,6 @@ .ydb-healthcheck-preview { $block: &; - &__icon-wrapper { - display: inline-flex; - - color: var(--g-color-text-warning); - } - &__skeleton { width: 100%; height: 60px; diff --git a/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.tsx b/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.tsx index 87f15901a7..3acc5e77d0 100644 --- a/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.tsx +++ b/src/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.tsx @@ -1,8 +1,7 @@ import type {AlertProps} from '@gravity-ui/uikit'; -import {Alert, Button, Flex, Icon, Popover, Skeleton} from '@gravity-ui/uikit'; +import {Alert, Button, Flex, Icon, Skeleton} from '@gravity-ui/uikit'; import {ResponseError} from '../../../../../components/Errors/ResponseError'; -import {useClusterBaseInfo} from '../../../../../store/reducers/cluster/cluster'; import {healthcheckApi} from '../../../../../store/reducers/healthcheckInfo/healthcheckInfo'; import {SelfCheckResult} from '../../../../../types/api/healthcheck'; import {cn} from '../../../../../utils/cn'; @@ -12,8 +11,6 @@ import {useTenantQueryParams} from '../../../useTenantQueryParams'; import i18n from './i18n'; -import CircleExclamationIcon from '@gravity-ui/icons/svgs/circle-exclamation.svg'; - import './HealthcheckPreview.scss'; const b = cn('ydb-healthcheck-preview'); @@ -35,12 +32,8 @@ export function HealthcheckPreview(props: HealthcheckPreviewProps) { const {tenantName} = props; const [autoRefreshInterval] = useAutoRefreshInterval(); - const {name} = useClusterBaseInfo(); - const {handleShowHealthcheckChange} = useTenantQueryParams(); - const healthcheckPreviewDisabled = name === 'ydb_ru'; - const { currentData: data, isFetching, @@ -48,8 +41,7 @@ export function HealthcheckPreview(props: HealthcheckPreviewProps) { } = healthcheckApi.useGetHealthcheckInfoQuery( {database: tenantName}, { - //FIXME https://github.com/ydb-platform/ydb-embedded-ui/issues/1889 - pollingInterval: healthcheckPreviewDisabled ? undefined : autoRefreshInterval, + pollingInterval: autoRefreshInterval, }, ); @@ -81,15 +73,6 @@ export function HealthcheckPreview(props: HealthcheckPreviewProps) { {HEALTHCHECK_RESULT_TO_TEXT[selfCheckResult]} {issuesText ? ` ${issuesText}` : ''} - {healthcheckPreviewDisabled ? ( - - {() => } - - ) : null} {issuesCount && (