فهرست منبع

Override Graph

Jon Fawcett 6 سال پیش
والد
کامیت
96e455f2d2
3فایلهای تغییر یافته به همراه67 افزوده شده و 11 حذف شده
  1. 47 4
      LoopFollow/Controllers/Graphs.swift
  2. 3 2
      LoopFollow/Controllers/NightScout.swift
  3. 17 5
      LoopFollow/helpers/Chart.swift

+ 47 - 4
LoopFollow/Controllers/Graphs.swift

@@ -28,10 +28,6 @@ extension MainViewController {
         }
     }
 
-    // data.addDataSet(lineBG) // Dataset 0
-    // data.addDataSet(lineBasal) // Dataset 1
-    // data.addDataSet(lineBolus) // Dataset 2
-    // data.addDataSet(lineCarbs) // Dataset 3
     func createGraph(){
         self.BGChart.clear()
         // Create the BG Graph Data
@@ -124,6 +120,18 @@ extension MainViewController {
         lineBasalScheduled.drawValuesEnabled = false
         lineBasalScheduled.lineDashLengths = [10.0, 5.0]
         
+        // create Override graph data
+        var chartOverrideEntry = [ChartDataEntry]()
+        let lineOverride = LineChartDataSet(entries:chartOverrideEntry, label: "")
+        lineOverride.setDrawHighlightIndicators(false)
+        lineOverride.setColor(NSUIColor.systemTeal, alpha: 0.8  )
+        lineOverride.lineWidth = 10
+        lineOverride.drawFilledEnabled = false
+        lineOverride.drawCirclesEnabled = false
+        lineOverride.axisDependency = YAxis.AxisDependency.right
+        lineOverride.highlightEnabled = true
+        lineOverride.drawValuesEnabled = false
+        
         // Setup the chart data of all lines
         let data = LineChartData()
         data.addDataSet(lineBG) // Dataset 0
@@ -131,6 +139,7 @@ extension MainViewController {
         data.addDataSet(lineBolus) // Dataset 2
         data.addDataSet(lineCarbs) // Dataset 3
         data.addDataSet(lineBasalScheduled) // Dataset 4
+        data.addDataSet(lineOverride) // Dataset 5
         data.setValueFont(UIFont.systemFont(ofSize: 12))
         
         // Add marker popups for bolus and carbs
@@ -422,5 +431,39 @@ extension MainViewController {
         BGChartFull.data = data2
     }
     
+    
+    func updateOverrideGraph() {
+        var dataIndex = 5
+        var chart = BGChart.lineData!.dataSets[dataIndex] as! LineChartDataSet
+        chart.clear()
+        
+        var colors = [NSUIColor]()
+        for i in 0..<overrideData.count{
+            let value = ChartDataEntry(x: Double(overrideData[i].date), y: Double(overrideData[i].sgv), data: overrideData[i].value)
+            BGChart.data?.dataSets[dataIndex].addEntry(value)
+            
+            if Double(overrideData[i].value) == 1.0 {
+                colors.append(NSUIColor.systemTeal.withAlphaComponent(0.0))
+            } else {
+                colors.append(NSUIColor.systemTeal)
+            }
+        }
+        
+        // Set Colors
+        let line = BGChart.lineData!.dataSets[dataIndex] as! LineChartDataSet
+        line.colors.removeAll()
+        line.circleColors.removeAll()
+        
+        if colors.count > 0 {
+            for i in 0..<colors.count{
+                chart.addColor(colors[i])
+                chart.circleColors.append(colors[i])
+            }
+        }
+        
+        BGChart.data?.dataSets[dataIndex].notifyDataSetChanged()
+        BGChart.data?.notifyDataChanged()
+        BGChart.notifyDataSetChanged()
+    }
   
 }

+ 3 - 2
LoopFollow/Controllers/NightScout.swift

@@ -453,13 +453,13 @@ extension MainViewController {
                     if let isActive = override["active"] as? Bool {
                         if isActive {
                             if let multiplier = override["multiplier"] as? Double {
-                                let override = DataStructs.overrideGraphStruct(value: multiplier, date: timestamp, sgv: 200)
+                                let override = DataStructs.overrideGraphStruct(value: multiplier, date: timestamp, sgv: 40)
                                 overrideData.append(override)
                             }
                             
                         } else {
                             let multiplier = 1.0 as Double
-                            let override = DataStructs.overrideGraphStruct(value: multiplier, date: timestamp, sgv: 200)
+                            let override = DataStructs.overrideGraphStruct(value: multiplier, date: timestamp, sgv: 40)
                             overrideData.append(override)
                         }
                     }
@@ -467,6 +467,7 @@ extension MainViewController {
             }
         }
         overrideData.reverse()
+        updateOverrideGraph()
     }
     
     // NS Cage Web Call

+ 17 - 5
LoopFollow/helpers/Chart.swift

@@ -41,6 +41,16 @@ final class ChartYDataValueFormatter: IValueFormatter {
     }
 }
 
+final class ChartYOverrideValueFormatter: IValueFormatter {
+    func stringForValue(_ value: Double, entry: ChartDataEntry, dataSetIndex: Int, viewPortHandler: ViewPortHandler?) -> String {
+        if entry.data != nil {
+            return entry.data as? String ?? ""
+        } else {
+            return ""
+        }
+    }
+}
+
 final class ChartYMMOLValueFormatter: IAxisValueFormatter {
     func stringForValue(_ value: Double, axis: AxisBase?) -> String {
         return bgUnits.toDisplayUnits(String(value))
@@ -144,11 +154,13 @@ class PillMarker: MarkerImage {
     }
 
     override func refreshContent(entry: ChartDataEntry, highlight: Highlight) {
-         if entry.data != nil {
-                   labelText = entry.data as? String ?? ""
-               } else {
-                   labelText = String(entry.y)
-               }
+        if entry.data != nil {
+            var multipler = entry.data as! Double * 100.0
+            labelText = String(format: "%.0f%%", multipler)
+            //labelText = entry.data as? String ?? ""
+        } else {
+            labelText = String(entry.y)
+        }
     }
 
     private func customString(_ value: Double) -> String {