Improve train status formatting

This change adds proper singular/plural labels for minutes and hours in the lateness display, fixes green status text contrast for dark mode, and updates the README to credit the Amtrak.js models used as a base.
This commit is contained in:
Tony Bark 2026-08-24 20:07:11 -04:00
parent bf420b7480
commit 79176585b4
4 changed files with 16 additions and 5 deletions

View file

@ -103,7 +103,7 @@ struct ContentView: View {
func statusColour(_ color: Color) -> Color {
switch color {
case .green:
return .black
return .adaptive(light: .white, dark: .black)
default:
return .white
}

View file

@ -0,0 +1,7 @@
import Foundation
extension Int {
func pluralized(singular: String, plural: String) -> String {
self == 1 ? singular : plural
}
}

View file

@ -33,13 +33,17 @@ enum TrainLateness {
}
}
static func formatted(_ minutes: Int) -> String {
let hours = minutes / 60
let remainder = minutes % 60
let minutesPart = "\(minutes) \(minutes.pluralized(singular: "min", plural: "mins"))"
let hoursPart = "\(hours) \(hours.pluralized(singular: "hr", plural: "hrs"))"
guard hours > 0 else {
return "\(minutes) mins"
return minutesPart
}
return "\(hours) hrs"
return hoursPart
}
}