Jon Mårtensson 3 лет назад
Родитель
Сommit
3ba29a1996

+ 1 - 1
Config.xcconfig

@@ -1,5 +1,5 @@
 APP_DISPLAY_NAME = FreeAPS X
-APP_VERSION = 0.4.3
+APP_VERSION = 0.4.4
 APP_BUILD_NUMBER = 1
 BRANCH = bdb
 DEVELOPER_TEAM = ##TEAM_ID##

+ 94 - 92
FreeAPS/Resources/json/defaults/monitor/statistics.json

@@ -16,97 +16,99 @@
     "TDD" : 0,
     "Carbs_24h":  0,
     "GlucoseStorage_Days" : 0,
-    "TIR" : [
-      {
-        "TIR" : [
-          {
-            "oneDay" : 0,
-            "sevenDays" : 0,
-            "thirtyDays" : 0,
-            "ninetyDays" : 0,
-            "totalDays" : 0
-          }
-        ],
-        "Hypos" : [
-          {
-            "oneDay" : 0,
-            "sevenDays" : 0,
-            "thirtyDays" : 0,
-            "ninetyDays" : 0,
-            "totalDays" : 0
-          }
-        ],
-        "Hypers" : [
-          {
-            "oneDay" : 0,
-            "sevenDays" : 0,
-            "thirtyDays" : 0,
-            "ninetyDays" : 0,
-            "totalDays" : 0
-          }
-        ]
-      }
-    ],
-    "Glucose" : [
-      {
-        "Average" : [
-          {
-            "oneDay_mmol" : 0,
-            "oneDay" : 0,
-            "sevenDays_mmol" : 0,
-            "sevenDays" : 0,
-            "thirtyDays_mmol" : 0,
-            "thirtyDays" : 0,
-            "ninetyDays_mmol" : 0,
-            "ninetyDays" : 0,
-            "totalDays_mmol" : 0,
-            "totalDays" : 0
-          }
-        ],
-        "Median" : [
-          {
-            "oneDay_mmol" : 0,
-            "oneDay" : 0,
-            "sevenDays_mmol" : 0,
-            "sevenDays" : 0,
-            "thirtyDays_mmol":  0,
-            "thirtyDays" : 0,
-            "ninetyDays_mmol" : 0,
-            "ninetyDays" : 0,
-            "totalDays_mmol" : 0,
-            "totalDays" : 0
-          }
-        ]
-      }
-    ],
-    "HbA1c" : [
-      {
-        "oneDay_mmolMol" : 0,
-        "oneDay" : 0,
-        "sevenDays_mmolMol" : 0,
-        "sevenDays" : 0,
-        "thirtyDays_mmolMol" : 0,
-        "thirtyDays" : 0,
-        "ninetyDays_mmolMol" : 0,
-        "ninetyDays" : 0,
-        "totalDays_mmolMol" : 0,
-        "totalDays" : 0
-      }
-    ],
-    "LoopStats" : [
-      {
-        "loops" : 0,
-        "errors" : 0,
-        "success_rate" : 0,
-        "avg_interval" : 0,
-        "median_interval" : 0,
-        "min_interval" : 0,
-        "max_interval" : 0,
-        "avg_duration" : 0,
-        "median_duration" : 0,
-        "min_duration" : 0,
-        "max_duration" : 0
-      }
-    ]
+    "Statistics" : {
+      "Distribution" : [
+        {
+          "TIR" : [
+            {
+              "oneDay" : 0,
+              "sevenDays" : 0,
+              "thirtyDays" : 0,
+              "ninetyDays" : 0,
+              "totalDays" : 0
+            }
+          ],
+          "Hypos" : [
+            {
+              "oneDay" : 0,
+              "sevenDays" : 0,
+              "thirtyDays" : 0,
+              "ninetyDays" : 0,
+              "totalDays" : 0
+            }
+          ],
+          "Hypers" : [
+            {
+              "oneDay" : 0,
+              "sevenDays" : 0,
+              "thirtyDays" : 0,
+              "ninetyDays" : 0,
+              "totalDays" : 0
+            }
+          ]
+        }
+      ],
+      "Glucose" : [
+        {
+          "Average" : [
+            {
+              "oneDay_mmol" : 0,
+              "oneDay" : 0,
+              "sevenDays_mmol" : 0,
+              "sevenDays" : 0,
+              "thirtyDays_mmol" : 0,
+              "thirtyDays" : 0,
+              "ninetyDays_mmol" : 0,
+              "ninetyDays" : 0,
+              "totalDays_mmol" : 0,
+              "totalDays" : 0
+            }
+          ],
+          "Median" : [
+            {
+              "oneDay_mmol" : 0,
+              "oneDay" : 0,
+              "sevenDays_mmol" : 0,
+              "sevenDays" : 0,
+              "thirtyDays_mmol":  0,
+              "thirtyDays" : 0,
+              "ninetyDays_mmol" : 0,
+              "ninetyDays" : 0,
+              "totalDays_mmol" : 0,
+              "totalDays" : 0
+            }
+          ]
+        }
+      ],
+      "HbA1c" : [
+        {
+          "oneDay_mmolMol" : 0,
+          "oneDay" : 0,
+          "sevenDays_mmolMol" : 0,
+          "sevenDays" : 0,
+          "thirtyDays_mmolMol" : 0,
+          "thirtyDays" : 0,
+          "ninetyDays_mmolMol" : 0,
+          "ninetyDays" : 0,
+          "totalDays_mmolMol" : 0,
+          "totalDays" : 0
+        }
+      ],
+      "LoopCycles" : [
+        {
+          "loops" : 0,
+          "errors" : 0,
+          "success_rate" : 0,
+          "avg_interval" : 0,
+          "median_interval" : 0,
+          "min_interval" : 0,
+          "max_interval" : 0,
+          "avg_duration" : 0,
+          "median_duration" : 0,
+          "min_duration" : 0,
+          "max_duration" : 0
+        }
+      ]
+    }
   }
 ]

