TrainCell.swift 2.93 KB
//
//  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
    }

}