MettCell.swift 3.43 KB
//
//  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
    }

}