diff --git a/infrastructure/control-panel/package.json b/infrastructure/control-panel/package.json index 6f2f7a16..69874414 100644 --- a/infrastructure/control-panel/package.json +++ b/infrastructure/control-panel/package.json @@ -50,7 +50,7 @@ "flowbite": "^3.1.2", "flowbite-svelte": "^1.10.7", "flowbite-svelte-icons": "^2.2.1", - "lowdb": "^9.1.0", + "lowdb": "^7.0.1", "lucide-svelte": "^0.539.0", "tailwind-merge": "^3.0.2" } diff --git a/infrastructure/control-panel/src/lib/components/EVaultList.svelte b/infrastructure/control-panel/src/lib/components/EVaultList.svelte index 46dee510..0fdcca5c 100644 --- a/infrastructure/control-panel/src/lib/components/EVaultList.svelte +++ b/infrastructure/control-panel/src/lib/components/EVaultList.svelte @@ -4,140 +4,219 @@ import type { EVault } from '../../routes/api/evaults/+server'; let evaults: EVault[] = []; - let loading = false; - let cacheStatus: any = null; - let lastRefresh = ''; + let loading = true; + let error: string | null = null; + let cacheStatus: { lastUpdated: number; isStale: boolean; itemCount: number }; - // Load eVaults on component mount onMount(async () => { - await loadEVaults(); - // Get cache status for debugging - cacheStatus = EVaultService.getCacheStatus(); + try { + await loadEVaults(); + cacheStatus = EVaultService.getCacheStatus(); + } catch (err) { + error = 'Failed to load eVaults'; + console.error(err); + } finally { + loading = false; + } }); async function loadEVaults() { - loading = true; try { - // This will return cached data immediately and refresh in background evaults = await EVaultService.getEVaults(); - lastRefresh = new Date().toLocaleTimeString(); - } catch (error) { - console.error('Failed to load eVaults:', error); - } finally { - loading = false; + cacheStatus = EVaultService.getCacheStatus(); + } catch (err) { + console.error('Error loading eVaults:', err); + throw err; } } async function forceRefresh() { - loading = true; try { - // Force refresh and get fresh data + loading = true; evaults = await EVaultService.forceRefresh(); - lastRefresh = new Date().toLocaleTimeString(); - // Update cache status cacheStatus = EVaultService.getCacheStatus(); - } catch (error) { - console.error('Failed to force refresh:', error); + } catch (err) { + error = 'Failed to refresh eVaults'; + console.error(err); } finally { loading = false; } } async function clearCache() { - await EVaultService.clearCache(); - cacheStatus = EVaultService.getCacheStatus(); - // Reload data - await loadEVaults(); + try { + await EVaultService.clearCache(); + evaults = []; + cacheStatus = EVaultService.getCacheStatus(); + } catch (err) { + console.error('Error clearing cache:', err); + } + } + + function formatTimestamp(timestamp: number): string { + if (timestamp === 0) return 'Never'; + return new Date(timestamp).toLocaleString(); }
Loading eVaults...
No eVaults found
++ Try refreshing or check your Kubernetes connection +
+- {evault.status} - - - - {/each} - {/if} - + Name + | ++ Namespace + | ++ Status + | ++ Age + | ++ Service URL + | +
---|---|---|---|---|
+ {evault.name} + | ++ {evault.namespace} + | ++ + {evault.status} + + | ++ {evault.age || 'Unknown'} + | ++ {#if evault.serviceUrl} + + {evault.serviceUrl} + + {:else} + No external access + {/if} + | +