SleepCell.swift 3.13 KB
//
//  SleepCell.swift
//  Twear
//
//  Created by yangbin on 2021/11/16.
//

import UIKit
import Charts

class SleepCell: UICollectionViewCell {
    @IBOutlet weak var lengthLabel: UILabel!
    @IBOutlet weak var dateLabel: UILabel!
    @IBOutlet weak var noDataImageView: UIImageView!
    @IBOutlet weak var barChartView: BarChartView!
    
    var sleep: SleepSummary = SleepSummary() {
        didSet {
            if sleep.startDate == nil {
                lengthLabel.text = " "
                dateLabel.text = LocString("暂无数据")
                noDataImageView.isHidden = false
                barChartView.isHidden = true
            } else {
                lengthLabel.toTimeType1(length: sleep.sleepLength, BoldFont(25), LightFont(11))
                dateLabel.text = sleep.endDate!.toString(.custom("yyyy/MM/dd"))
                updateChartView(sleep)
                noDataImageView.isHidden = true
                barChartView.isHidden = false
            }
        }
    }
    
    private func updateChartView(_ sleep: SleepSummary) {
        setupChartView()
        
        var deepEntries = [BarChartDataEntry]()
        for i in 0..<sleep.deep_pct {
            deepEntries.append(BarChartDataEntry(x: Double(i), y: 1))
        }
        var lightEntries = [BarChartDataEntry]()
        for i in 0..<sleep.light_pct {
            lightEntries.append(BarChartDataEntry(x: Double(i+sleep.deep_pct+3), y: 1))
        }
        var awakeEntries = [BarChartDataEntry]()
        for i in 0..<sleep.awake_pct {
            awakeEntries.append(BarChartDataEntry(x: Double(i+sleep.deep_pct+sleep.light_pct+6), y: 1))
        }
        
        let deepSet = BarChartDataSet(entries: deepEntries)
        deepSet.colors = [UIColor.rgbColorFromHex(0x843AFF)]
        deepSet.drawValuesEnabled = false
        deepSet.highlightEnabled = false
        let awakeSet = BarChartDataSet(entries: awakeEntries)
        awakeSet.colors = [UIColor.rgbColorFromHex(0xFF3AEA)]
        awakeSet.drawValuesEnabled = false
        awakeSet.highlightEnabled = false
        let lightSet = BarChartDataSet(entries: lightEntries)
        lightSet.colors = [UIColor.rgbColorFromHex(0xBC3AFF)]
        lightSet.drawValuesEnabled = false
        lightSet.highlightEnabled = false
        
        let chartData = BarChartData(dataSets: [awakeSet, lightSet, deepSet])
        chartData.barWidth = 1.5
        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 = 1
        leftAxis.enabled = false
        
        let xAxis = barChartView.xAxis
        xAxis.axisMinimum = 0
        xAxis.axisMaximum = 105
        xAxis.granularity = 1 //间隔
        xAxis.enabled = false
    }
    
    
    override func awakeFromNib() {
        super.awakeFromNib()
//        lineChartView.isUserInteractionEnabled = false
        // Initialization code
    }

}