ソースを参照

Revert "Dev Merge"

jonfawcett 6 年 前
コミット
d792c9e4b2

+ 2 - 10
LoopFollow/Controllers/Alarms.swift

@@ -7,7 +7,7 @@
 //
 
 import Foundation
-import AVFoundation
+
 
 extension MainViewController {
     
@@ -318,13 +318,5 @@ extension MainViewController {
 
           
       }
-
-    func speakBG(sgv: Int) {
-        var speechSynthesizer = AVSpeechSynthesizer()
-        var speechUtterance: AVSpeechUtterance = AVSpeechUtterance(string: "Current BG is " + String(sgv))
-        speechUtterance.rate = AVSpeechUtteranceMaximumSpeechRate / 2
-        speechUtterance.voice = AVSpeechSynthesisVoice(language: "en-US")
-        speechSynthesizer.speak(speechUtterance)
-    }
-
+    
 }

+ 61 - 74
LoopFollow/Controllers/Graphs.swift

@@ -20,33 +20,31 @@ extension MainViewController {
     func createGraph(){
         self.BGChart.clear()
         
+        // Create the BG Graph Data
         let entries = bgData
         var bgChartEntry = [ChartDataEntry]()
         var colors = [NSUIColor]()
         var maxBG: Int = 250
-        if bgData.count > 0 {
-            // Create the BG Graph Data
-            for i in 0..<entries.count{
-                var dateString = String(entries[i].date).prefix(10)
-                let dateSecondsOnly = Double(String(dateString))!
-                if entries[i].sgv > maxBG - 40 {
-                    maxBG = entries[i].sgv + 40
-                }
-                let value = ChartDataEntry(x: Double(entries[i].date), y: Double(entries[i].sgv))
-                bgChartEntry.append(value)
-                
-                if Double(entries[i].sgv) >= Double(UserDefaultsRepository.highLine.value) {
-                    colors.append(NSUIColor.systemYellow)
-                } else if Double(entries[i].sgv) <= Double(UserDefaultsRepository.lowLine.value) {
-                    colors.append(NSUIColor.systemRed)
-                } else {
-                    colors.append(NSUIColor.systemGreen)
-                }
+        for i in 0..<entries.count{
+            var dateString = String(entries[i].date).prefix(10)
+            let dateSecondsOnly = Double(String(dateString))!
+            if entries[i].sgv > maxBG - 40 {
+                maxBG = entries[i].sgv + 40
             }
-        }
+            let value = ChartDataEntry(x: Double(entries[i].date), y: Double(entries[i].sgv))
+            bgChartEntry.append(value)
             
+            if Double(entries[i].sgv) >= Double(UserDefaultsRepository.highLine.value) {
+                colors.append(NSUIColor.systemYellow)
+            } else if Double(entries[i].sgv) <= Double(UserDefaultsRepository.lowLine.value) {
+                colors.append(NSUIColor.systemRed)
+            } else {
+                colors.append(NSUIColor.systemGreen)
+            }
+        }
+        
         // Add Prediction Data
-        if predictionData.count > 0 && bgChartEntry.count > 0 {
+        if predictionData.count > 0 {
             var startingTime = bgChartEntry[bgChartEntry.count - 1].x + 300
             var i = 0
             // Add 1 hour of predictions
@@ -66,48 +64,45 @@ extension MainViewController {
                 i += 1
             }
         }
-            
-            // Setup BG line details
-            let lineBG = LineChartDataSet(entries:bgChartEntry, label: "")
-            lineBG.circleRadius = 3
-            lineBG.circleColors = [NSUIColor.systemGreen]
-            lineBG.drawCircleHoleEnabled = false
-            lineBG.axisDependency = YAxis.AxisDependency.right
-            lineBG.highlightEnabled = false
-            lineBG.drawValuesEnabled = false
-            
-            if UserDefaultsRepository.showLines.value {
-                lineBG.lineWidth = 2
-            } else {
-                lineBG.lineWidth = 0
-            }
-            if UserDefaultsRepository.showDots.value {
-                lineBG.drawCirclesEnabled = true
-            } else {
-                lineBG.drawCirclesEnabled = false
-            }
-            lineBG.setDrawHighlightIndicators(false)
-            lineBG.valueFont.withSize(50)
-            
-            for i in 1..<colors.count{
-                lineBG.addColor(colors[i])
-                lineBG.circleColors.append(colors[i])
-            }
+        
+        // Setup BG line details
+        let lineBG = LineChartDataSet(entries:bgChartEntry, label: "")
+        lineBG.circleRadius = 3
+        lineBG.circleColors = [NSUIColor.systemGreen]
+        lineBG.drawCircleHoleEnabled = false
+        lineBG.axisDependency = YAxis.AxisDependency.right
+        lineBG.highlightEnabled = false
+        lineBG.drawValuesEnabled = false
+        
+        if UserDefaultsRepository.showLines.value {
+            lineBG.lineWidth = 2
+        } else {
+            lineBG.lineWidth = 0
+        }
+        if UserDefaultsRepository.showDots.value {
+            lineBG.drawCirclesEnabled = true
+        } else {
+            lineBG.drawCirclesEnabled = false
+        }
+        lineBG.setDrawHighlightIndicators(false)
+        lineBG.valueFont.withSize(50)
+        
+        for i in 1..<colors.count{
+            lineBG.addColor(colors[i])
+            lineBG.circleColors.append(colors[i])
+        }
         
 
-        var maxBasal = 1.0
+        // create Basal graph data
         var chartEntry = [ChartDataEntry]()
-        if basalData.count > 0 {
-            // create Basal graph data
-            for i in 0..<basalData.count{
-                let value = ChartDataEntry(x: Double(basalData[i].date), y: Double(basalData[i].basalRate))
-                chartEntry.append(value)
-                if basalData[i].basalRate  > maxBasal {
-                    maxBasal = basalData[i].basalRate
-                }
+        var maxBasal = 1.0
+        for i in 0..<basalData.count{
+            let value = ChartDataEntry(x: Double(basalData[i].date), y: Double(basalData[i].basalRate))
+            chartEntry.append(value)
+            if basalData[i].basalRate  > maxBasal {
+                maxBasal = basalData[i].basalRate
             }
         }
-        
         // Setup Basal line details
         let lineBasal = LineChartDataSet(entries:chartEntry, label: "")
         lineBasal.setDrawHighlightIndicators(false)
@@ -122,11 +117,9 @@ extension MainViewController {
         
         // Boluses
         var chartEntryBolus = [ChartDataEntry]()
-        if bolusData.count > 0 {
-            for i in 0..<bolusData.count{
-                let value = ChartDataEntry(x: Double(bolusData[i].date), y: Double(bolusData[i].sgv + 10), data: String(bolusData[i].value))
-                chartEntryBolus.append(value)
-            }
+        for i in 0..<bolusData.count{
+            let value = ChartDataEntry(x: Double(bolusData[i].date), y: Double(bolusData[i].sgv + 10), data: String(bolusData[i].value))
+            chartEntryBolus.append(value)
         }
         let lineBolus = LineChartDataSet(entries:chartEntryBolus, label: "")
         lineBolus.circleRadius = 7
@@ -144,11 +137,9 @@ extension MainViewController {
         
         // Carbs
         var chartEntryCarbs = [ChartDataEntry]()
-        if carbData.count > 0 {
-            for i in 0..<carbData.count{
-                let value = ChartDataEntry(x: Double(carbData[i].date), y: Double(carbData[i].sgv + 30), data: String(carbData[i].value))
-                chartEntryCarbs.append(value)
-            }
+        for i in 0..<carbData.count{
+            let value = ChartDataEntry(x: Double(carbData[i].date), y: Double(carbData[i].sgv + 30), data: String(carbData[i].value))
+            chartEntryCarbs.append(value)
         }
         let lineCarbs = LineChartDataSet(entries:chartEntryCarbs, label: "")
         lineCarbs.circleRadius = 7
@@ -177,8 +168,6 @@ extension MainViewController {
         //let marker = PillMarker(color: .secondarySystemBackground, font: UIFont.boldSystemFont(ofSize: 14), textColor: .label)
         //BGChart.marker = marker
         
-        
-        
         // Clear limit lines so they don't add multiples when changing the settings
         BGChart.rightAxis.removeAllLimitLines()
         
@@ -213,8 +202,8 @@ extension MainViewController {
         
         BGChart.legend.enabled = false
         BGChart.scaleYEnabled = false
-        BGChart.drawGridBackgroundEnabled = false
-        //BGChart.gridBackgroundColor = NSUIColor.secondarySystemBackground
+        BGChart.drawGridBackgroundEnabled = true
+        BGChart.gridBackgroundColor = NSUIColor.secondarySystemBackground
         
         BGChart.data = data
         
@@ -230,10 +219,8 @@ extension MainViewController {
         }
         
         
-        if bgData.count > 0 {
-            createSmallBGGraph(bgChartEntry: bgChartEntry, colors: colors)
-        }
         
+        createSmallBGGraph(bgChartEntry: bgChartEntry, colors: colors)
         
     }
     

+ 29 - 49
LoopFollow/Controllers/NightScout.swift

@@ -38,6 +38,7 @@ extension MainViewController {
         // Only do the network calls if we don't have a current reading
         if needsLoaded {
             self.clearLastInfoData()
+            // Dispatch and process json for all web calls before proceeeding
             webLoadNSProfile()
             WebLoadNSTempBasals()
             webLoadNSDeviceStatus()
@@ -48,7 +49,7 @@ extension MainViewController {
             webLoadNSCage()
             webLoadNSSage()
             
-            if bgData.count > 0 {
+            chartDispatch.notify(queue: .main){
                 self.updateBadge()
                 self.viewUpdateNSBG()
                 if UserDefaultsRepository.writeCalendarEvent.value {
@@ -59,29 +60,27 @@ extension MainViewController {
             
            
         } else {
-            
+            // Dispatch and process json for all web calls before proceeeding
             webLoadNSProfile()
             WebLoadNSTempBasals()
             webLoadNSDeviceStatus()
             webLoadNSBoluses()
             webLoadNSCarbs()
            
-            if bgData.count > 0 {
-                self.viewUpdateNSBG()
+            chartDispatch.notify(queue: .main){
+                
                 self.createGraph()
                 self.updateMinAgo()
                 self.clearOldSnoozes()
                 self.checkAlarms(bgs: self.bgData)
             }
-                
-            
         }
         
     }
     
     // NS BG Data Web call
     func webLoadNSBGData(onlyPullLastRecord: Bool = false) {
-
+        
         // Set the count= in the url either to pull 24 hours or only the last record
         var points = "1"
         if !onlyPullLastRecord {
@@ -145,9 +144,6 @@ extension MainViewController {
             bgData.removeAll()
         } else if bgData[bgData.count - 1].date != pullDate {
             bgData.removeFirst()
-            if data.count > 0 && UserDefaultsRepository.speakBG.value {
-                speakBG(sgv: data[data.count - 1].sgv)
-            }
         } else {
             // Update the badge, bg, graph settings even if we don't have a new reading.
             self.updateBadge()
@@ -162,11 +158,6 @@ extension MainViewController {
             let reading = sgvData(sgv: data[data.count - 1 - i].sgv, date: dateString, direction: data[data.count - 1 - i].direction)
             bgData.append(reading)
         }
-        
-        if firstGraphLoad {
-            viewUpdateNSBG()
-            createGraph()
-        }
        }
     
     // NS BG Data Front end updater
@@ -358,7 +349,7 @@ extension MainViewController {
           }
           
           var oText = "" as String
-            currentOverride = 1.0
+                 
                  if let lastOverride = lastDeviceStatus?["override"] as! [String : AnyObject]? {
                      if let lastOverrideTime = formatter.date(from: (lastOverride["timestamp"] as! String))?.timeIntervalSince1970  {
                      }
@@ -366,13 +357,12 @@ extension MainViewController {
                          
                          let lastCorrection  = lastOverride["currentCorrectionRange"] as! [String: AnyObject]
                          if let multiplier = lastOverride["multiplier"] as? Double {
-                            currentOverride = multiplier
-                            oText += String(format:"%.1f", multiplier*100)
-                        }
-                        else
-                        {
-                            oText += String(format:"%.1f", 100)
-                        }
+                                                oText += String(format:"%.1f", multiplier*100)
+                                            }
+                                            else
+                                            {
+                                                oText += String(format:"%.1f", 100)
+                                            }
                          oText += "% ("
                          let minValue = lastCorrection["minValue"] as! Double
                          let maxValue = lastCorrection["maxValue"] as! Double
@@ -530,7 +520,7 @@ extension MainViewController {
        
       // NS Profile Web Call
       func webLoadNSProfile() {
-
+          
         let urlString = UserDefaultsRepository.url.value + "/api/v1/profile/current.json"
           let escapedAddress = urlString.addingPercentEncoding(withAllowedCharacters:NSCharacterSet.urlQueryAllowed)
           guard let url = URL(string: escapedAddress!) else {
@@ -585,7 +575,7 @@ extension MainViewController {
       
         // NS Temp Basal Web Call
       func WebLoadNSTempBasals() {
-
+        
         let yesterdayString = dateTimeUtils.nowMinus24HoursTimeInterval()
 
         var urlString = UserDefaultsRepository.url.value + "/api/v1/treatments.json?find[eventType][$eq]=Temp%20Basal&find[created_at][$gte]=" + yesterdayString
@@ -751,7 +741,7 @@ extension MainViewController {
     
     // NS Bolus Web Call
       func webLoadNSBoluses(){
-
+        
         let yesterdayString = dateTimeUtils.nowMinus24HoursTimeInterval()
         let urlUser = UserDefaultsRepository.url.value
           var searchString = "find[eventType]=Correction%20Bolus&find[created_at][$gte]=" + yesterdayString
@@ -810,19 +800,15 @@ extension MainViewController {
                  let dateTimeStamp = dateString!.timeIntervalSince1970
                  let bolus = currentEntry?["insulin"] as! Double
                 
-                 // Make the dot
-                 var dot: bolusCarbGraphStruct
-                  if bgData.count > 0 {
-                       let sgv = findNearestBGbyTime(needle: dateTimeStamp, haystack: bgData, startingIndex: lastFoundIndex)
-                       lastFoundIndex = sgv.foundIndex
-                       dot = bolusCarbGraphStruct(value: bolus, date: Double(dateTimeStamp), sgv: Int(sgv.sgv))
-                  } else {
-                       dot = bolusCarbGraphStruct(value: bolus, date: Double(dateTimeStamp), sgv: 100)
-                   }
+                let sgv = findNearestBGbyTime(needle: dateTimeStamp, haystack: bgData, startingIndex: lastFoundIndex)
+                lastFoundIndex = sgv.foundIndex
+                
                 if dateTimeStamp < (dateTimeUtils.getNowTimeIntervalUTC() + (60 * 60)) {
+                    // Make the dot
+                   let dot = bolusCarbGraphStruct(value: bolus, date: Double(dateTimeStamp), sgv: Int(sgv.sgv))
                     bolusData.append(dot)
                 }
-
+                
             }
 
            
@@ -831,7 +817,7 @@ extension MainViewController {
     
     // NS Carb Web Call
       func webLoadNSCarbs(){
-
+        
         let yesterdayString = dateTimeUtils.nowMinus24HoursTimeInterval()
         let urlUser = UserDefaultsRepository.url.value
           var searchString = "find[eventType]=Meal%20Bolus&find[created_at][$gte]=" + yesterdayString
@@ -890,19 +876,13 @@ extension MainViewController {
                  let dateTimeStamp = dateString!.timeIntervalSince1970
                  let carbs = currentEntry?["carbs"] as! Double
                 
-                // Make the dot
-                var dot: bolusCarbGraphStruct
-               if bgData.count > 0 {
-                    let sgv = findNearestBGbyTime(needle: dateTimeStamp, haystack: bgData, startingIndex: lastFoundIndex)
-                    lastFoundIndex = sgv.foundIndex
-                     dot = bolusCarbGraphStruct(value: carbs, date: Double(dateTimeStamp), sgv: Int(sgv.sgv))
-               } else {
-                     dot = bolusCarbGraphStruct(value: carbs, date: Double(dateTimeStamp), sgv: 100)
-                }
-                 
+                let sgv = findNearestBGbyTime(needle: dateTimeStamp, haystack: bgData, startingIndex: lastFoundIndex)
+                lastFoundIndex = sgv.foundIndex
+                
                 if dateTimeStamp < (dateTimeUtils.getNowTimeIntervalUTC() + (60 * 60)) {
-                 carbData.append(dot)
-
+                     // Make the dot
+                    let dot = bolusCarbGraphStruct(value: carbs, date: Double(dateTimeStamp), sgv: Int(sgv.sgv))
+                     carbData.append(dot)
                 }
             }
 

+ 2 - 16
LoopFollow/ViewControllers/MainViewController.swift

@@ -70,7 +70,6 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     var firstGraphLoad: Bool = true
     var firstBasalGraphLoad: Bool = true
     var minAgoBG: Double = 0.0
-    var currentOverride = 0.0
     
     // Vars for NS Pull
     var graphHours:Int=24
@@ -112,6 +111,7 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     var carbData: [bolusCarbGraphStruct] = []
     var predictionData: [Double] = []
     var chartData = LineChartData()
+    let chartDispatch = DispatchGroup()
     var newBGPulled = false
     
     // calendar setup
@@ -123,12 +123,6 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
         super.viewDidLoad()
         
         BGChart.delegate = self
-        var noDataText = "Chart will load momentarily"
-        if UserDefaultsRepository.url.value == "" {
-            noDataText = "Please set Nightscout URL"
-        }
-        BGChart.noDataText = noDataText
-        BGChartFull.noDataText = noDataText
         
         if UserDefaultsRepository.forceDarkMode.value {
             overrideUserInterfaceStyle = .dark
@@ -330,16 +324,8 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
             eventTitle = eventTitle.replacingOccurrences(of: "%BG%", with: String(self.bgData[self.bgData.count - 1].sgv))
             eventTitle = eventTitle.replacingOccurrences(of: "%DIRECTION%", with: direction)
             eventTitle = eventTitle.replacingOccurrences(of: "%DELTA%", with: deltaString)
-            if self.currentOverride != 1.0 {
-                let val = Int( self.currentOverride*100)
-               // let overrideText = String(format:"%f1", self.currentOverride*100)
-                let text = String(val) + "%"
-                eventTitle = eventTitle.replacingOccurrences(of: "%OVERRIDE%", with: text)
-            } else {
-                eventTitle = eventTitle.replacingOccurrences(of: "%OVERRIDE%", with: "")
-            }
             var minAgo = ""
-            if deltaTime > 9 {
+            if deltaTime > 5 {
                 // write old BG reading and continue pushing out end date to show last entry
                 minAgo = String(Int(deltaTime)) + " min"
                 eventEndDate = eventStartDate.addingTimeInterval((60 * 10) + (deltaTime * 60))

ファイルの差分が大きいため隠しています
+ 1 - 8
LoopFollow/ViewControllers/SettingsViewController.swift


+ 0 - 1
LoopFollow/repository/UserDefaults.swift

@@ -24,7 +24,6 @@ class UserDefaultsRepository {
     
     // General Settings
     static let colorBGText = UserDefaultsValue<Bool>(key: "colorBGText", default: true)
-    static let speakBG = UserDefaultsValue<Bool>(key: "speakBG", default: false)
     static let backgroundRefreshFrequency = UserDefaultsValue<Double>(key: "backgroundRefreshFrequency", default: 1)
     static let backgroundRefresh = UserDefaultsValue<Bool>(key: "backgroundRefresh", default: true)
     static let appBadge = UserDefaultsValue<Bool>(key: "appBadge", default: true)