Skip to content

Commit db5d922

Browse files
authored
fix: refactor metrics storage section (#568)
1 parent d82e65b commit db5d922

File tree

5 files changed

+32
-121
lines changed

5 files changed

+32
-121
lines changed

src/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,8 @@
118118
cursor: pointer;
119119
}
120120
}
121+
122+
&__info {
123+
margin-bottom: 36px;
124+
}
121125
}

src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.scss

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import InfoViewer from '../../../../../components/InfoViewer/InfoViewer';
44
import {ProgressViewer} from '../../../../../components/ProgressViewer/ProgressViewer';
55
import {formatStorageValues} from '../../../../../utils/dataFormatters/dataFormatters';
66
import {getSizeWithSignificantDigits} from '../../../../../utils/bytesParsers';
7+
8+
import '../TenantOverview.scss';
9+
710
import {TopTables} from './TopTables';
811
import {TopGroups} from './TopGroups';
9-
import './TenantStorage.scss';
1012

11-
const b = cn('tenant-overview-storage');
13+
const b = cn('tenant-overview');
1214

1315
export interface TenantStorageMetrics {
1416
blobStorageUsed?: number;
Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,14 @@
1-
import cn from 'bem-cn-lite';
21
import {useCallback} from 'react';
32
import {useDispatch} from 'react-redux';
43

5-
import DataTable from '@gravity-ui/react-data-table';
6-
74
import {useAutofetcher, useTypedSelector} from '../../../../../utils/hooks';
8-
import {
9-
TENANT_OVERVIEW_TABLES_LIMIT,
10-
TENANT_OVERVIEW_TABLES_SETTINGS,
11-
} from '../../../../../utils/constants';
125
import {
136
setDataWasNotLoaded,
147
getTopStorageGroups,
158
selectTopStorageGroups,
169
} from '../../../../../store/reducers/tenantOverview/topStorageGroups/topStorageGroups';
17-
import {ResponseError} from '../../../../../components/Errors/ResponseError';
18-
import {TableSkeleton} from '../../../../../components/TableSkeleton/TableSkeleton';
1910
import {getStorageTopGroupsColumns} from '../../../../Storage/StorageGroups/getStorageGroupsColumns';
20-
import i18n from '../i18n';
21-
22-
const b = cn('tenant-overview-storage');
11+
import {TenantOverviewTableLayout} from '../TenantOverviewTableLayout';
2312

2413
interface TopGroupsProps {
2514
tenant?: string;
@@ -47,30 +36,14 @@ export function TopGroups({tenant}: TopGroupsProps) {
4736

4837
useAutofetcher(fetchData, [fetchData], autorefresh);
4938

50-
const renderContent = () => {
51-
if (error) {
52-
return <ResponseError error={error} />;
53-
}
54-
55-
if (loading && !wasLoaded) {
56-
return <TableSkeleton rows={TENANT_OVERVIEW_TABLES_LIMIT} />;
57-
}
58-
59-
return (
60-
<DataTable
61-
theme="yandex-cloud"
62-
data={topGroups || []}
63-
columns={columns}
64-
settings={TENANT_OVERVIEW_TABLES_SETTINGS}
65-
emptyDataMessage={i18n('top-groups.empty-data')}
66-
/>
67-
);
68-
};
69-
7039
return (
71-
<>
72-
<div className={b('title')}>Top groups by usage</div>
73-
<div className={b('table')}>{renderContent()}</div>
74-
</>
40+
<TenantOverviewTableLayout
41+
data={topGroups || []}
42+
columns={columns}
43+
title="Top groups by usage"
44+
loading={loading}
45+
wasLoaded={wasLoaded}
46+
error={error}
47+
/>
7548
);
7649
}
Lines changed: 15 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
11
import {useDispatch} from 'react-redux';
22
import {useLocation} from 'react-router';
3-
import cn from 'bem-cn-lite';
43

54
import DataTable, {Column} from '@gravity-ui/react-data-table';
6-
import {Popover} from '@gravity-ui/uikit';
75

86
import {useAutofetcher, useTypedSelector} from '../../../../../utils/hooks';
97
import {
108
fetchTopTables,
119
setDataWasNotLoaded,
1210
} from '../../../../../store/reducers/tenantOverview/executeTopTables/executeTopTables';
13-
import {
14-
TENANT_OVERVIEW_TABLES_LIMIT,
15-
TENANT_OVERVIEW_TABLES_SETTINGS,
16-
} from '../../../../../utils/constants';
1711
import type {KeyValueRow} from '../../../../../types/api/query';
1812
import {formatBytes, getSizeWithSignificantDigits} from '../../../../../utils/bytesParsers';
19-
import {TableSkeleton} from '../../../../../components/TableSkeleton/TableSkeleton';
20-
import {ResponseError} from '../../../../../components/Errors/ResponseError';
2113
import {LinkToSchemaObject} from '../../../../../components/LinkToSchemaObject/LinkToSchemaObject';
14+
import {CellWithPopover} from '../../../../../components/CellWithPopover/CellWithPopover';
15+
import {TenantOverviewTableLayout} from '../TenantOverviewTableLayout';
2216

23-
import './TenantStorage.scss';
24-
25-
const b = cn('tenant-overview-storage');
17+
import '../TenantOverview.scss';
2618

2719
interface TopTablesProps {
2820
path: string;
@@ -72,42 +64,23 @@ export function TopTables({path}: TopTablesProps) {
7264
sortable: false,
7365
render: ({row}) =>
7466
row.Path ? (
75-
<LinkToSchemaObject
76-
className={b('cell-with-popover-wrapper')}
77-
path={String(row.Path)}
78-
location={location}
79-
>
80-
<Popover className={b('cell-with-popover')} content={row.Path}>
67+
<CellWithPopover content={row.Path}>
68+
<LinkToSchemaObject path={String(row.Path)} location={location}>
8169
{row.Path}
82-
</Popover>
83-
</LinkToSchemaObject>
70+
</LinkToSchemaObject>
71+
</CellWithPopover>
8472
) : null,
8573
},
8674
];
8775

88-
const renderContent = () => {
89-
if (error) {
90-
return <ResponseError error={error} />;
91-
}
92-
93-
if (loading && !wasLoaded) {
94-
return <TableSkeleton rows={TENANT_OVERVIEW_TABLES_LIMIT} />;
95-
}
96-
97-
return (
98-
<DataTable
99-
theme="yandex-cloud"
100-
columns={columns}
101-
settings={TENANT_OVERVIEW_TABLES_SETTINGS}
102-
data={data || []}
103-
/>
104-
);
105-
};
106-
10776
return (
108-
<>
109-
<div className={b('title')}>Top tables by size</div>
110-
<div className={b('table')}>{renderContent()}</div>
111-
</>
77+
<TenantOverviewTableLayout
78+
data={data || []}
79+
columns={columns}
80+
title="Top tables by size"
81+
loading={loading}
82+
wasLoaded={wasLoaded}
83+
error={error}
84+
/>
11285
);
11386
}

0 commit comments

Comments
 (0)