Show all points for day

This commit is contained in:
Christoph Hagen
2023-06-14 17:52:43 +02:00
parent 2cb94a12be
commit 7cd697fb01
13 changed files with 116 additions and 41 deletions

View File

@ -0,0 +1,38 @@
import SwiftUI
private let df: DateFormatter = {
let df = DateFormatter()
df.dateStyle = .short
df.timeStyle = .medium
return df
}()
struct DayView: View {
let dateIndex: Int
@EnvironmentObject
var storage: TemperatureStorage
var entries: [TemperatureMeasurement] {
storage.loadMeasurements(for: dateIndex)
}
var body: some View {
TemperatureDayOverview(points: entries)
List(entries) { entry in
HStack {
Text(df.string(from: entry.date))
Spacer()
Text(entry.displayText)
}
}
}
}
struct DayView_Previews: PreviewProvider {
static var previews: some View {
DayView(dateIndex: Date.now.dateIndex)
.environmentObject(TemperatureStorage.mock)
}
}

View File

@ -9,16 +9,17 @@ struct HistoryList: View {
NavigationView {
List(storage.dailyMeasurementCounts) { day in
NavigationLink(destination: {
TemperatureDayOverview(storage: storage, dateIndex: day.dateIndex)
DayView(dateIndex: day.dateIndex)
.environmentObject(storage)
}) {
HistoryListRow(entry: day)
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
Button {
deleteRow(for: day.dateIndex)
} label: {
Label("Delete", systemSymbol: .pencil)
Label("Delete", systemSymbol: .trash)
}
.tint(.purple)
.tint(.red)
}
}
}

View File

@ -1,17 +1,17 @@
import SwiftUI
private let df: DateFormatter = {
let df = DateFormatter()
df.dateStyle = .short
df.timeStyle = .medium
return df
}()
struct LogView: View {
@EnvironmentObject
var log: Log
private let df: DateFormatter = {
let df = DateFormatter()
df.dateStyle = .short
df.timeStyle = .medium
return df
}()
var body: some View {
List(log.logEntries) { entry in
VStack(alignment: .leading) {

View File

@ -2,14 +2,14 @@ import SwiftUI
import Charts
struct TemperatureDayOverview: View {
let storage: TemperatureStorage
@State
var points: [TemperatureMeasurement] = []
let points: [TemperatureMeasurement]
init(points: [TemperatureMeasurement]) {
self.points = points
}
init(storage: TemperatureStorage, dateIndex: Int) {
self.storage = storage
let points = storage.loadMeasurements(for: dateIndex)
self.points = points
update()

View File

@ -34,7 +34,7 @@ struct TemperatureHistoryChart: View {
.chartXAxis(.hidden)
.chartLegend(.hidden)
.chartYAxis {
AxisMarks(position: .trailing, values: .automatic) { value in
AxisMarks(position: .trailing, values: .stride(by: 10)) { value in
AxisValueLabel(multiLabelAlignment: .trailing) {
if let intValue = value.as(Int.self) {
Text("\(intValue)°")