mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2025-11-18 11:36:17 +00:00
Update AppImage
This commit is contained in:
@@ -473,27 +473,27 @@ export function ProxmoxDashboard() {
|
|||||||
<div className="container mx-auto px-4 md:px-6 py-4 md:py-6">
|
<div className="container mx-auto px-4 md:px-6 py-4 md:py-6">
|
||||||
<Tabs value={activeTab} onValueChange={setActiveTab} className="space-y-4 md:space-y-6">
|
<Tabs value={activeTab} onValueChange={setActiveTab} className="space-y-4 md:space-y-6">
|
||||||
<TabsContent value="overview" className="space-y-4 md:space-y-6 mt-0">
|
<TabsContent value="overview" className="space-y-4 md:space-y-6 mt-0">
|
||||||
{activeTab === "overview" && <SystemOverview key={`overview-${componentKey}`} />}
|
<SystemOverview key={`overview-${componentKey}`} />
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
|
|
||||||
<TabsContent value="storage" className="space-y-4 md:space-y-6 mt-0">
|
<TabsContent value="storage" className="space-y-4 md:space-y-6 mt-0">
|
||||||
{activeTab === "storage" && <StorageOverview key={`storage-${componentKey}`} />}
|
<StorageOverview key={`storage-${componentKey}`} />
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
|
|
||||||
<TabsContent value="network" className="space-y-4 md:space-y-6 mt-0">
|
<TabsContent value="network" className="space-y-4 md:space-y-6 mt-0">
|
||||||
{activeTab === "network" && <NetworkMetrics key={`network-${componentKey}`} />}
|
<NetworkMetrics key={`network-${componentKey}`} />
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
|
|
||||||
<TabsContent value="vms" className="space-y-4 md:space-y-6 mt-0">
|
<TabsContent value="vms" className="space-y-4 md:space-y-6 mt-0">
|
||||||
{activeTab === "vms" && <VirtualMachines key={`vms-${componentKey}`} />}
|
<VirtualMachines key={`vms-${componentKey}`} />
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
|
|
||||||
<TabsContent value="hardware" className="space-y-4 md:space-y-6 mt-0">
|
<TabsContent value="hardware" className="space-y-4 md:space-y-6 mt-0">
|
||||||
{activeTab === "hardware" && <Hardware key={`hardware-${componentKey}`} />}
|
<Hardware key={`hardware-${componentKey}`} />
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
|
|
||||||
<TabsContent value="logs" className="space-y-4 md:space-y-6 mt-0">
|
<TabsContent value="logs" className="space-y-4 md:space-y-6 mt-0">
|
||||||
{activeTab === "logs" && <SystemLogs key={`logs-${componentKey}`} />}
|
<SystemLogs key={`logs-${componentKey}`} />
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
|
|
||||||
|
|||||||
@@ -109,13 +109,12 @@ const fetchSystemData = async (): Promise<SystemData | null> => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Flask server responded with status: ${response.status}`)
|
throw new Error(`HTTP error! status: ${response.status}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
return data
|
return data
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("[v0] Failed to fetch system data:", error)
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,13 +133,12 @@ const fetchVMData = async (): Promise<VMData[]> => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Flask server responded with status: ${response.status}`)
|
throw new Error(`HTTP error! status: ${response.status}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
return Array.isArray(data) ? data : data.vms || []
|
return data.vms || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("[v0] Failed to fetch VM data:", error)
|
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -159,14 +157,12 @@ const fetchStorageData = async (): Promise<StorageData | null> => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
console.log("[v0] Storage API not available (this is normal if not configured)")
|
throw new Error(`HTTP error! status: ${response.status}`)
|
||||||
return null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
return data
|
return data
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("[v0] Storage data unavailable:", error instanceof Error ? error.message : "Unknown error")
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -185,14 +181,12 @@ const fetchNetworkData = async (): Promise<NetworkData | null> => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
console.log("[v0] Network API not available (this is normal if not configured)")
|
throw new Error(`HTTP error! status: ${response.status}`)
|
||||||
return null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await response.json()
|
const data = await response.json()
|
||||||
return data
|
return data
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log("[v0] Network data unavailable:", error instanceof Error ? error.message : "Unknown error")
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user