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.
152 lines
5.9 KiB
152 lines
5.9 KiB
// |
|
// HealthViewController.swift |
|
// FireBoltt |
|
// |
|
// Created by lemo. on 2020/3/7. |
|
// Copyright © 2020 Sheldon. All rights reserved. |
|
// |
|
|
|
import UIKit |
|
|
|
fileprivate enum Resuable { |
|
static let fbstepCell = ReusableCell<HealthStepCell>() |
|
static let fbsleeoHeartRateCell = ReusableCell<HealthSleeoHeartRateCell>() |
|
static let fbtemperatureCell = 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 _ = UserDefaultsManagerFrieBoltt.getUserInfo() else { |
|
// 未设置用户信息 |
|
navigator.show(segue: .guideUserInfo, sender: self, transition: .modal) |
|
return |
|
} |
|
} |
|
|
|
override func makeUI() { |
|
super.makeUI() |
|
tableView.tableHeaderView = UIView() |
|
tableView.register(Resuable.fbstepCell) |
|
tableView.register(Resuable.fbsleeoHeartRateCell) |
|
tableView.register(Resuable.fbtemperatureCell) |
|
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? HealthViewModels 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.fbstepCell, for: indexPath) |
|
cell.bind(model: viewModel) |
|
return cell |
|
case .sleepHeartItem(let viewModel): |
|
let cell = tv.dequeue(Resuable.fbsleeoHeartRateCell, for: indexPath) |
|
cell.bind(model: viewModel) |
|
cell.sleepBlockView.fb_bgImgBtn.rx.tap |
|
.subscribe(onNext: { _ in |
|
self?.navigator.show(segue: .sleep(viewModel: SleepViewModels()), sender: self) |
|
}) |
|
.disposed(by: cell.cellDisposeBag) |
|
cell.hearRateBlockView.fb_bgImgBtn.rx.tap |
|
.subscribe(onNext: { _ in |
|
self?.navigator.show(segue: .heartRate(viewModel: HRViewModels()), sender: self) |
|
}) |
|
.disposed(by: cell.cellDisposeBag) |
|
return cell |
|
case .temperatureIitem(let viewModel): |
|
let cell = tv.dequeue(Resuable.fbtemperatureCell, for: indexPath) |
|
cell.bind(model: viewModel) |
|
cell.temperatureBlockView.fb_bgImgBtn.rx.tap |
|
.subscribe(onNext: { _ in |
|
self?.navigator.show(segue: .temperature(viewModel: TemperatureViewModels()), sender: self) |
|
}) |
|
.disposed(by: cell.cellDisposeBag) |
|
return cell |
|
default: return UITableViewCell() |
|
} |
|
}) |
|
viewModel.userIcon |
|
.bind(to: navigationBar.fb_headImg.rx.image) |
|
.disposed(by: rx.disposeBag) |
|
viewModel.userNickname |
|
.bind(to: navigationBar.fb_nicknameLabel.rx.text) |
|
.disposed(by: rx.disposeBag) |
|
BluetoothService.shared.deviceConnectState |
|
.bind(to: navigationBar.fb_statusBtn.rx.isSelected) |
|
.disposed(by: rx.disposeBag) |
|
BluetoothService.shared.powerState |
|
.bind(to: navigationBar.fb_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: FirmwareUpdateViewControllers.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 = StepViewModels() |
|
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) |
|
} |
|
|
|
}
|
|
|