123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- import SwiftUI
- import SwiftUIX
- import SwiftyPing
- import Combine
- class RowData: ObservableObject {
-
- @Published var value: String = ""
- @Published var valueColor: String = ""
-
- init() {
-
- }
- func update(hosts : Int) {
- log.debug(hosts)
-
- if(hosts <= 49 && hosts >= 1){
- self.value = "流畅"
- self.valueColor = "#00FF00"
- } else if(hosts >= 50 || hosts >= 100){
- self.value = "繁忙"
- self.valueColor = "#FF0000"
- } else if(hosts <= 0){
- self.value = "故障"
- self.valueColor = "#696969"
- }
-
-
- }
- }
- struct PingView: View {
- var name: Int? = 0
- @ObservedObject var loader: RowData
- init(name: Int?, loader: RowData) {
- self.name = name
- self.loader = loader
- }
- var body: some View {
- HStack {
- Text(self.loader.value)
- .foregroundColor(Color.init(hex: self.loader.valueColor))
- .padding()
- }
- .onAppear {
-
- loader.update(hosts: self.name ?? 0)
- }
- }
- }
-
- struct NodelCell: View {
-
- var name = ""
-
- var host = 0
-
- var body: some View {
- HStack {
- Text(name)
- .padding()
- Spacer()
-
- PingView(name: host , loader: RowData())
- }
- .contentShape(Rectangle())
- .onAppear {
-
- }
- }
- }
- struct ListRemoveSeparator: ViewModifier {
- func body(content: Content) -> some View {
- content
- .onAppear(perform: {
- UITableView.appearance().tableFooterView = UIView()
- UITableView.appearance().separatorStyle = .none
- })
- .onDisappear(perform: {
- UITableView.appearance().tableFooterView = nil
- UITableView.appearance().separatorStyle = .singleLine
- })
- }
- }
- struct NodeView: View {
-
-
- @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
-
-
- @Binding var hosts : String
-
- @ObservedObject var nodelViewModel = NodelViewModel.nodel
- @ObservedObject var rowdata = RowData()
-
- @State var ping_msg = "点我检测延迟"
- var screenSize: CGRect = UIScreen.main.bounds
- var itmesize = 250
- var minimumInteritemSpacing : CGFloat = 5.0
- var itmesCount : CGFloat = 2.0
- var cellWidth : CGFloat {
- (screenSize.width / itmesCount) - (minimumInteritemSpacing * 2) - 1
- }
-
-
-
-
- var body: some View {
- ZStack {
-
- if self.nodelViewModel.loading == true
- {
- ActivityIndicator(isAnimating: self.nodelViewModel.loading)
- .configure { $0.color = .blue}
- .padding()
- } else if self.nodelViewModel.isAlt == true {
- VStack{
- Text("\(self.nodelViewModel.errmsg)")
- .foregroundColor(Color.black)
- Text("点击重试")
- .foregroundColor(Color.black)
- .onTapGesture {
- self.nodelViewModel.GetNode()
- }
- }
- } else {
- Color("NodeItem")
- List{
- ForEach(0..<self.nodelViewModel.nodeList.count,id:\.self){ index in
- NodelCell(name: self.nodelViewModel.nodeList[index].name ?? "", host: self.nodelViewModel.nodeList[index].online_users)
- .frame(height: 60)
- .onTapGesture {
- self.nodelViewModel.nodeModel = self.nodelViewModel.nodeList[index]
- self.hosts = self.nodelViewModel.nodeModel?.name ?? "智能选线"
-
- self.presentationMode.wrappedValue.dismiss()
- }
- .background(Color.init(hex: "#FFFFFF"))
-
- }
- }
- }
-
-
- }
- .onAppear {
- let controller = UIApplication.shared.windows[0].rootViewController as? MyHontingController
- controller?.statusBarStyle = .lightContent
- nodelViewModel.GetNode()
-
- }
- .navigationBarTitle(Text("节点"), displayMode: .inline)
-
-
- }
-
-
- }
-
|