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

graph ignore items that have no value

Jon Fawcett 6 лет назад
Родитель
Сommit
2d68efbb2e
1 измененных файлов с 38 добавлено и 29 удалено
  1. 38 29
      LoopFollow/Controllers/Graphs.swift

+ 38 - 29
LoopFollow/Controllers/Graphs.swift

@@ -25,26 +25,28 @@ extension MainViewController {
         var bgChartEntry = [ChartDataEntry]()
         var colors = [NSUIColor]()
         var maxBG: Int = 250
-        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)
+        if bgData.count > 0 {
+            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 {
+        if predictionData.count > 0 && bgData.count > 0 {
             var startingTime = bgChartEntry[bgChartEntry.count - 1].x + 300
             var i = 0
             // Add 1 hour of predictions
@@ -96,11 +98,13 @@ extension MainViewController {
         // create Basal graph data
         var chartEntry = [ChartDataEntry]()
         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
+        if basalData.count > 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
@@ -117,9 +121,11 @@ extension MainViewController {
         
         // Boluses
         var chartEntryBolus = [ChartDataEntry]()
-        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)
+        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)
+            }
         }
         let lineBolus = LineChartDataSet(entries:chartEntryBolus, label: "")
         lineBolus.circleRadius = 7
@@ -137,9 +143,11 @@ extension MainViewController {
         
         // Carbs
         var chartEntryCarbs = [ChartDataEntry]()
-        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)
+        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)
+            }
         }
         let lineCarbs = LineChartDataSet(entries:chartEntryCarbs, label: "")
         lineCarbs.circleRadius = 7
@@ -219,8 +227,9 @@ extension MainViewController {
         }
         
         
-        
-        createSmallBGGraph(bgChartEntry: bgChartEntry, colors: colors)
+        if bgData.count > 0 {
+            createSmallBGGraph(bgChartEntry: bgChartEntry, colors: colors)
+        }
         
     }