Add CSV export for days
This commit is contained in:
40
TempTrack/Storage/CsvConverter.swift
Normal file
40
TempTrack/Storage/CsvConverter.swift
Normal file
@@ -0,0 +1,40 @@
|
||||
import Foundation
|
||||
|
||||
struct CsvConverter {
|
||||
|
||||
private let dateFormatter: DateFormatter
|
||||
|
||||
init() {
|
||||
dateFormatter = .init()
|
||||
dateFormatter.dateStyle = .short
|
||||
dateFormatter.timeStyle = .medium
|
||||
}
|
||||
|
||||
private var header: String {
|
||||
"Index;Date;Sensor 0;Sensor 1\n"
|
||||
}
|
||||
|
||||
func convert(measurements: [TemperatureMeasurement]) -> String {
|
||||
header + measurements.enumerated().map { (index, measurement) -> String in
|
||||
let parts: [String] = [
|
||||
"\(index)",
|
||||
dateFormatter.string(from: measurement.date),
|
||||
convert(measurement.sensor0),
|
||||
convert(measurement.sensor1)
|
||||
]
|
||||
|
||||
return parts.joined(separator: ";")
|
||||
}.joined(separator: "\n")
|
||||
}
|
||||
|
||||
private func convert(_ value: TemperatureValue) -> String {
|
||||
switch value {
|
||||
case .notFound:
|
||||
return ""
|
||||
case .invalidMeasurement:
|
||||
return "?"
|
||||
case .value(let value):
|
||||
return String(format:"%.1f", value)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user