diff --git a/src/containers/Nodes/NodesControls/NodesControls.tsx b/src/containers/Nodes/NodesControls/NodesControls.tsx index 55304a307e..e5533b85e2 100644 --- a/src/containers/Nodes/NodesControls/NodesControls.tsx +++ b/src/containers/Nodes/NodesControls/NodesControls.tsx @@ -57,7 +57,7 @@ export function NodesControls({ handleUptimeFilterChange, handlePeerRoleFilterChange, handleGroupByParamChange, - } = useNodesPageQueryParams(groupByParams); + } = useNodesPageQueryParams(groupByParams, withPeerRoleFilter); const {problemFilter, handleProblemFilterChange} = useProblemFilter(); const isViewerUser = useIsViewerUser(); diff --git a/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx b/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx index c65f263bcd..bf027248fa 100644 --- a/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx +++ b/src/containers/Nodes/PaginatedNodes/GroupedNodesComponent.tsx @@ -103,7 +103,10 @@ export function GroupedNodesComponent({ selectedColumnsKey, groupByParams, }: GroupedNodesComponentProps) { - const {searchValue, peerRoleFilter, groupByParam} = useNodesPageQueryParams(groupByParams); + const {searchValue, peerRoleFilter, groupByParam} = useNodesPageQueryParams( + groupByParams, + withPeerRoleFilter, + ); const [autoRefreshInterval] = useAutoRefreshInterval(); const {columnsToShow, columnsToSelect, setColumns} = useSelectedColumns( diff --git a/src/containers/Nodes/PaginatedNodes/NodesComponent.tsx b/src/containers/Nodes/PaginatedNodes/NodesComponent.tsx index 7f05e879c2..820ff9b5b3 100644 --- a/src/containers/Nodes/PaginatedNodes/NodesComponent.tsx +++ b/src/containers/Nodes/PaginatedNodes/NodesComponent.tsx @@ -37,7 +37,10 @@ export function NodesComponent({ selectedColumnsKey, groupByParams, }: NodesComponentProps) { - const {searchValue, uptimeFilter, peerRoleFilter} = useNodesPageQueryParams(groupByParams); + const {searchValue, uptimeFilter, peerRoleFilter} = useNodesPageQueryParams( + groupByParams, + withPeerRoleFilter, + ); const {problemFilter} = useProblemFilter(); const viewerNodesHandlerHasGrouping = useViewerNodesHandlerHasGrouping(); diff --git a/src/containers/Nodes/PaginatedNodes/PaginatedNodes.tsx b/src/containers/Nodes/PaginatedNodes/PaginatedNodes.tsx index 2e50366497..723f81742a 100644 --- a/src/containers/Nodes/PaginatedNodes/PaginatedNodes.tsx +++ b/src/containers/Nodes/PaginatedNodes/PaginatedNodes.tsx @@ -33,6 +33,7 @@ export interface PaginatedNodesProps { export function PaginatedNodes(props: PaginatedNodesProps) { const {uptimeFilter, groupByParam, handleUptimeFilterChange} = useNodesPageQueryParams( props.groupByParams, + props.withPeerRoleFilter, ); const {problemFilter, handleProblemFilterChange} = useProblemFilter(); diff --git a/src/containers/Nodes/PeerRoleFilter/utils.tsx b/src/containers/Nodes/PeerRoleFilter/utils.tsx index cb31994cfc..dfd48c5f86 100644 --- a/src/containers/Nodes/PeerRoleFilter/utils.tsx +++ b/src/containers/Nodes/PeerRoleFilter/utils.tsx @@ -18,6 +18,9 @@ export const NODES_PEER_ROLES_TITLES: Record = { }, }; -export function parseNodesPeerRoleFilter(paramToParse: unknown): NodesPeerRole | undefined { - return NODES_PEER_ROLES.find((peerRoleParam) => peerRoleParam === paramToParse); +export function parseNodesPeerRoleFilter( + paramToParse: unknown, + defaultValue?: NodesPeerRole, +): NodesPeerRole | undefined { + return NODES_PEER_ROLES.find((peerRoleParam) => peerRoleParam === paramToParse) ?? defaultValue; } diff --git a/src/containers/Nodes/useNodesPageQueryParams.ts b/src/containers/Nodes/useNodesPageQueryParams.ts index 158810b4ff..af2a4ade29 100644 --- a/src/containers/Nodes/useNodesPageQueryParams.ts +++ b/src/containers/Nodes/useNodesPageQueryParams.ts @@ -9,7 +9,10 @@ import {nodesUptimeFilterValuesSchema} from '../../utils/nodes'; import {parseNodesPeerRoleFilter} from './PeerRoleFilter/utils'; import {parseNodesGroupByParam} from './columns/constants'; -export function useNodesPageQueryParams(groupByParams: NodesGroupByField[] | undefined) { +export function useNodesPageQueryParams( + groupByParams: NodesGroupByField[] | undefined, + withPeerRoleFilter: boolean | undefined, +) { const [queryParams, setQueryParams] = useQueryParams({ uptimeFilter: StringParam, peerRole: StringParam, @@ -21,9 +24,15 @@ export function useNodesPageQueryParams(groupByParams: NodesGroupByField[] | und const uptimeFilter = nodesUptimeFilterValuesSchema.parse(queryParams.uptimeFilter); const searchValue = queryParams.search ?? ''; - const peerRoleFilter = isViewerUser - ? parseNodesPeerRoleFilter(queryParams.peerRole) - : 'database'; + + let peerRoleFilter: NodesPeerRole | undefined; + + // Do not add peerRoleFilter on Cluster page Network tab + if (withPeerRoleFilter) { + peerRoleFilter = isViewerUser + ? parseNodesPeerRoleFilter(queryParams.peerRole, 'database') + : 'database'; + } const systemStateGroupingAvailable = useViewerNodesHandlerHasGroupingBySystemState(); const groupByParam = parseNodesGroupByParam(