Stats.swift 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // Stats.swift
  3. // LoopFollow
  4. //
  5. // Created by Jon Fawcett on 6/23/20.
  6. // Copyright © 2020 Jon Fawcett. All rights reserved.
  7. //
  8. import Foundation
  9. class StatsData {
  10. var countLow: Int
  11. var percentLow: Float
  12. var percentRange: Float
  13. var percentHigh: Float
  14. var countRange: Int
  15. var countHigh: Int
  16. var totalGlucose: Int
  17. var avgBG: Float
  18. var a1C: Float
  19. var pie: [DataStructs.pieData]
  20. init(bgData: [DataStructs.sgvData]) {
  21. self.countLow = 0
  22. self.countRange = 0
  23. self.countHigh = 0
  24. self.totalGlucose = 0
  25. self.a1C = 0.0
  26. for i in 0..<bgData.count {
  27. // Set low/range/high counts for pie chart and %'s
  28. if Float(bgData[i].sgv) <= UserDefaultsRepository.lowLine.value {
  29. self.countLow += 1
  30. } else if Float(bgData[i].sgv) >= UserDefaultsRepository.highLine.value {
  31. self.countHigh += 1
  32. } else {
  33. self.countRange += 1
  34. }
  35. // set total bg for average
  36. totalGlucose += bgData[i].sgv
  37. }
  38. // Set Percents
  39. percentLow = Float(countLow) / Float(bgData.count) * 100
  40. percentRange = Float(countRange) / Float(bgData.count) * 100
  41. percentHigh = Float(countHigh) / Float(bgData.count) * 100
  42. pie = [
  43. DataStructs.pieData(name: "low", value: Double(percentLow)),
  44. DataStructs.pieData(name: "range", value: Double(percentRange)),
  45. DataStructs.pieData(name: "high", value: Double(percentHigh))]
  46. // Set Average
  47. avgBG = Float(totalGlucose / bgData.count)
  48. if UserDefaultsRepository.units.value == "mg/dL" {
  49. a1C = (46.7 + Float(avgBG)) / 28.7
  50. } else {
  51. a1C = (46.7 + Float(avgBG)) / 28.7
  52. // Keep this for later.
  53. // https://github.com/nightscout/nightguard/pull/72
  54. // a1C = (((46.7 + Float(avgBG)) / 28.7) - 2.152) / 0.09148
  55. }
  56. }
  57. }