From 4caa30534defcc36053efb6b0aadbd16a0b52048 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Tue, 3 Feb 2026 14:27:43 +0000 Subject: [PATCH] Fix: PBS instance selection now filters backup list correctly When selecting a PBS instance from the node summary table, the backup list now correctly filters to show only backups from that specific PBS instance. Previously, the nodeType parameter was ignored and the filter logic only handled PVE nodes, causing PBS selection to have no effect. Related to #1182 --- .../src/components/Backups/UnifiedBackups.tsx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend-modern/src/components/Backups/UnifiedBackups.tsx b/frontend-modern/src/components/Backups/UnifiedBackups.tsx index dacd46ea8..6bb39abe8 100644 --- a/frontend-modern/src/components/Backups/UnifiedBackups.tsx +++ b/frontend-modern/src/components/Backups/UnifiedBackups.tsx @@ -80,6 +80,7 @@ const UnifiedBackups: Component = () => { return hasPBSViaPassthrough() && !hasDirectPBS() && !pbsBannerDismissed(); }); const [selectedNode, setSelectedNode] = createSignal(null); + const [selectedNodeType, setSelectedNodeType] = createSignal<'pve' | 'pbs' | null>(null); const [typeFilter, setTypeFilter] = createSignal<'all' | FilterableGuestType>('all'); const [backupTypeFilter, setBackupTypeFilter] = createSignal<'all' | BackupType>('all'); const [statusFilter, setStatusFilter] = createSignal<'all' | 'verified' | 'unverified'>('all'); @@ -625,9 +626,16 @@ const UnifiedBackups: Component = () => { // Node selection filter using both instance and node name for uniqueness if (nodeFilter) { - const node = state.nodes?.find((n) => n.id === nodeFilter); - if (node) { - data = data.filter((item) => item.instance === node.instance && item.node === node.name); + const nodeType = selectedNodeType(); + if (nodeType === 'pbs') { + // PBS instance selected - filter by instance name + data = data.filter((item) => item.instance === nodeFilter); + } else { + // PVE node selected - filter by instance and node name + const node = state.nodes?.find((n) => n.id === nodeFilter); + if (node) { + data = data.filter((item) => item.instance === node.instance && item.node === node.name); + } } } @@ -918,6 +926,7 @@ const UnifiedBackups: Component = () => { const resetFilters = () => { setSearchTerm(''); setSelectedNode(null); + setSelectedNodeType(null); setIsSearchLocked(false); setTypeFilter('all'); setBackupTypeFilter('all'); @@ -1181,8 +1190,9 @@ const UnifiedBackups: Component = () => { { + onNodeSelect={(nodeId, nodeType) => { setSelectedNode(nodeId); + setSelectedNodeType(nodeType ?? null); }} onNamespaceSelect={(namespaceFilter) => { setSearchTerm(namespaceFilter);