diff --git a/frontend/src/container/InfraMonitoringK8s/Namespaces/K8sNamespacesList.tsx b/frontend/src/container/InfraMonitoringK8s/Namespaces/K8sNamespacesList.tsx
index e1c1b6ecbac9..6bb3476f6a59 100644
--- a/frontend/src/container/InfraMonitoringK8s/Namespaces/K8sNamespacesList.tsx
+++ b/frontend/src/container/InfraMonitoringK8s/Namespaces/K8sNamespacesList.tsx
@@ -190,6 +190,32 @@ function K8sNamespacesList({
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [minTime, maxTime, orderBy, selectedRowData, groupBy]);
+ const groupedByRowDataQueryKey = useMemo(() => {
+ if (selectedNamespaceUID) {
+ return [
+ 'namespaceList',
+ JSON.stringify(queryFilters),
+ JSON.stringify(orderBy),
+ JSON.stringify(selectedRowData),
+ ];
+ }
+ return [
+ 'namespaceList',
+ JSON.stringify(queryFilters),
+ JSON.stringify(orderBy),
+ JSON.stringify(selectedRowData),
+ String(minTime),
+ String(maxTime),
+ ];
+ }, [
+ queryFilters,
+ orderBy,
+ selectedNamespaceUID,
+ minTime,
+ maxTime,
+ selectedRowData,
+ ]);
+
const {
data: groupedByRowData,
isFetching: isFetchingGroupedByRowData,
@@ -199,7 +225,7 @@ function K8sNamespacesList({
} = useGetK8sNamespacesList(
fetchGroupedByRowDataQuery as K8sNamespacesListPayload,
{
- queryKey: ['namespaceList', fetchGroupedByRowDataQuery],
+ queryKey: groupedByRowDataQueryKey,
enabled: !!fetchGroupedByRowDataQuery && !!selectedRowData,
},
undefined,
@@ -250,11 +276,44 @@ function K8sNamespacesList({
[groupedByRowData, groupBy],
);
+ const queryKey = useMemo(() => {
+ if (selectedNamespaceUID) {
+ return [
+ 'namespaceList',
+ String(pageSize),
+ String(currentPage),
+ JSON.stringify(queryFilters),
+ JSON.stringify(orderBy),
+ JSON.stringify(groupBy),
+ ];
+ }
+ return [
+ 'namespaceList',
+ String(pageSize),
+ String(currentPage),
+ JSON.stringify(queryFilters),
+ JSON.stringify(orderBy),
+ JSON.stringify(groupBy),
+ String(minTime),
+ String(maxTime),
+ ];
+ }, [
+ selectedNamespaceUID,
+ pageSize,
+ currentPage,
+ queryFilters,
+ orderBy,
+ groupBy,
+ minTime,
+ maxTime,
+ ]);
+
const { data, isFetching, isLoading, isError } = useGetK8sNamespacesList(
query as K8sNamespacesListPayload,
{
- queryKey: ['namespaceList', query],
+ queryKey,
enabled: !!query,
+ keepPreviousData: true,
},
undefined,
dotMetricsEnabled,
@@ -592,6 +651,9 @@ function K8sNamespacesList({
});
};
+ const showTableLoadingState =
+ (isFetching || isLoading) && formattedNamespacesData.length === 0;
+
return (
{isError &&
{data?.error || 'Something went wrong'}}
} />,
}}
locale={{
- emptyText:
- isFetching || isLoading ? null : (
-
-
-

+ emptyText: showTableLoadingState ? null : (
+
+
+

-
- This query had no results. Edit your query and try again!
-
-
+
+ This query had no results. Edit your query and try again!
+
- ),
+
+ ),
}}
tableLayout="fixed"
onChange={handleTableChange}
diff --git a/frontend/src/container/InfraMonitoringK8s/Namespaces/NamespaceDetails/NamespaceDetails.tsx b/frontend/src/container/InfraMonitoringK8s/Namespaces/NamespaceDetails/NamespaceDetails.tsx
index f64057e4ce41..802821b27422 100644
--- a/frontend/src/container/InfraMonitoringK8s/Namespaces/NamespaceDetails/NamespaceDetails.tsx
+++ b/frontend/src/container/InfraMonitoringK8s/Namespaces/NamespaceDetails/NamespaceDetails.tsx
@@ -35,7 +35,7 @@ import {
ScrollText,
X,
} from 'lucide-react';
-import { useCallback, useEffect, useMemo, useState } from 'react';
+import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useSelector } from 'react-redux';
import { useSearchParams } from 'react-router-dom-v5-compat';
import { AppState } from 'store/reducers';
@@ -85,8 +85,12 @@ function NamespaceDetails({
endTime: endMs,
}));
+ const lastSelectedInterval = useRef