Blame view

Twear/Home/Cell/TrainCell.swift 2.76 KB
75d24c15   yangbin   123
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
  //
  //  TrainCell.swift
  //  Twear
  //
  //  Created by yangbin on 2021/11/16.
  //
  
  import UIKit
  import Charts
  import SwiftDate
  
  class TrainCell: UICollectionViewCell {
      
      @IBOutlet weak var lengthLabel: UILabel!
      @IBOutlet weak var dateLabel: UILabel!
      @IBOutlet weak var noDataImageView: UIImageView!
      @IBOutlet weak var barChartView: BarChartView!
      
      var trainHistory: [TrainModel] = [] {
          didSet {
              let count = trainHistory.count
              if count == 0 {
                  lengthLabel.text = "--"
                  dateLabel.text = LocString("暂无数据")
                  noDataImageView.isHidden = false
                  barChartView.isHidden = true
              } else {
                  lengthLabel.text = "\(trainHistory[count-1].length/60)"
                  dateLabel.text = trainHistory[count-1].date!.toString(.custom("yyyy/MM/dd"))
                  updateChartView(trainHistory)
                  noDataImageView.isHidden = true
                  barChartView.isHidden = false
              }
          }
      }
      private func updateChartView(_ trainHistory: [TrainModel]) {
          setupChartView()
          var lengthArray = [Int](repeating: 0, count: 12)
          var dataEntries = [BarChartDataEntry]()
          for train in trainHistory {
              for i in 0..<train.length/60 {
                  let date = train.date! + i.minutes
                  if date.isInside(date: train.date!, granularity: .day) {
                      lengthArray[date.hour/2] += 1
                  } else {
                      break
                  }
              }
          }
          
          for i in 0..<12 {
              let length = lengthArray[i]
              dataEntries.append(BarChartDataEntry(x: Double(i), yValues: [Double(length), Double(120-length)]))
          }
  
          let dateSet = BarChartDataSet(entries: dataEntries)
          dateSet.colors = [UIColor.rgbColorFromHex(0x03FFF0), UIColor.rgbColorFromHex(0xF2F2F2)]
          dateSet.drawValuesEnabled = false
          dateSet.highlightEnabled = false
  
          let chartData = BarChartData(dataSets: [dateSet])
          chartData.barWidth = 0.4
  
          barChartView.data = chartData
      }
      
      func setupChartView() {
          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 = 120
          leftAxis.enabled = false
          
          let xAxis = barChartView.xAxis
          xAxis.axisMinimum = -0.5
          xAxis.axisMaximum = 11.5
          xAxis.enabled = false
      }
      
      override func awakeFromNib() {
          super.awakeFromNib()
          // Initialization code
      }
  
  }