Blame view

HDFwear/Home/Cell/MettCell.swift 3.43 KB
f2cf74c7   yangbin   1.0.20(4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
  //
  //  MettCell.swift
  //  Twear
  //
  //  Created by yangbin on 2022/3/1.
  //
  
  import UIKit
  import Charts
  
  class MettCell: UICollectionViewCell {
  
      @IBOutlet weak var titleLabel: UILabel!
      @IBOutlet weak var valueLabel: UILabel!
      @IBOutlet weak var dateLabel: UILabel!
      @IBOutlet weak var noDataImageView: UIImageView!
      @IBOutlet weak var barChartView: BarChartView!
      
      var mettArray: [MettModel] = [] {
          didSet {
              if mettArray.count == 0 {
                  valueLabel.toUnitMode(text: "--", unit: " MET-min", font: BoldFont(25), unitFont: RegularFont(11), unitColor: UIColor.rgbColorFromHex(0x808080))
                  dateLabel.text = LocString("暂无数据")
                  noDataImageView.isHidden = false
                  barChartView.isHidden = true
              } else {
                  let mett = mettArray.last!
                  valueLabel.toUnitMode(text: "\(mett.value)", unit: " MET-min", font: BoldFont(25), unitFont: RegularFont(11), unitColor: UIColor.rgbColorFromHex(0x808080))
                  dateLabel.text = mett.date!.toString(.custom("yyyy/MM/dd"))
                  updateChartView(mettArray)
                  noDataImageView.isHidden = true
                  barChartView.isHidden = false
              }
          }
      }
      
      private func updateChartView(_ mettArray: [MettModel]) {
          var maxValue = mettArray.max(\.value)?.value ?? 1
          if maxValue == 0 {
              maxValue = 1
          }
          setupChartView(maxValue: maxValue)
      
          var dataEntries = [BarChartDataEntry]()
          
          var mett = MettModel(value: 0, date: Date().dateAtStartOf(.day))
          
          for i in 0..<7 {
              var value = 0
              if i < mettArray.count {
                  value = mettArray[i].value
                  if mettArray[i].value > 0 {
                      mett = mettArray[i]
                      valueLabel.toUnitMode(text: "\(mett.value)", unit: " MET-min", font: BoldFont(25), unitFont: RegularFont(11), unitColor: UIColor.rgbColorFromHex(0x808080))
                      dateLabel.text = mett.date!.toString(.custom("yyyy/MM/dd"))
                  }
              }
              dataEntries.append(BarChartDataEntry(x: Double(i), yValues: [Double(value), Double(maxValue-value)]))
          }
          
          
          
          let dataSet = BarChartDataSet(entries: dataEntries)
          dataSet.colors = [UIColor.rgbColorFromHex(0x1D8FF7), UIColor.rgbColorFromHex(0xF2F2F2)]
          dataSet.drawValuesEnabled = false
          dataSet.highlightEnabled = false
  
          let chartData = BarChartData(dataSets: [dataSet])
          chartData.barWidth = 0.45
          barChartView.data = chartData
      }
      
      func setupChartView(maxValue: Int) {
          barChartView.chartDescription?.enabled = false
          barChartView.legend.enabled = false
          barChartView.setScaleEnabled(false)
          barChartView.rightAxis.enabled = false
          
          let leftAxis = barChartView.leftAxis
          leftAxis.axisMinimum = 0 //设置左侧Y轴最小值
          leftAxis.axisMaximum = Double(maxValue)
          leftAxis.enabled = false
          
          let xAxis = barChartView.xAxis
          xAxis.axisMinimum = -0.45
          xAxis.axisMaximum = 6.45
          xAxis.granularity = 1 //间隔
          xAxis.enabled = false
      }
      
      
      override func awakeFromNib() {
          super.awakeFromNib()
          titleLabel.text = LocString("梅脱")
  //        lineChartView.isUserInteractionEnabled = false
          // Initialization code
      }
  
  }