Prettify main view, add temperature history
This commit is contained in:
@@ -1,10 +1,113 @@
|
||||
import Foundation
|
||||
|
||||
struct TemperatureMeasurement {
|
||||
struct TemperatureMeasurement: Identifiable {
|
||||
|
||||
var sensor0: TemperatureValue
|
||||
|
||||
var sensor1: TemperatureValue
|
||||
|
||||
var date: Date
|
||||
|
||||
var id: Int {
|
||||
Int(date.timeIntervalSince1970.rounded())
|
||||
}
|
||||
|
||||
var secondsAgo: Int {
|
||||
Int(date.timeIntervalSinceNow.rounded())
|
||||
}
|
||||
}
|
||||
|
||||
private extension TemperatureValue {
|
||||
|
||||
init(value: Double?) {
|
||||
if let value {
|
||||
self = .value(value)
|
||||
} else {
|
||||
self = .notFound
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private extension TemperatureMeasurement {
|
||||
|
||||
init(t0: Double?, t1: Double?, secs: Int) {
|
||||
self.sensor0 = .init(value: t0)
|
||||
self.sensor1 = .init(value: t1)
|
||||
self.date = Date().addingTimeInterval(TimeInterval(secs-3600))
|
||||
}
|
||||
|
||||
init(t0: Double?, t1: Double?, min: Int) {
|
||||
self.init(t0: t0, t1: t1, secs: min * 60)
|
||||
}
|
||||
}
|
||||
|
||||
extension TemperatureMeasurement {
|
||||
|
||||
static let mockData: [TemperatureMeasurement] = {
|
||||
let temps: [(Double?, Double?)] = [
|
||||
(20, 14),
|
||||
(20, 13.5),
|
||||
(20.5, 13.5),
|
||||
(20.5, 13.5),
|
||||
(21, 14),
|
||||
(21, 14),
|
||||
(nil, 14.5),
|
||||
(nil, 14),
|
||||
(nil, 14.5),
|
||||
(nil, 14),
|
||||
(nil, 14),
|
||||
(nil, 14.5),
|
||||
(nil, 15),
|
||||
(5.0, 15),
|
||||
(4.5, 15.5),
|
||||
(4.5, 16),
|
||||
(4.0, 16.5),
|
||||
(3.0, 17),
|
||||
(3.0, 19),
|
||||
(2.5, 20),
|
||||
(2.5, 20.5),
|
||||
(2.0, 20.5),
|
||||
(1.0, 20.5),
|
||||
(0.5, 20.5),
|
||||
(0.0, 20),
|
||||
(0.0, 20),
|
||||
(-1.0, 21.0),
|
||||
(-0.5, 21.0),
|
||||
(-3.0, 21.0),
|
||||
(-3.5, 20.5),
|
||||
(-4.0, 20.5),
|
||||
(-5.0, 20.0),
|
||||
(-5.0, nil),
|
||||
(-5.5, nil),
|
||||
(-5.0, nil),
|
||||
(-5.5, nil),
|
||||
(-6.0, nil),
|
||||
(-5.0, nil),
|
||||
(nil, nil),
|
||||
(nil, nil),
|
||||
(nil, nil),
|
||||
(-5.0, nil),
|
||||
(-4.5, nil),
|
||||
(-4.0, 23.0),
|
||||
(5.0, 24.0),
|
||||
(7.0, 25.0),
|
||||
(8.0, 25.5),
|
||||
(8.5, 25.5),
|
||||
(10.0, 25.5),
|
||||
(10.5, 24.0),
|
||||
(10.5, 24.0),
|
||||
(10.5, 24.5),
|
||||
(12.0, 23.5),
|
||||
(12.5, 24.0),
|
||||
(12.0, 23.5),
|
||||
(14.0, 24.0),
|
||||
(15.0, 25.0),
|
||||
(15.0, 25.0),
|
||||
(15.5, 25.0),
|
||||
(15.0, 25.0),
|
||||
]
|
||||
return temps.enumerated().map {
|
||||
TemperatureMeasurement(t0: $0.element.0, t1: $0.element.1, min: $0.offset)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
@@ -36,8 +36,8 @@ enum TemperatureValue {
|
||||
return "No sensor"
|
||||
case .invalidMeasurement:
|
||||
return "Invalid"
|
||||
case .value(let double):
|
||||
return "\(Int(double.rounded()))°C"
|
||||
case .value(let value):
|
||||
return String(format:" %.1f°C", value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user