You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.8 KiB
153 lines
5.8 KiB
![]()
2 years ago
|
//
|
||
|
// HealthViewController.swift
|
||
|
// Lookfit
|
||
|
//
|
||
|
// Created by lemo. on 2020/3/7.
|
||
|
// Copyright © 2020 Sheldon. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import UIKit
|
||
|
|
||
|
fileprivate enum Resuable {
|
||
|
static let stepCell = ReusableCell<HealthStepCell>()
|
||
|
static let sleeoHeartRateCell = ReusableCell<HealthSleeoHeartRateCell>()
|
||
|
static let temperatureCell = ReusableCell<TemperatureCell>()
|
||
|
}
|
||
|
|
||
|
class HealthViewController: TableViewController {
|
||
|
|
||
|
lazy var navigationBar: HealthNavigationBar = {
|
||
|
let navbar = HealthNavigationBar()
|
||
|
navbar.gradient(colors: [kHexColor(0xFFF0DE), kHexColor(0xFFFFFF)], locations: nil, autoLaoutFrame: CGRect(x: 0, y: 0, width: kScreenW, height: kScaleWidth(90)))
|
||
|
return navbar
|
||
|
}()
|
||
|
|
||
|
override func viewWillDisappear(_ animated: Bool) {
|
||
|
super.viewWillDisappear(animated)
|
||
|
}
|
||
|
|
||
|
override func viewDidLoad() {
|
||
|
super.viewDidLoad()
|
||
|
// 未设置用户信息
|
||
|
guard let _ = UserDefaultsManager.getUserInfo() else {
|
||
|
// 未设置用户信息
|
||
|
navigator.show(segue: .guideUserInfo, sender: self, transition: .modal)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override func makeUI() {
|
||
|
super.makeUI()
|
||
|
tableView.tableHeaderView = UIView()
|
||
|
tableView.register(Resuable.stepCell)
|
||
|
tableView.register(Resuable.sleeoHeartRateCell)
|
||
|
tableView.register(Resuable.temperatureCell)
|
||
|
tableView.rx.setDelegate(self).disposed(by: rx.disposeBag)
|
||
|
view.addSubview(navigationBar)
|
||
|
layout()
|
||
|
}
|
||
|
|
||
|
func layout() {
|
||
|
navigationBar.snp.makeConstraints { (make) in
|
||
|
make.top.equalToSuperview()
|
||
|
make.width.equalTo(kScreenW)
|
||
|
make.height.equalTo(kBatteryH + 70)
|
||
|
}
|
||
|
tableView.snp.makeConstraints { (make) in
|
||
|
make.top.equalTo(navigationBar.snp.bottom)
|
||
|
make.left.right.bottom.equalToSuperview()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
override func bindViewModel() {
|
||
|
guard let viewModel = viewModel as? HealthViewModel else { return }
|
||
|
let rxDataSource = RxTableViewSectionedReloadDataSource<HealthSection>(configureCell: { [weak self] (_ , tv, indexPath, model) -> UITableViewCell in
|
||
|
switch model {
|
||
|
case .stepItem(let viewModel):
|
||
|
let cell = tv.dequeue(Resuable.stepCell, for: indexPath)
|
||
|
cell.bind(model: viewModel)
|
||
|
return cell
|
||
|
case .sleepHeartItem(let viewModel):
|
||
|
let cell = tv.dequeue(Resuable.sleeoHeartRateCell, for: indexPath)
|
||
|
cell.bind(model: viewModel)
|
||
|
cell.sleepBlockView.bgImgBtn.rx.tap
|
||
|
.subscribe(onNext: { _ in
|
||
|
self?.navigator.show(segue: .sleep(viewModel: SleepViewModel()), sender: self)
|
||
|
})
|
||
|
.disposed(by: cell.cellDisposeBag)
|
||
|
cell.hearRateBlockView.bgImgBtn.rx.tap
|
||
|
.subscribe(onNext: { _ in
|
||
|
self?.navigator.show(segue: .heartRate(viewModel: HRViewModel()), sender: self)
|
||
|
})
|
||
|
.disposed(by: cell.cellDisposeBag)
|
||
|
return cell
|
||
|
case .temperatureIitem(let viewModel):
|
||
|
let cell = tv.dequeue(Resuable.temperatureCell, for: indexPath)
|
||
|
cell.bind(model: viewModel)
|
||
|
cell.temperatureBlockView.bgImgBtn.rx.tap
|
||
|
.subscribe(onNext: { _ in
|
||
|
self?.navigator.show(segue: .temperature(viewModel: TemperatureViewModel()), sender: self)
|
||
|
})
|
||
|
.disposed(by: cell.cellDisposeBag)
|
||
|
return cell
|
||
|
default: return UITableViewCell()
|
||
|
}
|
||
|
})
|
||
|
viewModel.userIcon
|
||
|
.bind(to: navigationBar.headImg.rx.image)
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
viewModel.userNickname
|
||
|
.bind(to: navigationBar.nicknameLabel.rx.text)
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
BluetoothService.shared.deviceConnectState
|
||
|
.bind(to: navigationBar.statusBtn.rx.isSelected)
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
BluetoothService.shared.powerState
|
||
|
.bind(to: navigationBar.powerBtn.rx.image())
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
viewModel.relay
|
||
|
.bind(to: tableView.rx.items(dataSource: rxDataSource))
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
// DFU设备升级
|
||
|
viewModel.dfuDeviceUpgrate
|
||
|
.subscribe(onNext: { [weak self] viewModel in
|
||
|
guard let `self` = self else { return }
|
||
|
if let currenVC = currentViewController(), currenVC.isKind(of: FirmwareUpdateViewController.self) {
|
||
|
return
|
||
|
}
|
||
|
currentTabbarController()?.selectedIndex = 0
|
||
|
self.navigator.show(segue: .firmwareUpdate(viewModel: viewModel), sender: self)
|
||
|
})
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
}
|
||
|
|
||
|
override func handleEvent() {
|
||
|
navigationBar.rx.tap
|
||
|
.subscribe(onNext: { [weak self] _ in
|
||
|
let viewModel = UserInfoViewModel()
|
||
|
self?.navigator.show(segue: .userInfo(viewModel: viewModel), sender: self)
|
||
|
})
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
tableView.rx.itemSelected
|
||
|
.subscribe(onNext: { [weak self] (indexPath) in
|
||
|
if indexPath.row == 0 {
|
||
|
let viewModel = StepViewModel()
|
||
|
self?.navigator.show(segue: .step(viewModel: viewModel), sender: self)
|
||
|
}
|
||
|
})
|
||
|
.disposed(by: rx.disposeBag)
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
extension HealthViewController: UITableViewDelegate {
|
||
|
|
||
|
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
||
|
if indexPath.row == 0 {
|
||
|
return kScaleWidth(215)
|
||
|
}
|
||
|
return kScaleWidth(224)
|
||
|
}
|
||
|
|
||
|
}
|