BloodOxygenCell.swift 3.06 KB
//
//  BloodOxygenCell.swift
//  Twear
//
//  Created by yangbin on 2021/11/16.
//

import UIKit
import Charts

class BloodOxygenCell: UICollectionViewCell {

    @IBOutlet weak var boValueLabel: UILabel!
    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var noDataLabel: UILabel!
    @IBOutlet weak var noDataImageView: UIImageView!
    @IBOutlet weak var lineChartView: LineChartView!
    @IBOutlet weak var titleLabel: UILabel!
    var boHistory: [BloodOxygenModel] = [] {
        didSet {
            let count = boHistory.count
            if count == 0 {
                boValueLabel.text = ""
                dateLabel.text = ""
                noDataLabel.isHidden = false
                lineChartView.isHidden = true
            } else {
                boValueLabel.text = "\(boHistory[count-1].value)%"
                dateLabel.text = boHistory[count-1].date!.toString(.custom("MM/dd"))
                updateChartView(boHistory)
                noDataLabel.isHidden = true
                lineChartView.isHidden = false
            }
        }
    }
    
    
    
    private func updateChartView(_ boHistory: [BloodOxygenModel]) {
        setupChartView()
   
        var dataEntries = [ChartDataEntry]()
        for (i, bo) in boHistory.enumerated() {
            dataEntries.append(ChartDataEntry(x: Double(i), y: Double(bo.value)))
        }
        if dataEntries.count == 1 {
            dataEntries.append(ChartDataEntry(x: dataEntries[0].x+0.5, y: dataEntries[0].y))
        }
        let dataSet = LineChartDataSet(entries: dataEntries, label: nil)
        dataSet.drawCirclesEnabled = false
        dataSet.drawValuesEnabled = false
        dataSet.mode = .horizontalBezier
        dataSet.setDrawHighlightIndicators(false)
        dataSet.setColor(UIColor.rgbColorFromHex(0xFF8F00))
        dataSet.lineWidth = 1
        dataSet.drawFilledEnabled = true
        
        let gradientColors = [UIColor.rgbColorFromHex(0xFF9C1C).cgColor, UIColor.rgbColorFromHex(0xFFFFFF).cgColor]
        let gradient = CGGradient(colorsSpace: nil, colors: gradientColors as CFArray, locations: [1.0, 0.0])
        dataSet.fillAlpha = 1.0
        dataSet.fill = Fill(linearGradient: gradient!, angle: 90)
        lineChartView.data = LineChartData(dataSets: [dataSet])
    }
    
    func setupChartView() {
        lineChartView.chartDescription?.enabled = false
        lineChartView.legend.enabled = false
        lineChartView.setScaleEnabled(false)
        lineChartView.rightAxis.enabled = false
        
        let leftAxis = lineChartView.leftAxis
        leftAxis.axisMinimum = 50 //设置左侧Y轴最小值
        leftAxis.axisMaximum = 100
        leftAxis.granularity = 10
        leftAxis.enabled = false
        
        let xAxis = lineChartView.xAxis
        xAxis.axisMinimum = 0
        xAxis.axisMaximum = 30
        xAxis.granularity = 1 //间隔
        xAxis.enabled = false
    }
    
    
    
    override func awakeFromNib() {
        super.awakeFromNib()
        titleLabel.text = LocString("血氧")
        noDataImageView.isHidden = true
        // Initialization code
    }

}