+ 16 - 25
FreeAPS/Sources/APS/APSManager.swift

@@ -1086,19 +1086,13 @@ final class BaseAPSManager: APSManager, Injectable {
         }
 
         let tir = TIR(
-            oneDay: Decimal(oneDay_.TIR),
-            sevenDays: Decimal(sevenDays_.TIR),
-            thirtyDays: Decimal(thirtyDays_.TIR),
-            ninetyDays: Decimal(ninetyDays_.TIR),
-            totalDays: Decimal(totalDays_.TIR)
+            oneDay: roundDecimal(Decimal(oneDay_.TIR), 1),
+            sevenDays: roundDecimal(Decimal(sevenDays_.TIR), 1),
+            thirtyDays: roundDecimal(Decimal(thirtyDays_.TIR), 1),
+            ninetyDays: roundDecimal(Decimal(ninetyDays_.TIR), 1),
+            totalDays: roundDecimal(Decimal(totalDays_.TIR), 1)
         )
 
-        /*
-         var TIR: [TIR]
-         var Hypos: [Hypos]
-         var Hypers: [Hypers]
-          */
-
         let hypo = Hypos(
             oneDay: Decimal(oneDay_.hypos),
             sevenDays: Decimal(sevenDays_.hypos),
@@ -1118,28 +1112,28 @@ final class BaseAPSManager: APSManager, Injectable {
         let TimeInRange = TIRs(TIR: [tir], Hypos: [hypo], Hypers: [hyper])
 
         let median = Median(
-            oneDay_mmol: medianCalculation(array: bgArray_1.map(\.bg_)).asMmolL,
+            oneDay_mmol: roundDecimal(medianCalculation(array: bgArray_1.map(\.bg_)).asMmolL, 1),
             oneDay: Decimal(medianCalculation(array: bgArray_1.map(\.bg_))),
-            sevenDays_mmol: medianCalculation(array: bgArray_7.map(\.bg_)).asMmolL,
+            sevenDays_mmol: roundDecimal(medianCalculation(array: bgArray_7.map(\.bg_)).asMmolL, 1),
             sevenDays: Decimal(medianCalculation(array: bgArray_7.map(\.bg_))),
-            thirtyDays_mmol: medianCalculation(array: bgArray_30.map(\.bg_)).asMmolL,
+            thirtyDays_mmol: roundDecimal(medianCalculation(array: bgArray_30.map(\.bg_)).asMmolL, 1),
             thirtyDays: Decimal(medianCalculation(array: bgArray_30.map(\.bg_))),
-            ninetyDays_mmol: medianCalculation(array: bgArray_90.map(\.bg_)).asMmolL,
+            ninetyDays_mmol: roundDecimal(medianCalculation(array: bgArray_90.map(\.bg_)).asMmolL, 1),
             ninetyDays: Decimal(medianCalculation(array: bgArray_90.map(\.bg_))),
             totalDays_mmol: roundDecimal(Decimal(medianBG).asMmolL, 2),
             totalDays: Decimal(medianBG)
         )
 
         let avgs = Average(
-            oneDay_mmol: roundDecimal(bg_1.asMmolL, 2),
+            oneDay_mmol: roundDecimal(bg_1.asMmolL, 1),
             oneDay: roundDecimal(bg_1, 0),
-            sevenDays_mmol: roundDecimal(bg_7.asMmolL, 2),
+            sevenDays_mmol: roundDecimal(bg_7.asMmolL, 1),
             sevenDays: roundDecimal(bg_7, 0),
-            thirtyDays_mmol: roundDecimal(bg_30.asMmolL, 2),
+            thirtyDays_mmol: roundDecimal(bg_30.asMmolL, 1),
             thirtyDays: roundDecimal(bg_30, 0),
-            ninetyDays_mmol: roundDecimal(bg_90.asMmolL, 2),
+            ninetyDays_mmol: roundDecimal(bg_90.asMmolL, 1),
             ninetyDays: roundDecimal(bg_90, 0),
-            totalDays_mmol: roundDecimal(bg_total.asMmolL, 2),
+            totalDays_mmol: roundDecimal(bg_total.asMmolL, 1),
             totalDays: roundDecimal(bg_total, 0)
         )
 
@@ -1175,12 +1169,9 @@ final class BaseAPSManager: APSManager, Injectable {
             TDD: roundDecimal(currentTDD, 2),
             Carbs_24h: carbTotal,
             GlucoseStorage_Days: Decimal(daysBG),
-            TIR: [TimeInRange],
-            Glucose: [avg],
-            HbA1c: [hbs],
-            LoopStats: [loopstat]
+            Statistics: Stats(Distribution: [TimeInRange], Glucose: [avg], HbA1c: [hbs], LoopCycles: [loopstat])
+            // LoopStats: [loopstat]
         )
-        // var uniqeEvents: [Statistics]
 
         storage.transaction { storage in
             storage.append(dailystat, to: file, uniqBy: \.createdAt)

+ 20 - 16
FreeAPS/Sources/Models/Statistics.swift

@@ -17,10 +17,7 @@ struct Statistics: JSON, Equatable {
     var TDD: Decimal
     var Carbs_24h: Decimal
     var GlucoseStorage_Days: Decimal
-    var TIR: [TIRs]
-    var Glucose: [Averages]
-    var HbA1c: [Hbs]
-    var LoopStats: [LoopCycles]
+    var Statistics: Stats
 
     init(
         createdAt: Date,
@@ -39,10 +36,7 @@ struct Statistics: JSON, Equatable {
         TDD: Decimal,
         Carbs_24h: Decimal,
         GlucoseStorage_Days: Decimal,
-        TIR: [TIRs],
-        Glucose: [Averages],
-        HbA1c: [Hbs],
-        LoopStats: [LoopCycles]
+        Statistics: Stats
     ) {
         self.createdAt = createdAt
         self.iPhone = iPhone
@@ -60,10 +54,7 @@ struct Statistics: JSON, Equatable {
         self.TDD = TDD
         self.Carbs_24h = Carbs_24h
         self.GlucoseStorage_Days = GlucoseStorage_Days
-        self.TIR = TIR
-        self.Glucose = Glucose
-        self.HbA1c = HbA1c
-        self.LoopStats = LoopStats
+        self.Statistics = Statistics
     }
 
     static func == (lhs: Statistics, rhs: Statistics) -> Bool {
@@ -93,10 +84,7 @@ extension Statistics {
         case TDD
         case Carbs_24h
         case GlucoseStorage_Days
-        case TIR
-        case Glucose
-        case HbA1c
-        case LoopStats
+        case Statistics
     }
 }
 
@@ -188,6 +176,13 @@ struct Hypers: JSON, Equatable {
     var totalDays: Decimal
 }
 
+struct Stats: JSON, Equatable {
+    var Distribution: [TIRs]
+    var Glucose: [Averages]
+    var HbA1c: [Hbs]
+    var LoopCycles: [LoopCycles]
+}
+
 extension LoopCycles {
     private enum CodingKeys: String, CodingKey {
         case loops
@@ -268,3 +263,12 @@ extension Hypers {
         case totalDays
     }
 }
+
+extension Stats {
+    private enum CodingKeys: String, CodingKey {
+        case Distribution
+        case Glucose
+        case HbA1c
+        case LoopCycles
+    }
+}