From 9070c9e6b7c7ce5671f4fad85e4aefa8c27aad28 Mon Sep 17 00:00:00 2001 From: Arturs Artamonovs Date: Wed, 4 Sep 2024 10:24:38 +0100 Subject: Plain tracking UI works much better --- LearnMapKit/FlighState.swift | 152 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 138 insertions(+), 14 deletions(-) (limited to 'LearnMapKit/FlighState.swift') diff --git a/LearnMapKit/FlighState.swift b/LearnMapKit/FlighState.swift index 9f42369..a86a660 100644 --- a/LearnMapKit/FlighState.swift +++ b/LearnMapKit/FlighState.swift @@ -7,25 +7,47 @@ import Foundation import Collections +import SwiftUI - -class FlightTracker { +class FlightTracker: Identifiable { var last_time_seen: Int = 0 + var ICAOaddress = 0 var ICAOName_avaliable = false - @Published var ICAOName = "" + //@Published var ICAOName = "" + var ICAOName = "" var Position_avaliable = false @Published var long:Double = 0.0 + //var long:Double = 0.0 @Published var lat:Double = 0.0 + //var lat:Double = 0.0 var FromTo_avaliable = false var flightFrom:String = "" var flightTo:String = "" + var id: String { String(ICAOaddress) } + + + enum CodingKeys: String, CodingKey { + case ICAOName + case long + case lat + } + + func encode(to encoder: any Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(self.ICAOName, forKey: .ICAOName) + try container.encode(self.long, forKey: .long) + try container.encode(self.lat, forKey: .lat) + } } + + class FlightState: ObservableObject { var timer: Timer? //default location currently for testing var fromFile: Bool = false - @Published var flight:[Int:FlightTracker] = [:] + var idx_flight:[Int:Int] = [:] + @Published var flight:[FlightTracker] = [] //configuration options var sourceFile = false @@ -33,7 +55,7 @@ class FlightState: ObservableObject { var process_per_second = 120 var sourceDump1090Server = true - var dump1090address = "192.168.4.201" + var dump1090address = "192.168.4.233" var dump1090port = 30002 init() { @@ -71,6 +93,14 @@ class FlightState: ObservableObject { self.sourceFile = false } + func networkMode(netconfig: Binding) { + print("network mode") + self.dump1090address = netconfig.servername.wrappedValue + self.dump1090port = netconfig.serverport.wrappedValue + self.sourceDump1090Server = true + self.sourceFile = false + } + func fileMode(filepath: String) { print("file mode") self.default_file_path = filepath @@ -84,6 +114,14 @@ class FlightState: ObservableObject { self.sourceFile = false } + func defaultMode(hostname: String, port: Int) { + print("default mode net") + self.sourceDump1090Server = true + self.dump1090address = hostname + self.dump1090port = port + self.sourceFile = false + } + func startSourceFile() { print("Start reading ADSB messages from \(self.default_file_path)") let adsb_file = ADSBFileRunner(filename: self.default_file_path) @@ -111,7 +149,7 @@ class FlightState: ObservableObject { if adsb_file.getCount() > self.process_per_second { let data = adsb_file.getPlainData(self.process_per_second) //print(data.getCount()) - for idx in 0.. 0 { - print("Process onse a second") - for idx in 0..