Sfoglia il codice sorgente

Add: Pred Min-Max. Fix: infoTable Defaults

Jon Fawcett 6 anni fa
parent
commit
20f04a51d9

+ 4 - 0
LoopFollow/Controllers/NightScout.swift

@@ -443,6 +443,10 @@ extension MainViewController {
                                 i += 1
                             }
                         }
+                        let predMin = prediction.min()
+                        let predMax = prediction.max()
+                        tableData[9].value = String(predMin!) + "-" + String(predMax!)
+                        
                         if UserDefaultsRepository.graphPrediction.value {
                             updatePredictionGraph()
                         }

+ 12 - 50
LoopFollow/ViewControllers/InfoDisplaySettingsViewController.swift

@@ -13,10 +13,7 @@ import EventKitUI
 
 class InfoDisplaySettingsViewController: FormViewController {
     var appStateController: AppStateController?
-    
-    var infoNames:   [String] = []
-    var infoSort:    [Int]    = []
-    var infoVisible: [Bool]   = []
+
     
     override func viewDidLoad() {
         print("Display Load")
@@ -25,34 +22,6 @@ class InfoDisplaySettingsViewController: FormViewController {
             overrideUserInterfaceStyle = .dark
         }
          
-        // get the info table
-        let userDefaults = UserDefaults.standard
-
-        // names
-        self.infoNames = userDefaults.stringArray(forKey:InfoNames) ?? [String]()
-        if(self.infoNames.count == 0) {
-            self.infoNames = DefaultInfoNames
-            userDefaults.set(self.infoNames, forKey:InfoNames)
-        }
-        
-        // sort
-        self.infoSort = userDefaults.array(forKey:InfoSort) as? [Int] ?? [Int]()
-        if(self.infoSort.count != self.infoNames.count) {
-            self.infoSort = []
-            for i in 0..<self.infoNames.count {
-                self.infoSort.append(i)
-            }
-            userDefaults.set(self.infoSort, forKey:InfoSort)
-        }
-        // visible
-        self.infoVisible = userDefaults.array(forKey:InfoVisible) as? [Bool] ?? [Bool]()
-        if(self.infoVisible.count != self.infoNames.count) {
-            self.infoVisible = []
-            for _ in 0..<self.infoNames.count {
-                self.infoVisible.append(true)
-            }
-            userDefaults.set(self.infoVisible, forKey:InfoVisible)
-        }
         createForm()
     }
     
@@ -63,19 +32,16 @@ class InfoDisplaySettingsViewController: FormViewController {
            // TODO: add the other display values
            $0.tag = "InfoDisplay"
            
-            for i in 0..<self.infoNames.count {
+            for i in 0..<UserDefaultsRepository.infoNames.value.count {
               $0 <<< TextRow() { row in
-                if(self.infoVisible[self.infoSort[i]]) {
-                    row.title = "\u{2713}\t\(self.infoNames[self.infoSort[i]])"
+                if(UserDefaultsRepository.infoVisible.value[UserDefaultsRepository.infoSort.value[i]]) {
+                    row.title = "\u{2713}\t\(UserDefaultsRepository.infoNames.value[UserDefaultsRepository.infoSort.value[i]])"
                  } else {
-                    row.title = "\u{2001}\t\(self.infoNames[self.infoSort[i]])"
+                    row.title = "\u{2001}\t\(UserDefaultsRepository.infoNames.value[UserDefaultsRepository.infoSort.value[i]])"
                  }
               }.onCellSelection{(cell, row) in
                 let i = row.indexPath!.row
-                self.infoVisible[self.infoSort[i]] = !self.infoVisible[self.infoSort[i]]
-                
-                // save info visible
-                UserDefaults.standard.set(self.infoVisible, forKey:InfoVisible)
+                UserDefaultsRepository.infoVisible.value[UserDefaultsRepository.infoSort.value[i]] = !UserDefaultsRepository.infoVisible.value[UserDefaultsRepository.infoSort.value[i]]
                 
                 self.tableView.reloadData()
                 
@@ -84,10 +50,10 @@ class InfoDisplaySettingsViewController: FormViewController {
               }.cellSetup { (cell, row) in
                  cell.textField.isUserInteractionEnabled = false
               }.cellUpdate{ (cell, row) in
-                 if(self.infoVisible[self.infoSort[i]]) {
-                    row.title = "\u{2713}\t\(self.infoNames[self.infoSort[i]])"
+                if(UserDefaultsRepository.infoVisible.value[UserDefaultsRepository.infoSort.value[i]]) {
+                    row.title = "\u{2713}\t\(UserDefaultsRepository.infoNames.value[UserDefaultsRepository.infoSort.value[i]])"
                  } else {
-                    row.title = "\u{2001}\t\(self.infoNames[self.infoSort[i]])"
+                    row.title = "\u{2001}\t\(UserDefaultsRepository.infoNames.value[UserDefaultsRepository.infoSort.value[i]])"
                  }
                  self.appStateController!.infoDataSettingsChanged = true
               }
@@ -110,15 +76,11 @@ class InfoDisplaySettingsViewController: FormViewController {
         if(destIndex != sourceIndex ) {
            self.appStateController!.infoDataSettingsChanged = true
            
-           let tmpVal = self.infoSort[sourceIndex]
-           self.infoSort.remove(at:sourceIndex)
-           self.infoSort.insert(tmpVal, at:destIndex)
+            let tmpVal = UserDefaultsRepository.infoSort.value[sourceIndex]
+            UserDefaultsRepository.infoSort.value.remove(at:sourceIndex)
+            UserDefaultsRepository.infoSort.value.insert(tmpVal, at:destIndex)
        
-           // save to defaults
-           UserDefaults.standard.set(self.infoSort, forKey:InfoSort)
         }
         
-        //print("Source Row: \(sourceIndexPath.row); Source Section: \(sourceIndexPath.section)")
-        //print("Destination Row: \(destinationIndexPath.row); Destination Section: \(destinationIndexPath.section)")
     }
  }

+ 6 - 52
LoopFollow/ViewControllers/MainViewController.swift

@@ -11,21 +11,6 @@ import Charts
 import EventKit
 import ShareClient
 
-let DefaultInfoNames = [
-   "IOB",
-   "COB",
-   "Basal",
-   "Override",
-   "Battery",
-   "Pump",
-   "SAGE",
-   "CAGE",
-   "Rec. Bolus"
-]
-let InfoNames = "infoNames"
-let InfoSort = "infoSort"
-let InfoVisible = "infoVisible"
-
 class MainViewController: UIViewController, UITableViewDataSource, ChartViewDelegate, UNUserNotificationCenterDelegate {
     
     @IBOutlet weak var BGText: UILabel!
@@ -98,9 +83,6 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     var calTimer = Timer()
     
     // Info Table Setup
-    var infoNames : [String] = []
-    var infoSort : [Int] = []
-    var infoVisible: [Bool] = []
     var tableData : [infoData] = []
     var derivedTableData: [infoData] = []
     
@@ -139,6 +121,8 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
         super.viewDidLoad()
 
         
+
+ 
         // table view
         //infoTable.layer.borderColor = UIColor.darkGray.cgColor
         //infoTable.layer.borderWidth = 1.0
@@ -149,20 +133,11 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
         infoTable.bounces = false
         infoTable.addBorder(toSide: .Left, withColor: UIColor.darkGray.cgColor, andThickness: 2)
       
-        // get the info table setup
-        let userDefaults = UserDefaults.standard
-
-        // names
-        self.infoNames = userDefaults.stringArray(forKey:InfoNames) ?? [String]()
-        if(self.infoNames.count == 0) {
-            self.infoNames = DefaultInfoNames
-            userDefaults.set(self.infoNames, forKey:InfoNames)
-        }
         
         // initialize the tableData
         self.tableData = []
-        for i in 0..<self.infoNames.count {
-            self.tableData.append(infoData(name:self.infoNames[i], value:""))
+        for i in 0..<UserDefaultsRepository.infoNames.value.count {
+            self.tableData.append(infoData(name:UserDefaultsRepository.infoNames.value[i], value:""))
         }
         createDerivedData()
       
@@ -266,32 +241,11 @@ class MainViewController: UIViewController, UITableViewDataSource, ChartViewDele
     }
     
     private func createDerivedData() {
-      // get the info table
-        let userDefaults = UserDefaults.standard
-         
-        // sort
-        self.infoSort = userDefaults.array(forKey:InfoSort) as? [Int] ?? [Int]()
-        if(self.infoSort.count != self.infoNames.count) {
-            self.infoSort = []
-            for i in 0..<self.infoNames.count {
-                self.infoSort.append(i)
-            }
-            userDefaults.set(self.infoSort, forKey:InfoSort)
-        }
-        // visible
-        infoVisible = userDefaults.array(forKey:InfoVisible) as? [Bool] ?? [Bool]()
-        if(self.infoVisible.count != self.infoNames.count) {
-            self.infoVisible = []
-            for _ in 0..<self.infoNames.count {
-                self.infoVisible.append(true)
-            }
-            userDefaults.set(self.infoVisible, forKey:InfoVisible)
-        }
         
         self.derivedTableData = []
         for i in 0..<self.tableData.count {
-            if(self.infoVisible[self.infoSort[i]]) {
-                self.derivedTableData.append(self.tableData[self.infoSort[i]])
+            if(UserDefaultsRepository.infoVisible.value[UserDefaultsRepository.infoSort.value[i]]) {
+                self.derivedTableData.append(self.tableData[UserDefaultsRepository.infoSort.value[i]])
             }
         }
    }

+ 14 - 1
LoopFollow/repository/UserDefaults.swift

@@ -13,6 +13,19 @@ class UserDefaultsRepository {
 
     // DisplayValues total
     static let infoDataTotal = UserDefaultsValue<Int>(key: "infoDataTotal", default: 0)
+    static let infoNames = UserDefaultsValue<[String]>(key: "infoNames", default: [
+        "IOB",
+        "COB",
+        "Basal",
+        "Override",
+        "Battery",
+        "Pump",
+        "SAGE",
+        "CAGE",
+        "Rec. Bolus",
+        "Pred. Min-Max"])
+    static let infoSort = UserDefaultsValue<[Int]>(key: "infoSort", default: [0,1,2,3,4,5,6,7,8,9])
+    static let infoVisible = UserDefaultsValue<[Bool]>(key: "infoVisible", default: [true,true,true,true,true,true,true,true,true,true])
     
     // Nightscout Settings
     static let url = UserDefaultsValue<String>(key: "url", default: "")
@@ -60,7 +73,7 @@ class UserDefaultsRepository {
         static let downloadBolus = UserDefaultsValue<Bool>(key: "downloadBolus", default: true)
         static let downloadCarbs = UserDefaultsValue<Bool>(key: "downloadCarbs", default: true)
         static let downloadPrediction = UserDefaultsValue<Bool>(key: "downloadPrediction", default: true)
-       static let graphBasal = UserDefaultsValue<Bool>(key: "graphBasal", default: true)
+        static let graphBasal = UserDefaultsValue<Bool>(key: "graphBasal", default: true)
         static let graphBolus = UserDefaultsValue<Bool>(key: "graphBolus", default: true)
         static let graphCarbs = UserDefaultsValue<Bool>(key: "graphCarbs", default: true)
         static let graphPrediction = UserDefaultsValue<Bool>(key: "graphPrediction", default: true)