TempTrack-iOS/TempTrack/Temperature/TemperatureMeasurement.swift
2023-06-05 13:05:57 +02:00

114 lines
2.6 KiB
Swift

import Foundation
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)
}
}()
}