@@ -23,6 +23,8 @@ import './QueriesActivityBar.scss';
2323
2424const b = cn ( 'queries-activity-bar' ) ;
2525
26+ const FALLBACK_VALUE = 0.000001 ;
27+
2628interface 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