From d3fe3b117deda8ba3d53f88ceda49ecf05914cd0 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Fri, 30 Jan 2026 19:00:59 +0000 Subject: [PATCH] feat(frontend): remove storage configuration panel --- .../src/components/Storage/Storage.tsx | 6 +- .../components/Storage/StorageConfigPanel.tsx | 182 ------------------ 2 files changed, 2 insertions(+), 186 deletions(-) delete mode 100644 frontend-modern/src/components/Storage/StorageConfigPanel.tsx diff --git a/frontend-modern/src/components/Storage/Storage.tsx b/frontend-modern/src/components/Storage/Storage.tsx index 8d30fed4f..67f16982a 100644 --- a/frontend-modern/src/components/Storage/Storage.tsx +++ b/frontend-modern/src/components/Storage/Storage.tsx @@ -8,7 +8,7 @@ import { StatusDot } from '@/components/shared/StatusDot'; import { ComponentErrorBoundary } from '@/components/ErrorBoundary'; import { UnifiedNodeSelector } from '@/components/shared/UnifiedNodeSelector'; import { StorageFilter } from './StorageFilter'; -import { StorageConfigPanel } from './StorageConfigPanel'; + import { DiskList } from './DiskList'; import { ZFSHealthMap } from './ZFSHealthMap'; import { EnhancedStorageBar } from './EnhancedStorageBar'; @@ -625,9 +625,7 @@ const Storage: Component = () => { searchInputRef={(el) => (searchInputRef = el)} columnVisibility={columnVisibility} /> - - - + {/* Show simple search for disks */} diff --git a/frontend-modern/src/components/Storage/StorageConfigPanel.tsx b/frontend-modern/src/components/Storage/StorageConfigPanel.tsx deleted file mode 100644 index fa6787d5f..000000000 --- a/frontend-modern/src/components/Storage/StorageConfigPanel.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import { Component, Show, For, createEffect, createMemo, createSignal } from 'solid-js'; -import { usePersistentSignal } from '@/hooks/usePersistentSignal'; -import { Card } from '@/components/shared/Card'; -import { MonitoringAPI } from '@/api/monitoring'; -import type { StorageConfigEntry } from '@/types/api'; - -interface StorageConfigPanelProps { - nodeFilter?: string | null; - searchTerm?: string; -} - -export const StorageConfigPanel: Component = (props) => { - const [items, setItems] = createSignal([]); - const [loading, setLoading] = createSignal(false); - const [error, setError] = createSignal(null); - const [onlyNodeRelevant, setOnlyNodeRelevant] = usePersistentSignal('storageConfigOnlyNode', false); - - const fetchConfig = async () => { - setLoading(true); - setError(null); - try { - const storages = await MonitoringAPI.getStorageConfig({ - node: props.nodeFilter ?? undefined, - }); - setItems(storages); - } catch (err) { - setError((err as Error).message || 'Failed to load storage config'); - } finally { - setLoading(false); - } - }; - - createEffect(() => { - fetchConfig(); - }); - - const filtered = createMemo(() => { - const term = (props.searchTerm || '').trim().toLowerCase(); - return items().filter((item) => { - if (onlyNodeRelevant() && props.nodeFilter) { - if (!item.nodes || item.nodes.length === 0) { - return false; - } - const match = item.nodes.some((node) => node.toLowerCase() === props.nodeFilter!.toLowerCase()); - if (!match) { - return false; - } - } - if (!term) { - return true; - } - const haystack = [ - item.id, - item.name, - item.instance, - item.type, - item.content, - item.path, - (item.nodes || []).join(','), - ] - .filter(Boolean) - .join(' ') - .toLowerCase(); - return haystack.includes(term); - }); - }); - - const formatNodes = (nodes?: string[]) => { - if (!nodes || nodes.length === 0) { - return 'all nodes'; - } - return nodes.join(', '); - }; - - return ( - -
-
-

Storage Configuration

-

- Cluster storage.cfg entries (enabled/active, nodes, path) -

-
-
- - - - - - - Loading - - -
-
- - -
{error()}
-
- - -
No storage configuration entries found.
-
- - 0}> -
- - - - - - - - - - - - - - {(item) => ( - - - - - - - - )} - - -
StorageInstanceNodesPathFlags
-
-
{item.name}
- - - global - - -
-
{item.type || 'unknown'} / {item.content || 'any'}
-
- {item.instance || '-'} - - {formatNodes(item.nodes)} - - {item.path || '-'} - -
- - {item.enabled ? 'enabled' : 'disabled'} - - - {item.active ? 'active' : 'inactive'} - - - - shared - - -
-
-
-
-
- ); -};