Преглед изворни кода

Offset Carb/Bolus dot option
Update graph on change of dots/lines
Set BG text color error prevention

Jon Fawcett пре 6 година
родитељ
комит
36078c8a8c

+ 21 - 4
LoopFollow/Controllers/Graphs.swift

@@ -189,6 +189,11 @@ extension MainViewController {
         ul.limit = Double(UserDefaultsRepository.highLine.value)
         ul.limit = Double(UserDefaultsRepository.highLine.value)
         ul.lineColor = NSUIColor.systemYellow.withAlphaComponent(0.5)
         ul.lineColor = NSUIColor.systemYellow.withAlphaComponent(0.5)
         BGChart.rightAxis.addLimitLine(ul)
         BGChart.rightAxis.addLimitLine(ul)
+        
+        BGChart.data?.dataSets[dataIndex].notifyDataSetChanged()
+        BGChart.data?.notifyDataChanged()
+        BGChart.notifyDataSetChanged()
+        
     }
     }
     
     
     func updateBGGraph() {
     func updateBGGraph() {
@@ -199,10 +204,14 @@ extension MainViewController {
         mainChart.clear()
         mainChart.clear()
         smallChart.clear()
         smallChart.clear()
         var maxBG = UserDefaultsRepository.minBGScale.value
         var maxBG = UserDefaultsRepository.minBGScale.value
+        var maxBGOffset = 0
+        if UserDefaultsRepository.offsetCarbsBolus.value {
+            maxBGOffset = 40
+        }
         var colors = [NSUIColor]()
         var colors = [NSUIColor]()
         for i in 0..<entries.count{
         for i in 0..<entries.count{
-            if entries[i].sgv > maxBG - 40 {
-                maxBG = entries[i].sgv + 40
+            if entries[i].sgv > maxBG - maxBGOffset {
+                maxBG = entries[i].sgv + maxBGOffset
             }
             }
             let value = ChartDataEntry(x: Double(entries[i].date), y: Double(entries[i].sgv))
             let value = ChartDataEntry(x: Double(entries[i].date), y: Double(entries[i].sgv))
             mainChart.addEntry(value)
             mainChart.addEntry(value)
@@ -300,7 +309,11 @@ extension MainViewController {
             formatter.minimumFractionDigits = 0
             formatter.minimumFractionDigits = 0
             formatter.maximumFractionDigits = 2
             formatter.maximumFractionDigits = 2
             formatter.minimumIntegerDigits = 1
             formatter.minimumIntegerDigits = 1
-            let value = ChartDataEntry(x: Double(bolusData[i].date), y: Double(bolusData[i].sgv + 10), data: formatter.string(from: NSNumber(value: bolusData[i].value)))
+            var offset = 0
+            if UserDefaultsRepository.offsetCarbsBolus.value {
+                offset = 10
+            }
+            let value = ChartDataEntry(x: Double(bolusData[i].date), y: Double(bolusData[i].sgv + offset), data: formatter.string(from: NSNumber(value: bolusData[i].value)))
             BGChart.data?.dataSets[dataIndex].addEntry(value)
             BGChart.data?.dataSets[dataIndex].addEntry(value)
 
 
         }
         }
@@ -318,7 +331,11 @@ extension MainViewController {
             formatter.minimumFractionDigits = 0
             formatter.minimumFractionDigits = 0
             formatter.maximumFractionDigits = 2
             formatter.maximumFractionDigits = 2
             formatter.minimumIntegerDigits = 1
             formatter.minimumIntegerDigits = 1
-             let value = ChartDataEntry(x: Double(carbData[i].date), y: Double(carbData[i].sgv + 30), data: formatter.string(from: NSNumber(value: carbData[i].value)))
+            var offset = 0
+            if UserDefaultsRepository.offsetCarbsBolus.value {
+                offset = 30
+            }
+             let value = ChartDataEntry(x: Double(carbData[i].date), y: Double(carbData[i].sgv + offset), data: formatter.string(from: NSNumber(value: carbData[i].value)))
             BGChart.data?.dataSets[dataIndex].addEntry(value)
             BGChart.data?.dataSets[dataIndex].addEntry(value)
 
 
         }
         }

+ 11 - 10
LoopFollow/ViewControllers/MainViewController.swift

@@ -287,19 +287,20 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     
     
 
 
     func setBGTextColor() {
     func setBGTextColor() {
-        let latestBG = bgData[bgData.count - 1].sgv
-        if UserDefaultsRepository.colorBGText.value {
-            if latestBG >= UserDefaultsRepository.highLine.value {
-                BGText.textColor = NSUIColor.systemYellow
-            } else if latestBG <= UserDefaultsRepository.lowLine.value {
-                BGText.textColor = NSUIColor.systemRed
+        if bgData.count > 0 {
+            let latestBG = bgData[bgData.count - 1].sgv
+            if UserDefaultsRepository.colorBGText.value {
+                if latestBG >= UserDefaultsRepository.highLine.value {
+                    BGText.textColor = NSUIColor.systemYellow
+                } else if latestBG <= UserDefaultsRepository.lowLine.value {
+                    BGText.textColor = NSUIColor.systemRed
+                } else {
+                    BGText.textColor = NSUIColor.systemGreen
+                }
             } else {
             } else {
-                BGText.textColor = NSUIColor.systemGreen
+                BGText.textColor = NSUIColor.label
             }
             }
-        } else {
-            BGText.textColor = NSUIColor.label
         }
         }
-        
     }
     }
     
     
     func bgOutputFormat(bg: Double, mmol: Bool) -> String {
     func bgOutputFormat(bg: Double, mmol: Bool) -> String {

+ 8 - 0
LoopFollow/ViewControllers/SettingsViewController.swift

@@ -211,6 +211,14 @@ class SettingsViewController: FormViewController {
             mainScreen.updateBGGraphSettings()
             mainScreen.updateBGGraphSettings()
                     
                     
         }
         }
+            <<< SwitchRow("offsetCarbsBolus"){ row in
+                row.title = "Offset Carb/Bolus Dots"
+                row.value = UserDefaultsRepository.offsetCarbsBolus.value
+            }.onChange { [weak self] row in
+                        guard let value = row.value else { return }
+                        UserDefaultsRepository.offsetCarbsBolus.value = value
+                        
+            }
         <<< StepperRow("minBGScale") { row in
         <<< StepperRow("minBGScale") { row in
             row.title = "Min BG Scale"
             row.title = "Min BG Scale"
             row.cell.stepper.stepValue = 10
             row.cell.stepper.stepValue = 10

+ 1 - 0
LoopFollow/repository/UserDefaults.swift

@@ -18,6 +18,7 @@ class UserDefaultsRepository {
     // Graph Settings
     // Graph Settings
     static let showDots = UserDefaultsValue<Bool>(key: "showDots", default: true)
     static let showDots = UserDefaultsValue<Bool>(key: "showDots", default: true)
     static let showLines = UserDefaultsValue<Bool>(key: "showLines", default: true)
     static let showLines = UserDefaultsValue<Bool>(key: "showLines", default: true)
+    static let offsetCarbsBolus = UserDefaultsValue<Bool>(key: "offsetCarbsBolus", default: true)
     static let hoursToLoad = UserDefaultsValue<Int>(key: "hoursToLoad", default: 24)
     static let hoursToLoad = UserDefaultsValue<Int>(key: "hoursToLoad", default: 24)
     static let minBasalScale = UserDefaultsValue<Double>(key: "minBasalScale", default: 5.0)
     static let minBasalScale = UserDefaultsValue<Double>(key: "minBasalScale", default: 5.0)
     static let minBGScale = UserDefaultsValue<Int>(key: "minBGScale", default: 250)
     static let minBGScale = UserDefaultsValue<Int>(key: "minBGScale", default: 250)