Skip to content

Commit 98de339

Browse files
committed
fix: visual fallback
1 parent 35f2e94 commit 98de339

File tree

1 file changed

+36
-25
lines changed

1 file changed

+36
-25
lines changed

src/components/QueriesActivityBar/QueriesActivityBar.tsx

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import './QueriesActivityBar.scss';
2323

2424
const b = cn('queries-activity-bar');
2525

26+
const FALLBACK_VALUE = 0.000001;
27+
2628
interface QueriesActivityBarProps {
2729
tenantName: string;
2830
}
@@ -44,7 +46,7 @@ export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
4446
const shouldRefresh = areChartsHidden ? 0 : autoRefreshInterval;
4547

4648
// Fetch running queries
47-
const {currentData: runningQueriesData, error: runningQueriesError} =
49+
const {data: runningQueriesData, error: runningQueriesError} =
4850
topQueriesApi.useGetRunningQueriesQuery(
4951
{
5052
database: tenantName,
@@ -54,16 +56,15 @@ export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
5456
);
5557

5658
// Fetch queries per second data for header metrics
57-
const {currentData: queriesPerSecData, error: queriesPerSecError} =
58-
chartApi.useGetChartDataQuery(
59-
{
60-
database: tenantName,
61-
metrics: [{target: 'queries.requests'}],
62-
timeFrame: queriesTimeFrame,
63-
maxDataPoints: 30,
64-
},
65-
{pollingInterval: autoRefreshInterval},
66-
);
59+
const {data: queriesPerSecData, error: queriesPerSecError} = chartApi.useGetChartDataQuery(
60+
{
61+
database: tenantName,
62+
metrics: [{target: 'queries.requests'}],
63+
timeFrame: queriesTimeFrame,
64+
maxDataPoints: 30,
65+
},
66+
{pollingInterval: autoRefreshInterval},
67+
);
6768

6869
// Fetch latency data for header metrics
6970
const {currentData: latencyData, error: latencyError} = chartApi.useGetChartDataQuery(
@@ -92,47 +93,57 @@ export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
9293
// Calculate queries per second from chart data
9394
const calculateQueriesPerSecond = () => {
9495
if (!queriesPerSecData?.metrics?.[0]?.data) {
95-
return {value: '0', trend: undefined};
96+
return {
97+
value: FALLBACK_VALUE.toFixed(0),
98+
trend: {value: FALLBACK_VALUE, direction: 'up' as const},
99+
};
96100
}
97101

98102
const data = queriesPerSecData.metrics[0].data;
99-
const current = (data[data.length - 1] as number) || 0;
100-
const previous = (data[data.length - 2] as number) || 0;
103+
const current = (data[data.length - 1] as number) || FALLBACK_VALUE;
104+
const previous = (data[data.length - 2] as number) || FALLBACK_VALUE;
101105

102-
let trend: {value: number; direction: 'up' | 'down'} | undefined;
106+
let trend: {value: number; direction: 'up' | 'down'};
103107
if (previous > 0) {
104108
const change = current - previous;
105109
trend = {
106-
value: Math.abs(change),
110+
value: Math.abs(change) || FALLBACK_VALUE,
107111
direction: change >= 0 ? 'up' : 'down',
108112
};
113+
} else {
114+
trend = {value: FALLBACK_VALUE, direction: 'up'};
109115
}
110116

111117
// Convert to per second rate
112-
const perSecond = Math.round((current / 60) * 100) / 100;
118+
const perSecond = Math.round((current / 60) * 100) / 100 || FALLBACK_VALUE;
113119
return {value: perSecond.toFixed(0), trend};
114120
};
115121

116122
// Calculate latency
117123
const calculateLatency = () => {
118124
if (!latencyData?.metrics?.[0]?.data) {
119-
return {value: '0', trend: undefined};
125+
return {
126+
value: FALLBACK_VALUE.toFixed(1),
127+
trend: {value: FALLBACK_VALUE, direction: 'up' as const},
128+
};
120129
}
121130

122131
const data = latencyData.metrics[0].data;
123-
const current = (data[data.length - 1] as number) || 0;
124-
const previous = (data[data.length - 2] as number) || 0;
132+
const current = (data[data.length - 1] as number) || FALLBACK_VALUE;
133+
const previous = (data[data.length - 2] as number) || FALLBACK_VALUE;
125134

126-
let trend: {value: number; direction: 'up' | 'down'} | undefined;
135+
let trend: {value: number; direction: 'up' | 'down'};
127136
if (previous > 0) {
128137
const change = current - previous;
129138
trend = {
130-
value: Math.abs(change) / 1000, // Convert to ms
139+
value: Math.abs(change) / 1000 || FALLBACK_VALUE, // Convert to ms
131140
direction: change >= 0 ? 'up' : 'down',
132141
};
142+
} else {
143+
trend = {value: FALLBACK_VALUE, direction: 'up'};
133144
}
134145

135-
const valueMs = current / 1000; // Convert to ms
146+
const valueMs = current / 1000 || FALLBACK_VALUE; // Convert to ms
136147
return {value: valueMs.toFixed(1), trend};
137148
};
138149

@@ -228,7 +239,7 @@ export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
228239
theme="clear"
229240
size="s"
230241
icon={<Icon data={Rocket} size={14} />}
231-
value={formatTrendValue(qps.trend?.value || 0)}
242+
value={formatTrendValue(qps.trend.value)}
232243
>
233244
{i18n('per-sec', {count: qps.value})}
234245
</Label>
@@ -237,7 +248,7 @@ export function QueriesActivityBar({tenantName}: QueriesActivityBarProps) {
237248
theme="clear"
238249
size="s"
239250
icon={<Icon data={Clock} size={14} />}
240-
value={formatTrendValue(latency.trend?.value || 0)}
251+
value={formatTrendValue(latency.trend.value)}
241252
>
242253
{i18n('ms', {time: latency.value})}
243254
</Label>

0 commit comments

Comments
 (0)