Files
ClashX-Dashboard/ClashX Dashboard/Views/ContentTabs/Logs/LogsView.swift
2023-04-25 14:51:23 +08:00

57 lines
1.1 KiB
Swift

//
// LogsView.swift
// ClashX Dashboard
//
//
import SwiftUI
struct LogsView: View {
@EnvironmentObject var logStorage: ClashLogStorage
@State var searchString: String = ""
var logs: [ClashLogStorage.ClashLog] {
let logs: [ClashLogStorage.ClashLog] = logStorage.logs.reversed()
if searchString.isEmpty {
return logs
} else {
return logs.filtered(searchString, for: ["log", "levelString"])
}
}
var body: some View {
Table(logs) {
TableColumn("Date") {
Text($0.date.formatted(
Date.FormatStyle()
.year(.twoDigits)
.month(.twoDigits)
.day(.twoDigits)
.hour(.twoDigits(amPM: .omitted))
.minute(.twoDigits)
.second(.twoDigits)
))
.foregroundColor(.orange)
.truncationMode(.head)
}
.width(min: 60, max: 130)
TableColumn("Level") {
Text("[\($0.level.rawValue)]")
.foregroundColor($0.levelColor)
}
.width(min: 40, max: 65)
TableColumn("", value: \.log)
}
.background(.white)
.searchable(text: $searchString)
}
}
struct LogsView_Previews: PreviewProvider {
static var previews: some View {
LogsView()
}
}