// // 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) 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, estimatedHeightForHeaderInSection section: Int) -> CGFloat { return 48 } func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { if section == 0 { return "活动统计" }else { return "健康状况" } } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 55 } 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" cell.setCorners(corners: [.bottomLeft, .bottomRight], radio: 10) break case "距离": cell.detailLabel.text = totalDistance break case "热量": cell.detailLabel.text = totalCalorie cell.setCorners(corners: [.bottomLeft, .bottomRight], radio: 10) break case "血氧": cell.detailLabel.text = bo break case "血压": cell.detailLabel.text = bp break case "心率": cell.detailLabel.text = hr cell.setCorners(corners: [.topLeft, .topRight], radio: 10) break case "睡眠": cell.detailLabel.text = sleep break case "步数": cell.detailLabel.text = totalSteps cell.setCorners(corners: [.topLeft, .topRight], radio: 10) break default: break } return cell } }