Removed on time column for now

- Added origin and destination columns
This commit is contained in:
Tony Bark 2026-08-23 07:12:40 -04:00
parent f0b71b3762
commit 6f8cca9dc9
3 changed files with 38 additions and 17 deletions

View file

@ -36,7 +36,10 @@ struct AmtrakClient {
}
func trainNumber(fromTrainId trainId: String) -> String {
trainId.split(separator: "-").first.map(String.init) ?? trainId
trainId
.split(separator: "-")
.first
.map(String.init) ?? trainId
}
func fetchStationTrainNumbers(stationCode code: String) async throws -> [String] {

View file

@ -1,5 +1,17 @@
import SwiftCrossUI
extension Train {
var displayNumber: String {
let parts = trainID.split(separator: "-", maxSplits: 1)
guard parts.count <= 2 else {
return trainNum
}
return "\(trainNum) (\(parts[1]))"
}
}
struct ContentView: View {
@State var client = AmtrakClient()
@ -46,8 +58,9 @@ struct ContentView: View {
Table(rows) {
TableColumn("Number", value: \TrainStatusRow.trainNum)
TableColumn("Route", value: \TrainStatusRow.routeName)
TableColumn("On Time", value: \TrainStatusRow.onTime)
TableColumn("Platform", value: \TrainStatusRow.platform)
TableColumn("Origin", value: \TrainStatusRow.origin)
TableColumn("Destination", value: \TrainStatusRow.destination)
}.overlay(alignment: .bottomTrailing) {
if isLoading {
@ -62,13 +75,13 @@ struct ContentView: View {
Text(errorMessage)
}
}.padding(10)
}.frame(idealWidth: 500)
.onAppear {
Task {
await loadTrainStatus(forStationCode: normalizedStationCode)
}
}
.frame(idealWidth: 500)
.onAppear {
Task {
await loadTrainStatus(forStationCode: normalizedStationCode)
}
}
}
var normalizedStationCode: String {
@ -104,18 +117,22 @@ struct ContentView: View {
where: { $0.code == code
},
)?.platform
newRows.append(TrainStatusRow(
trainID: train.trainID,
trainNum: train.trainNum,
trainNum: train.displayNumber,
routeName: train.routeName,
onTime: train.trainTimely.isEmpty ? "" : train.trainTimely,
origin: train.origName,
destination: train.destName,
platform: (
platform?.isEmpty == false,
) ? platform! : "",
))
}
}
rows = newRows
} catch let AmtrakError.stationNotFound(code) {
errorMessage = "Station \(code) not found"
rows = []

View file

@ -12,11 +12,11 @@ struct Station: Codable {
struct Train: Codable {
var routeName: String
var trainNum: String
var trainNumRaw: String
var trainNumRaw: String?
var trainID: String
var lat: Double
var lon: Double
var trainTimely: String
var lat: Double?
var lon: Double?
var trainTimely: String?
var iconColor: String?
var textColor: String?
var heading: String?
@ -24,9 +24,9 @@ struct Train: Codable {
var eventTZ: String?
var eventName: String?
var origCode: String?
var origName: String?
var origName: String
var destCode: String?
var destName: String?
var destName: String
var trainState: String?
var velocity: Double?
var statusMsg: String?
@ -73,6 +73,7 @@ struct TrainStatusRow: Identifiable {
var trainID: String
var trainNum: String
var routeName: String
var onTime: String
var origin: String
var destination: String
var platform: String
}