117 lines
3.8 KiB
Swift
117 lines
3.8 KiB
Swift
//
|
|
// RecourcesView.swift
|
|
// iKeyMon
|
|
//
|
|
// Created by tracer on 31.03.25.
|
|
//
|
|
|
|
//
|
|
// GeneralTab.swift
|
|
// iKeyMon
|
|
//
|
|
// Created by tracer on 30.03.25.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct ResourcesView: View {
|
|
@Binding var server: Server
|
|
|
|
var body: some View {
|
|
GeometryReader { geometry in
|
|
ScrollView {
|
|
VStack(alignment: .leading, spacing: 6) {
|
|
TableRowView {
|
|
Text("CPU Load")
|
|
} value: {
|
|
LoadBarCell(
|
|
percent: (server.info?.load.percent)!,
|
|
load1: (server.info?.load.minute1)!,
|
|
load5: (server.info?.load.minute5)!,
|
|
load15: (server.info?.load.minute15)!
|
|
)
|
|
}
|
|
TableRowView {
|
|
Text("Memory")
|
|
} value: {
|
|
UsageBarCell(
|
|
free: (server.info?.memory.free)!,
|
|
used: (server.info?.memory.used)!,
|
|
total: (server.info?.memory.total)!,
|
|
percent: (server.info?.memory.percent)!
|
|
)
|
|
}
|
|
TableRowView {
|
|
Text("Swap")
|
|
} value: {
|
|
UsageBarCell(
|
|
free: (server.info?.swap.free)!,
|
|
used: (server.info?.swap.used)!,
|
|
total: (server.info?.swap.total)!,
|
|
percent: (server.info?.swap.percent)!
|
|
)
|
|
}
|
|
TableRowView {
|
|
Text("SSD")
|
|
} value: {
|
|
UsageBarCell(
|
|
free: (server.info?.diskSpace.free)!,
|
|
used: (server.info?.diskSpace.used)!,
|
|
total: (server.info?.diskSpace.total)!,
|
|
percent: (server.info?.diskSpace.percent)!
|
|
)
|
|
}
|
|
}
|
|
.padding()
|
|
.frame(minHeight: geometry.size.height, alignment: .top)
|
|
}
|
|
|
|
}
|
|
// VStack(alignment: .leading, spacing: 16) {
|
|
// if let info = server.info {
|
|
// Text("Server Utilization")
|
|
// .font(.headline)
|
|
// .padding(.bottom, 4)
|
|
//
|
|
// ResourceRow(label: "CPU Load", value: "\(info.load.percent)", subtext: info.cpuLoadDetail)
|
|
// ResourceRow(label: "Process Count", value: "\(info.processCount)")
|
|
//// ResourceRow(label: "Emails in Queue", value: "\(info.emailsInQueue)")
|
|
//
|
|
// ResourceBarRow(
|
|
// label: "Memory",
|
|
// free: info.memory.free,
|
|
// used: info.memory.used,
|
|
// total: info.memory.total,
|
|
// percent: info.memory.percent
|
|
// )
|
|
//
|
|
// ResourceBarRow(
|
|
// label: "Swap",
|
|
// free: info.memory.free,
|
|
// used: info.memory.used,
|
|
// total: info.memory.total,
|
|
// percent: info.memory.percent
|
|
// )
|
|
//
|
|
// Spacer()
|
|
// } else {
|
|
// Text("No data")
|
|
// }
|
|
// }
|
|
.padding()
|
|
.frame(maxWidth: .infinity, alignment: .leading)
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
struct PreviewWrapper: View {
|
|
@State var previewServer = Server(hostname: "example.com", info: .placeholder)
|
|
|
|
var body: some View {
|
|
ResourcesView(server: $previewServer)
|
|
}
|
|
}
|
|
|
|
return PreviewWrapper()
|
|
}
|