diff --git a/AppImage/components/network-metrics.tsx b/AppImage/components/network-metrics.tsx index 93bcf80..688914e 100644 --- a/AppImage/components/network-metrics.tsx +++ b/AppImage/components/network-metrics.tsx @@ -640,20 +640,22 @@ export function NetworkMetrics() { {selectedInterface?.name} - Interface Details -
- -
+ {selectedInterface?.status.toLowerCase() === "up" && selectedInterface?.vm_type !== "vm" && ( +
+ +
+ )} {selectedInterface && ( @@ -789,99 +791,122 @@ export function NetworkMetrics() { )} -
-

- Network Traffic Statistics ( - {modalTimeframe === "hour" - ? "Last Hour" - : modalTimeframe === "day" - ? "Last 24 Hours" - : modalTimeframe === "week" - ? "Last 7 Days" - : modalTimeframe === "month" - ? "Last 30 Days" - : "Last Year"} - ) -

-
- {/* Traffic Data - Top Row */} + {/* Network Traffic Statistics - Only show if interface is UP and NOT a VM interface */} + {selectedInterface.status.toLowerCase() === "up" && selectedInterface.vm_type !== "vm" ? ( +
+

+ Network Traffic Statistics ( + {modalTimeframe === "hour" + ? "Last Hour" + : modalTimeframe === "day" + ? "Last 24 Hours" + : modalTimeframe === "week" + ? "Last 7 Days" + : modalTimeframe === "month" + ? "Last 30 Days" + : "Last Year"} + ) +

+
+ {/* Traffic Data - Top Row */} +
+
+
Bytes Received
+
+ {formatStorage(interfaceTotals.received * 1024 * 1024 * 1024)} +
+
+
+
Bytes Sent
+
+ {formatStorage(interfaceTotals.sent * 1024 * 1024 * 1024)} +
+
+
+ + {/* Network Traffic Chart - Full Width Below */} +
+ +
+
+
+ ) : selectedInterface.status.toLowerCase() === "up" && selectedInterface.vm_type === "vm" ? ( +
+ +

Historical Metrics Not Available

+

+ Proxmox does not store historical network metrics for individual VM interfaces. Only cumulative + statistics since last boot are available below. +

+
+ ) : ( +
+ +

Interface Inactive

+

+ This interface is currently down. Network traffic statistics are not available. +

+
+ )} + + {/* Cumulative Statistics - Only show if interface is UP */} + {selectedInterface.status.toLowerCase() === "up" && ( +
+

+ Cumulative Statistics (Since Last Boot) +

-
Bytes Received
-
- {formatStorage(interfaceTotals.received * 1024 * 1024 * 1024)} -
+
Packets Received
+
{selectedInterface.packets_recv?.toLocaleString() || "N/A"}
-
Bytes Sent
-
- {formatStorage(interfaceTotals.sent * 1024 * 1024 * 1024)} -
+
Packets Sent
+
{selectedInterface.packets_sent?.toLocaleString() || "N/A"}
-
- - {/* Network Traffic Chart - Full Width Below */} -
- +
+
Errors In
+
{selectedInterface.errors_in || 0}
+
+
+
Errors Out
+
{selectedInterface.errors_out || 0}
+
+
+
Drops In
+
{selectedInterface.drops_in || 0}
+
+
+
Drops Out
+
{selectedInterface.drops_out || 0}
+
+ {selectedInterface.packet_loss_in !== undefined && ( +
+
Packet Loss In
+
1 ? "text-red-500" : "text-green-500"}`} + > + {selectedInterface.packet_loss_in}% +
+
+ )} + {selectedInterface.packet_loss_out !== undefined && ( +
+
Packet Loss Out
+
1 ? "text-red-500" : "text-green-500"}`} + > + {selectedInterface.packet_loss_out}% +
+
+ )}
-
- -
-

- Cumulative Statistics (Since Last Boot) -

-
-
-
Packets Received
-
{selectedInterface.packets_recv?.toLocaleString() || "N/A"}
-
-
-
Packets Sent
-
{selectedInterface.packets_sent?.toLocaleString() || "N/A"}
-
-
-
Errors In
-
{selectedInterface.errors_in || 0}
-
-
-
Errors Out
-
{selectedInterface.errors_out || 0}
-
-
-
Drops In
-
{selectedInterface.drops_in || 0}
-
-
-
Drops Out
-
{selectedInterface.drops_out || 0}
-
- {selectedInterface.packet_loss_in !== undefined && ( -
-
Packet Loss In
-
1 ? "text-red-500" : "text-green-500"}`} - > - {selectedInterface.packet_loss_in}% -
-
- )} - {selectedInterface.packet_loss_out !== undefined && ( -
-
Packet Loss Out
-
1 ? "text-red-500" : "text-green-500"}`} - > - {selectedInterface.packet_loss_out}% -
-
- )} -
-
+ )} {/* Bond Information */} {selectedInterface.type === "bond" && selectedInterface.bond_slaves && ( diff --git a/AppImage/components/network-traffic-chart.tsx b/AppImage/components/network-traffic-chart.tsx index 44901c2..a978e35 100644 --- a/AppImage/components/network-traffic-chart.tsx +++ b/AppImage/components/network-traffic-chart.tsx @@ -183,7 +183,7 @@ export function NetworkTrafficChart({ timeframe, interfaceName, onTotalsCalculat if (loading) { return ( -
+
) @@ -191,7 +191,7 @@ export function NetworkTrafficChart({ timeframe, interfaceName, onTotalsCalculat if (error) { return ( -
+

Network metrics not available yet

{error}

@@ -200,15 +200,15 @@ export function NetworkTrafficChart({ timeframe, interfaceName, onTotalsCalculat if (data.length === 0) { return ( -
+

No network metrics available

) } return ( - - + +