TrainCell.swift
2.93 KB
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
//
// 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!
@IBOutlet weak var unitLabel: UILabel!
@IBOutlet weak var titleLabel: UILabel!
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()
titleLabel.text = LocString("训练")
unitLabel.text = LocString("分钟min")
// Initialization code
}
}