123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- //
- // IHNewRoomView.swift
- // Inhealth
- //
- // Created by weclouds on 2019/12/13.
- // Copyright © 2019 weclouds. All rights reserved.
- //
- import UIKit
- protocol IHNewRoomViewDelegate : NSObjectProtocol {
- func selectedPhoto()
- func addNewEquipmentInNewRoom()
- func selectedFloorInNewRoom()
- func selectedModeInNewRoom()
- func preserveInNewRoom(_ roomInfo:NewRoomInfo?,error:IHNewRoomViewEditError)
- func popController(with roomInfo:NewRoomInfo?,error:IHNewRoomViewEditError)
- }
- let kNotifactionIHNewRoomViewUploadImageFinished = "kNotifactionIHNewRoomViewUploadImageFinished"
- let kNotificationIHNewRoomViewGetRoomImage = "kNotificationIHNewRoomViewGetRoomImage"
- class IHNewRoomView: UIView {
- @IBOutlet weak var imageBox: UIImageView!
- @IBOutlet weak var uploadImage: UIImageView!
-
- weak var delegate : IHNewRoomViewDelegate?
-
- var isBeginEdit:Bool?{
- return judgeIsBeginEditContent()
- }
-
-
- var isEditFloor :Bool? = false
-
- var isPickImageFinished:Bool? = false
-
- var imagePath :String?
-
- var floorList:[RoomListData]?{
- didSet{
- if let floorList = self.floorList {
- floorNames = IHCentrlizedService.share.getFloorNameList(from: floorList)
- floorNameLabel.text = floorNames?.first
- if floorNames != nil || floorNames!.count > 0 {
- floorNameLabel.reset()
- let firstFloor = floorList.first
- floorId = firstFloor?.id
-
- }else{
- floorNameLabel.isEmpty("Please chose Floor")
- }
- }
-
- }
- }
-
- var roomInfo:NewRoomInfo?{
- didSet{
- if let info = self.roomInfo {
- self.fillRoomInfoToView(info)
- }else{
- self.clearRoomInfo()
- }
- }
- }
-
- var floorNames :[String]?
-
- var equipmentArr : [EquipmentInfo]?{
- didSet{
- self.tableView.reloadData()
- }
- }
-
- @IBOutlet weak var tableView: UITableView!
-
- @IBOutlet weak var floorBox: UIView!
-
- @IBOutlet weak var scenceBox: UIView!
-
- @IBOutlet weak var floorNameLabel: UILabel!
-
- @IBOutlet weak var roomNumbelTf: UITextField!
-
- @IBOutlet weak var scenceModeLabel: UILabel!
-
- @IBOutlet weak var snTestfiled: UITextField!
-
-
- var floorId :String?
- override func awakeFromNib() {
- super.awakeFromNib()
- createUI()
-
- NotificationCenter.default.addObserver(self, selector: #selector(notifyRoomIcon), name: NSNotification.Name(kNotificationIHNewRoomViewGetRoomImage), object: nil)
- NotificationCenter.default.addObserver(self, selector: #selector(notifyImagePath), name: NSNotification.Name(kNotifactionIHNewRoomViewUploadImageFinished), object: nil)
- }
-
- func fillRoomInfoToView(_ info:NewRoomInfo) {
- if let image = info.pickImage,let floor = info.floorName,let number = info.number ,let sn = info.sn,let equipments = info.deviceList{
- self.snTestfiled.text = sn
- self.roomNumbelTf.text = number
- self.floorNameLabel.text = floor
- self.imageBox.image = image
- self.equipmentArr = equipments
- }
-
- }
- func clearRoomInfo() {
- self.snTestfiled.text = ""
- self.roomNumbelTf.text = ""
- self.floorNameLabel.text = floorNames?.first
- self.imageBox.image = UIImage(named: "New room")
- self.equipmentArr = nil
- }
- func createUI() {
- self.tableView.dataSource = self
- self.tableView.delegate = self
- self.tableView.separatorStyle = .none
- self.tableView.register(UINib(nibName: "IHNewEquipment_nr_Cell", bundle: nil), forCellReuseIdentifier: "cell")
-
- floorBox.isUserInteractionEnabled = true
- scenceBox.isUserInteractionEnabled = true
- let floorTap = UITapGestureRecognizer(target: self, action: #selector(selectedFloor))
- floorBox.addGestureRecognizer(floorTap)
- let scenceTap = UITapGestureRecognizer(target: self, action: #selector(selectedMode))
- scenceBox.addGestureRecognizer(scenceTap)
-
-
- let tapImageV = UITapGestureRecognizer(target: self, action: #selector(tapRoomImage))
- let tapImageV2 = UITapGestureRecognizer(target: self, action: #selector(tapRoomImage))
- imageBox.addGestureRecognizer(tapImageV)
- uploadImage.addGestureRecognizer(tapImageV2)
-
- imageBox.contentMode = .scaleAspectFill
- }
- deinit {
- NotificationCenter.default.removeObserver(self)
- }
-
- @objc func notifyRoomIcon(_ notif:Notification) {
- let image = notif.object as! UIImage
- self.imageBox.image = image
-
- }
-
- @objc func notifyImagePath(_ notif:Notification) {
- let path = notif.object as! String
- isPickImageFinished = true
- self.imagePath = path
- }
-
- @objc func tapRoomImage(){
- if let delegate = self.delegate {
- delegate.selectedPhoto()
- }
- }
-
- @IBAction func addNewEquipmentAction(_ sender: Any) {
- if let delegate = self.delegate {
- delegate.addNewEquipmentInNewRoom()
- }
- }
-
- @IBAction func preserveActioon(_ sender: Any) {
- let data = getEditData()
-
- if let delegate = self.delegate {
- delegate.preserveInNewRoom(data.info, error: data.error)
- }
- }
-
- func shouldPop() {
-
- let data = getEditData()
-
- if let delegate = self.delegate {
- delegate.popController(with: data.info, error: data.error)
- //delegate.preserveInNewRoom(info, error: error)
- }
- }
-
- func getEditData() ->(info : NewRoomInfo,error: IHNewRoomViewEditError) {
- var info = NewRoomInfo()
- var error = IHNewRoomViewEditError.success
- if Intermediate.isSaveRoomInfo == "1" {
- error = .success
- info.deviceList = self.equipmentArr
- info.floorId = self.floorId
- info.floorName = self.floorNameLabel.text
- info.sn = snTestfiled.text
- info.image = imagePath
- info.number = self.roomNumbelTf.text
- info.pickImage = imageBox.image
- return (info,error)
- }
- //判断输入
- // && self.equipmentArr?.count != 0
- if isPickImageFinished == true
- && self.roomNumbelTf.text != ""
- && self.snTestfiled.text != ""{
- error = .success
- info.deviceList = self.equipmentArr
- info.floorId = self.floorId
- info.floorName = self.floorNameLabel.text
- info.sn = snTestfiled.text
- info.image = imagePath
- info.number = self.roomNumbelTf.text
- info.pickImage = imageBox.image
-
- }
- // if self.equipmentArr?.count == 0 {
- // error = .lackEquipment
- // }
- if self.snTestfiled.text == "" && self.roomNumbelTf.text == nil {
- error = .lackSN
- }
- if self.roomNumbelTf.text == ""
- || self.roomNumbelTf.text == nil || self.roomNumbelTf.text?.isBlanck == true {
- error = .lackRoomName
- }
-
- if isPickImageFinished == false{
- error = .lackImage
- }
-
- return (info,error)
-
- }
- }
- extension IHNewRoomView :UITableViewDelegate,UITableViewDataSource{
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return self.equipmentArr?.count ?? 0
- }
-
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! IHNewEquipment_nr_Cell
- cell.selectionStyle = .none
- let info = equipmentArr![indexPath.row]
- cell.deviceInfo = info
- cell.deleteCallback = { [unowned self] in
- //删除操作
- self.deleteEquipment(indexPath: indexPath)
- }
- return cell
- }
- func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
- return 70
- }
-
-
- }
- /// - Private Method
- extension IHNewRoomView{
- /// 判断是否开始编辑内容
- ///
- /// - Returns : true :开始编辑, false : 没有编辑
- func judgeIsBeginEditContent() -> Bool {
- var _isEditEquipment = false
- let _isEditFloor = self.isEditFloor
- var _isEditRoomName = false
- let isPickImage = isPickImageFinished
- var _isEditSN = false
- if self.equipmentArr!.count > 0 {
- _isEditEquipment = true
- }else{
- _isEditEquipment = false
- }
- if roomNumbelTf.text != "" {
- _isEditRoomName = true
- }else{
- _isEditRoomName = false
- }
- if snTestfiled.text != "" {
- _isEditSN = true
- }else{
- _isEditSN = false
- }
-
-
- //只要有一项开始编辑,就是已经开始编辑了
- if _isEditEquipment == true || _isEditFloor == true || _isEditRoomName == true || _isEditSN == true || isPickImage == true {
- return true
- }
-
- return false
- }
-
- func deleteEquipment(indexPath:IndexPath) {
- //删除数据
- self.equipmentArr?.remove(at: indexPath.row)
- }
-
- @objc func selectedFloor() {
- if self.floorNames == nil || self.floorNames?.count == 0 {
- g_showHUD("这酒店没有楼层")
- return
- }
- let titleArr = self.floorNames
- let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr?.first)
- pick?.confirmBlock = {(selectedIndex) in
- log.debug(" title = \(titleArr?[selectedIndex])")
- let floor = self.floorList?[selectedIndex]
- self.floorNameLabel.text = floor?.name
- if self.floorNames != nil || self.floorNames!.count > 0 {
- self.floorNameLabel.reset()
- let floor = self.floorList?[selectedIndex]
- self.floorId = floor?.id
- self.isEditFloor = true
- }else{
- self.floorNameLabel.isEmpty("Please chose Floor")
- }
-
- }
- pick?.show()
-
- if let delegate = self.delegate {
- delegate.selectedFloorInNewRoom()
- }
- }
-
- @objc func selectedMode() {
-
- let titleArr = ["Custom mode","Reading mode","Full-on mode","Sleep mode","Relax mode","Work mode"]
- let pick = THScrollChooseView(question: titleArr, withDefaultDesc: titleArr.first)
- pick?.confirmBlock = {(selectedIndex) in
- log.debug(" title = \(titleArr[selectedIndex])")
- self.scenceModeLabel.text = titleArr[selectedIndex]
- }
- pick?.show()
-
- if let delegate = self.delegate {
- delegate.selectedModeInNewRoom()
- }
- }
- }
|