Skip to content

Commit 5947cad

Browse files
committed
fix: some review fixes
1 parent ca9986a commit 5947cad

File tree

5 files changed

+43
-17
lines changed

5 files changed

+43
-17
lines changed

src/containers/Tenant/Diagnostics/Diagnostics.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import {Partitions} from './Partitions/Partitions';
3838
import {TopQueries} from './TopQueries';
3939
import {TopShards} from './TopShards';
4040
import {TopicData} from './TopicData/TopicData';
41+
import i18n from './i18n';
4142

4243
import './Diagnostics.scss';
4344

@@ -177,7 +178,7 @@ function Diagnostics(props: DiagnosticsProps) {
177178
});
178179
}
179180
default: {
180-
return <div>No data...</div>;
181+
return <div>{i18n('no-data')}</div>;
181182
}
182183
}
183184
};

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

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import {useMemo} from 'react';
2+
13
import {Flex} from '@gravity-ui/uikit';
24
import {Link, useLocation} from 'react-router-dom';
35

@@ -10,7 +12,7 @@ import type {
1012
TenantStorageStats,
1113
} from '../../../../../store/reducers/tenants/utils';
1214
import {cn} from '../../../../../utils/cn';
13-
import {SHOW_NETWORK_UTILIZATION} from '../../../../../utils/constants';
15+
import {NON_BREAKING_SPACE, SHOW_NETWORK_UTILIZATION} from '../../../../../utils/constants';
1416
import {useSetting, useTypedSelector} from '../../../../../utils/hooks';
1517
import {calculateMetricAggregates} from '../../../../../utils/metrics';
1618
import {
@@ -26,6 +28,10 @@ import './MetricsTabs.scss';
2628

2729
const b = cn('tenant-metrics-tabs');
2830

31+
// Placeholder values used for serverless layout filler cards
32+
const PLACEHOLDER_VALUE = 0;
33+
const PLACEHOLDER_LIMIT = 1;
34+
2935
interface MetricsTabsProps {
3036
poolsCpuStats?: TenantPoolsStats[];
3137
memoryStats?: TenantMetricStats[];
@@ -71,21 +77,29 @@ export function MetricsTabs({
7177
};
7278

7379
// Use only pools that directly indicate resources available to perform user queries
74-
const cpuPools = (poolsCpuStats || []).filter(
75-
(pool) => !(pool.name === 'Batch' || pool.name === 'IO'),
80+
const cpuPools = useMemo(
81+
() =>
82+
(poolsCpuStats || []).filter((pool) => !(pool.name === 'Batch' || pool.name === 'IO')),
83+
[poolsCpuStats],
7684
);
77-
const cpuMetrics = calculateMetricAggregates(cpuPools);
85+
const cpuMetrics = useMemo(() => calculateMetricAggregates(cpuPools), [cpuPools]);
7886

7987
// Calculate storage metrics using utility
80-
const storageStats = tabletStorageStats || blobStorageStats || [];
81-
const storageMetrics = calculateMetricAggregates(storageStats);
88+
const storageStats = useMemo(
89+
() => tabletStorageStats || blobStorageStats || [],
90+
[tabletStorageStats, blobStorageStats],
91+
);
92+
const storageMetrics = useMemo(() => calculateMetricAggregates(storageStats), [storageStats]);
8293

8394
// Calculate memory metrics using utility
84-
const memoryMetrics = calculateMetricAggregates(memoryStats);
95+
const memoryMetrics = useMemo(() => calculateMetricAggregates(memoryStats), [memoryStats]);
8596

8697
// Calculate network metrics using utility
8798
const [showNetworkUtilization] = useSetting<boolean>(SHOW_NETWORK_UTILIZATION);
88-
const networkMetrics = networkStats ? calculateMetricAggregates(networkStats) : null;
99+
const networkMetrics = useMemo(
100+
() => (networkStats ? calculateMetricAggregates(networkStats) : null),
101+
[networkStats],
102+
);
89103

90104
const active = activeTab ?? metricsTab;
91105

@@ -181,26 +195,26 @@ export function MetricsTabs({
181195
<div className={b('link-container', {placeholder: true})}>
182196
<div className={b('link')}>
183197
<TabCard
184-
text={'\u00A0'}
185-
value={0}
186-
limit={1}
198+
text={NON_BREAKING_SPACE}
199+
value={PLACEHOLDER_VALUE}
200+
limit={PLACEHOLDER_LIMIT}
187201
legendFormatter={formatCoresLegend}
188202
active={false}
189203
variant={isServerless ? 'serverless' : 'default'}
190-
subtitle={'\u00A0'}
204+
subtitle={NON_BREAKING_SPACE}
191205
/>
192206
</div>
193207
</div>
194208
<div className={b('link-container', {placeholder: true})}>
195209
<div className={b('link')}>
196210
<TabCard
197-
text={'\u00A0'}
198-
value={0}
199-
limit={1}
211+
text={NON_BREAKING_SPACE}
212+
value={PLACEHOLDER_VALUE}
213+
limit={PLACEHOLDER_LIMIT}
200214
legendFormatter={formatCoresLegend}
201215
active={false}
202216
variant={isServerless ? 'serverless' : 'default'}
203-
subtitle={'\u00A0'}
217+
subtitle={NON_BREAKING_SPACE}
204218
/>
205219
</div>
206220
</div>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"no-data": "No data"
3+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import {registerKeysets} from '../../../../utils/i18n';
2+
3+
import en from './en.json';
4+
5+
const COMPONENT = 'ydb-diagnostics';
6+
7+
export default registerKeysets(COMPONENT, {en});

src/utils/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ export const SECTION_IDS = {
100100
export const TENANT_OVERVIEW_TABLES_LIMIT = 3;
101101

102102
export const EMPTY_DATA_PLACEHOLDER = '—';
103+
export const NON_BREAKING_SPACE = '\u00A0';
103104

104105
export const QUERY_TECHNICAL_MARK = '/*UI-QUERY-EXCLUDE*/';
105106

0 commit comments

Comments
 (0)