HealthDataVC.swift 5.74 KB
//
//  HealthDataVC.swift
//  Twear
//
//  Created by yangbin on 2022/1/1.
//

import UIKit
import SnapKit
import SwiftDate

class HealthDataVC: UIViewController {
    
    @IBOutlet weak var tableView: UITableView!
    
    private var dataArray: [[String]] = [["步数", "距离", "热量"], ["心率", "血压", "血氧", "睡眠", "体重"]]
    private let dataDic = ["步数": "my_data_step", "距离": "my_data_distance", "热量": "my_data_calorie", "心率": "my_data_hr", "血压": "my_data_bp", "血氧": "my_data_bo", "睡眠": "my_data_sleep", "体重": "my_data_weight"]
    
    let device = CurDevice
    let weight = UserInfo.weight
    var totalDistance = "--"
    var totalCalorie = "--"
    var totalSteps = "--"
    var bp = "--"
    var bo = "--"
    var hr = "--"
    var sleep = "--"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        title = LocString("我的数据")
        
        let shareButton = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 28))
        shareButton.setImage(UIImage(named: "share_btn"), for: .normal)
        shareButton.addTarget(self, action: #selector(share), for: .touchUpInside)
        navigationItem.rightBarButtonItem =  UIBarButtonItem(customView: shareButton)
        if device.platform == ._818 {
            dataArray[1] = ["心率", "血压", "睡眠", "体重"]
        }
        testDate()
        let stepArray = StepModel.getStepsByYear(Date())
        let user = UserInfo
        
        if stepArray.count > 0 {
            if user.distanceUnit == 0 {
                totalDistance = "\(String(format:"%.2f", stepArray.sum(\.distance)))\(LocString("公里"))"
            } else {
                totalDistance = "\(stepArray.sum(\.distance).mileString())\(LocString("英里"))"
            }
            totalCalorie = "\(String(format:"%.2f", stepArray.sum(\.calorie)))\(LocString("千卡"))"
            totalSteps = "\(stepArray.sum(\.number))\(LocString("步"))"
        }
        
        for value in dataArray[1] {
            switch value {
            case "心率":
                if let hrArray = RealmTools.queryObjects(HeartRateModel.self) as? [HeartRateModel], hrArray.count > 0 {
                    hr = "\(hrArray.average(\.value))\(LocString("次/分钟"))"
                }
            case "血氧":
                if let boArray = RealmTools.queryObjects(BloodOxygenModel.self) as? [BloodOxygenModel], boArray.count > 0 {
                    bo = "\(boArray.average(\.value))%"
                }
            case "血压":
                if let bpArray = RealmTools.queryObjects(BloodPressureModel.self) as? [BloodPressureModel], bpArray.count > 0 {
                    bp = "\(bpArray.average(\.sbp))/\(bpArray.average(\.dbp))mmHg"
                }
            case "睡眠":
                let sleepArray = SleepModel.getSleepByYear(Date())
                if sleepArray.count > 0 {
                    let length = sleepArray.average(\.sleepLength)
                    sleep = "\(String(format:"%02d",length/60))h\( String(format:"%02d",length%60))m"
                }
            default:
                break
            }
        }
        
        
        // Do any additional setup after loading the view.
    }
    
    func testDate() {
        if IsTest {

            if let i = dataArray[1].firstIndex(of: "血压") {
                dataArray[1].remove(at: i)
            }
            if let i = dataArray[1].firstIndex(of: "血氧") {
                dataArray[1].remove(at: i)
            }
            
        }
    }
    
    @objc func share() {
        let shareView = ShareView(view.captureImage)
        shareView.show()
    }
    
    
}

extension HealthDataVC: UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 30
    }
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = UIView()
        view.backgroundColor = .clear
        
        let label = UILabel()
        label.font = RegularFont(11)
        if section == 0 {
            label.text = LocString("活动统计")
        } else {
            label.text = LocString("健康状况")
        }
        view.addSubview(label)
        label.snp.makeConstraints { make in
            make.left.equalToSuperview().offset(12)
            make.top.equalToSuperview().offset(7)
        }
        return view
    }
    func numberOfSections(in tableView: UITableView) -> Int {
        return dataArray.count
    }
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataArray[section].count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "HealthDataCell", for: indexPath) as! HealthDataCell
        let text = dataArray[indexPath.section][indexPath.row]
        cell.titleLabel.text = LocString(text)
        cell.iconView.image = UIImage(named: dataDic[text]!)
        switch text {
        case "体重":
            cell.detailLabel.text = "\(weight)kg"
        case "距离":
            cell.detailLabel.text = totalDistance
        case "热量":
            cell.detailLabel.text = totalCalorie
        case "血氧":
            cell.detailLabel.text = bo
        case "血压":
            cell.detailLabel.text = bp
        case "心率":
            cell.detailLabel.text = hr
        case "睡眠":
            cell.detailLabel.text = sleep
        case "步数":
            cell.detailLabel.text = totalSteps
        default:
            break
        }
        return cell
    }
}