//
//  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

    private var displayInfo: ServerInfo {
        server.info ?? .placeholder
    }

    var body: some View {
        GeometryReader { geometry in
            ScrollView {
                VStack(alignment: .leading, spacing: 6) {
                    TableRowView {
                        Text("CPU Load")
                    } value: {
                        LoadBarCell(
                            percent: displayInfo.load.percent,
                            load1: displayInfo.load.minute1,
                            load5: displayInfo.load.minute5,
                            load15: displayInfo.load.minute15
                        )
                    }
                    TableRowView {
                        Text("Memory")
                    } value: {
                        UsageBarCell(
                            free: displayInfo.memory.free,
                            used: displayInfo.memory.used,
                            total: displayInfo.memory.total,
                            percent: displayInfo.memory.percent
                        )
                    }
                    TableRowView {
                        Text("Swap")
                    } value: {
                        UsageBarCell(
                            free: displayInfo.swap.free,
                            used: displayInfo.swap.used,
                            total: displayInfo.swap.total,
                            percent: displayInfo.swap.percent
                        )
                    }
                    TableRowView {
                        Text("SSD")
                    } value: {
                        UsageBarCell(
                            free: displayInfo.diskSpace.free,
                            used: displayInfo.diskSpace.used,
                            total: displayInfo.diskSpace.total,
                            percent: displayInfo.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()
}
