diff --git a/frontend/app/datasets/page.tsx b/frontend/app/datasets/page.tsx index a9d0439..ed351fd 100644 --- a/frontend/app/datasets/page.tsx +++ b/frontend/app/datasets/page.tsx @@ -1,7 +1,7 @@ "use client" import { useEffect, useState } from "react" -import { api, Dataset, SambaShare, NfsShare } from "@/lib/api" +import { api, Dataset, SambaShare, NfsShare, Pool } from "@/lib/api" import { Header } from "@/components/Header" import { Button } from "@/components/ui/button" import { Dialog } from "@/components/ui/dialog" @@ -13,6 +13,7 @@ import { Badge } from "@/components/ui/badge" export default function DatasetsPage() { const [tab, setTab] = useState<"datasets" | "shares">("datasets") const [datasets, setDatasets] = useState([]) + const [pools, setPools] = useState([]) const [sambaShares, setSambaShares] = useState([]) const [nfsShares, setNfsShares] = useState([]) const [loading, setLoading] = useState(true) @@ -50,14 +51,16 @@ export default function DatasetsPage() { const loadData = async () => { setLoading(true) try { - const [ds, samba, nfs] = await Promise.all([ + const [ds, samba, nfs, poolData] = await Promise.all([ api.getDatasets(), api.getSambaShares(), api.getNfsShares(), + api.getPools().catch(() => ({ pools: [] })), ]) setDatasets(ds) setSambaShares(samba) setNfsShares(nfs) + setPools((poolData as { pools: Pool[] }).pools || []) } catch (err) { console.error("Failed to load data:", err) } finally { @@ -339,6 +342,7 @@ export default function DatasetsPage() { {getTopLevelDatasets().map((pool) => { const stats = getPoolStats(pool.name) + const poolInfo = pools.find((p) => p.name === pool.name) const currentPoolTab = poolTabs.get(pool.name) || "filesystems" const childDatasets = getChildDatasets(pool.name) @@ -363,19 +367,19 @@ export default function DatasetsPage() {

Size

-

{formatBytes(stats.totalSize)}

+

{formatBytes(poolInfo?.size || 0)}

Allocated

-

{formatBytes(stats.totalUsed)}

+

{formatBytes(poolInfo?.alloc || 0)}

Free

-

{formatBytes(stats.totalAvail)}

+

{formatBytes(poolInfo?.free || 0)}

Fragmentation

-

0%

+

{poolInfo?.fragmentation || "0%"}

Usage

@@ -384,21 +388,20 @@ export default function DatasetsPage() {
{/* Usage Bar */} -
-
-
-
-
-

- {stats.usagePercent.toFixed(2)}% Allocated • {(100 - stats.usagePercent).toFixed(2)}% Free -

-
+ {(() => { + const pct = poolInfo?.size ? (poolInfo.alloc / poolInfo.size) * 100 : 0 + return ( +
+
+
+
+
+

+ {pct.toFixed(2)}% Allocated • {(100 - pct).toFixed(2)}% Free +

+
+ ) + })()} {/* Tabs */}