Просмотр исходного кода

Fix graph settings not honored on the small graph (#717)

Jonas Björkert 1 неделя назад
Родитель
Сommit
b06efbf660

+ 2 - 0
LoopFollow/Charts/BGChartModel.swift

@@ -174,6 +174,7 @@ final class BGChartModel: ObservableObject {
     @Published var show30Min: Bool = false
     @Published var show90Min: Bool = false
     @Published var showMidnight: Bool = false
+    @Published var smallGraphTreatments: Bool = true
 
     private static let doseFormatter: NumberFormatter = {
         let nf = NumberFormatter()
@@ -405,6 +406,7 @@ final class BGChartModel: ObservableObject {
         show30Min = Storage.shared.show30MinLine.value
         show90Min = Storage.shared.show90MinLine.value
         showMidnight = Storage.shared.showMidnightLines.value
+        smallGraphTreatments = Storage.shared.smallGraphTreatments.value
 
         let isLoop = Storage.shared.device.value == "Loop"
         overrideColor = isLoop ? .green : .purple

+ 24 - 12
LoopFollow/Charts/BGChartView.swift

@@ -1011,21 +1011,28 @@ private struct BGChartCanvas: View, Equatable {
     }
 
     var body: some View {
+        let showTreatments = !isSmall || model.smallGraphTreatments
         let chart = Chart {
-            bgBandMarks
-            basalMarks
-            scheduledBasalMarks
+            if showTreatments {
+                bgBandMarks
+                basalMarks
+                scheduledBasalMarks
+            }
             coneMarks
-            yesterdayMarks
+            if !isSmall {
+                yesterdayMarks
+            }
             bgLineMarks
             bgPointsMark
             predictionLineMark
-            if !isSmall {
-                predictionVariantMarks
+            predictionVariantMarks
+            if showTreatments {
+                treatmentMarks
             }
-            treatmentMarks
             if !isSmall {
                 ruleMarks
+            } else if model.showMidnight {
+                midnightRuleMarks
             }
         }
         .chartXScale(domain: windowStart ... windowEnd)
@@ -1423,11 +1430,16 @@ private struct BGChartCanvas: View, Equatable {
             }
         }
         if model.showMidnight {
-            ForEach(model.midnightMarkers.filter { $0 >= windowStart && $0 <= windowEnd }, id: \.self) { d in
-                RuleMark(x: .value("midnight", d))
-                    .lineStyle(StrokeStyle(lineWidth: 0.5, dash: [5, 3]))
-                    .foregroundStyle(Color.teal.opacity(0.6))
-            }
+            midnightRuleMarks
+        }
+    }
+
+    @ChartContentBuilder
+    private var midnightRuleMarks: some ChartContent {
+        ForEach(model.midnightMarkers.filter { $0 >= windowStart && $0 <= windowEnd }, id: \.self) { d in
+            RuleMark(x: .value("midnight", d))
+                .lineStyle(StrokeStyle(lineWidth: 0.5, dash: [5, 3]))
+                .foregroundStyle(Color.teal.opacity(0.6))
         }
     }
 }

+ 3 - 0
LoopFollow/Settings/GraphSettingsView.swift

@@ -56,9 +56,12 @@ struct GraphSettingsView: View {
             if nightscoutEnabled {
                 Section("Treatments") {
                     Toggle("Show Carb/Bolus Values", isOn: $showValues.value)
+                        .onChange(of: showValues.value) { _ in markDirty() }
                     Toggle("Show Carb Absorption", isOn: $showAbsorption.value)
+                        .onChange(of: showAbsorption.value) { _ in markDirty() }
                     Toggle("Treatments on Small Graph",
                            isOn: $smallGraphTreatments.value)
+                        .onChange(of: smallGraphTreatments.value) { _ in markDirty() }
                 }
             }