StatsView.swift 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // StatsView.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. import Charts
  10. import UIKit
  11. extension MainViewController {
  12. func updateStats()
  13. {
  14. if bgData.count > 0 {
  15. let stats = StatsData(bgData: bgData)
  16. statsLowPercent.text = String(format:"%.1f%", stats.percentLow) + "%"
  17. statsInRangePercent.text = String(format:"%.1f%", stats.percentRange) + "%"
  18. statsHighPercent.text = String(format:"%.1f%", stats.percentHigh) + "%"
  19. statsAvgBG.text = bgUnits.toDisplayUnits(String(format:"%.0f%", stats.avgBG))
  20. if UserDefaultsRepository.useIFCC.value {
  21. statsEstA1C.text = String(format:"%.0f%", stats.a1C)
  22. }
  23. else
  24. {
  25. statsEstA1C.text = String(format:"%.1f%", stats.a1C)
  26. }
  27. statsStdDev.text = String(format:"%.2f%", stats.stdDev)
  28. createStatsPie(pieData: stats.pie)
  29. }
  30. }
  31. func createStatsPie(pieData: [DataStructs.pieData]) {
  32. statsPieChart.legend.enabled = false
  33. statsPieChart.drawEntryLabelsEnabled = false
  34. statsPieChart.drawHoleEnabled = false
  35. statsPieChart.rotationEnabled = false
  36. var chartEntry = [PieChartDataEntry]()
  37. var colors = [NSUIColor]()
  38. for i in 0..<pieData.count{
  39. var slice = Double(pieData[i].value)
  40. if slice == 0 { slice = 0.1 }
  41. let value = PieChartDataEntry(value: slice)
  42. chartEntry.append(value)
  43. if pieData[i].name == "high" {
  44. colors.append(NSUIColor.systemYellow)
  45. } else if pieData[i].name == "low" {
  46. colors.append(NSUIColor.systemRed)
  47. } else {
  48. colors.append(NSUIColor.systemGreen)
  49. }
  50. }
  51. let set = PieChartDataSet(entries: chartEntry, label: "")
  52. set.drawIconsEnabled = false
  53. set.sliceSpace = 2
  54. set.drawValuesEnabled = false
  55. set.valueLineWidth = 0
  56. set.formLineWidth = 0
  57. set.sliceSpace = 0
  58. set.colors.removeAll()
  59. if colors.count > 0 {
  60. for i in 0..<colors.count{
  61. set.addColor(colors[i])
  62. }
  63. }
  64. let data = PieChartData(dataSet: set)
  65. statsPieChart.data = data
  66. }
  67. }