IHGatewayDetailView.swift 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. //
  2. // IHGatewayDetailView.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2020/4/9.
  6. // Copyright © 2020 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. import JXSegmentedView
  10. protocol IHGatewayDetailViewDelegate : NSObjectProtocol {
  11. func emptyViewSearchDataSegment(_ index:Int,floorId:String,roomId:String,gatewayId:String)
  12. func deviceConnectGateway(_ deviceId:String,gatewayId:String)
  13. func deviceDisconteGateway(_ deviceId:String,gatewayId:String)
  14. func controlightOn(lampId:String,gatewayId:String,status:String)
  15. }
  16. class IHGatewayDetailView: UIView {
  17. weak var delegate:IHGatewayDetailViewDelegate?
  18. var associatedList:[GatewayLamp]?{
  19. didSet{
  20. segmentedView.reloadData()
  21. if let list = self.associatedList {
  22. self.associatedCountLabel.text = "\(list.count)"
  23. }
  24. }
  25. }
  26. var notAssociatedList:[GatewayLamp]?{
  27. didSet{
  28. segmentedView.reloadData()
  29. }
  30. }
  31. var gateway : GatewayData?{
  32. didSet{
  33. if let gateway = self.gateway {
  34. if let gatewayName = gateway.network_name,let gatewayId = gateway.gatewayId {
  35. self.gatewayNameLabel.text = gatewayName.isBlanck == false ? gatewayName : "网关"
  36. self.gatewayIdLabel.text = "网关 · " + gatewayId
  37. }
  38. }
  39. }
  40. }
  41. @IBOutlet weak var gatewayNameLabel: UILabel!
  42. @IBOutlet weak var gatewayIdLabel: UILabel!
  43. @IBOutlet weak var associatedCountLabel: UILabel!
  44. @IBOutlet weak var listContentView: UIView!
  45. let titles = ["关联", "未关联"]
  46. var currentIndex : Int? = 0
  47. var totalItemWidth: CGFloat = 0 //总长度
  48. var segmentedDataSource:JXSegmentedBaseDataSource?
  49. var segmentedView = JXSegmentedView()
  50. lazy var listContainerView: JXSegmentedListContainerView! = {
  51. return JXSegmentedListContainerView(dataSource: self)
  52. }()
  53. override func awakeFromNib() {
  54. super.awakeFromNib()
  55. cinfigSegmentdView()
  56. }
  57. override func layoutSubviews() {
  58. super.layoutSubviews()
  59. segmentedView.frame = CGRect(x: 20, y: 0, width: totalItemWidth, height: 30)
  60. listContainerView.frame = CGRect(x: 0, y: 40, width: KSCREENWIDTH, height: self.listContentView.bounds.size.height - 40)
  61. }
  62. }
  63. extension IHGatewayDetailView{
  64. func cinfigSegmentdView() {
  65. totalItemWidth = UIScreen.main.bounds.size.width - 20*2
  66. backgroundColor = .white
  67. let titleDataSource = JXSegmentedTitleDataSource()
  68. titleDataSource.itemContentWidth = totalItemWidth/CGFloat(titles.count)
  69. titleDataSource.titles = titles
  70. titleDataSource.titleNormalFont = UIFont(name: Alibaba_PuHuiTi_Regular, size: 13)!
  71. titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)!
  72. titleDataSource.isTitleMaskEnabled = true
  73. titleDataSource.titleNormalColor = UIColor(hexString: "#657085")!
  74. titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")!
  75. titleDataSource.itemSpacing = 0
  76. // titleDataSource.itemContentWidth = 120
  77. //titleDataSource.isItemSpacingAverageEnabled = false
  78. segmentedDataSource = titleDataSource
  79. segmentedView.dataSource = segmentedDataSource
  80. segmentedView.layer.masksToBounds = true
  81. segmentedView.layer.cornerRadius = 15
  82. segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7")
  83. segmentedView.delegate = self
  84. self.listContentView.addSubview(segmentedView)
  85. let indicator = JXSegmentedIndicatorBackgroundView()
  86. indicator.indicatorHeight = 25
  87. indicator.backgroundWidthIncrement = -10
  88. // #05CFAB
  89. indicator.indicatorColor = UIColor(hexString: "#573F95")!
  90. indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor
  91. indicator.layer.shadowRadius = 3
  92. indicator.layer.shadowOffset = CGSize.zero
  93. indicator.layer.shadowOpacity = 0.7
  94. segmentedView.indicators = [indicator]
  95. segmentedView.listContainer = listContainerView
  96. self.listContentView.addSubview(listContainerView)
  97. }
  98. }
  99. extension IHGatewayDetailView:JXSegmentedViewDelegate{
  100. func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
  101. // if let delegate = self.delegate {
  102. // delegate.equipmentlistViewdidSelectedItemAt(index)
  103. // }
  104. self.currentIndex = index
  105. if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource {
  106. //先更新数据源的数据
  107. dotDataSource.dotStates[index] = false
  108. //再调用reloadItem(at: index)
  109. segmentedView.reloadItem(at: index)
  110. }
  111. }
  112. }
  113. extension IHGatewayDetailView:JXSegmentedListContainerViewDataSource{
  114. func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
  115. if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
  116. return titleDataSource.dataSource.count
  117. }
  118. return 0
  119. }
  120. func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
  121. let view = IHAssociatedView()
  122. view.delegate = self
  123. view.currentIndex = index
  124. if index == 0 {
  125. if let associate = self.associatedList {
  126. view.associatedList = associate
  127. }
  128. }else{
  129. if let notassciate = self.notAssociatedList {
  130. view.notAssociatedList = notassciate
  131. }
  132. }
  133. return view
  134. }
  135. }
  136. extension IHGatewayDetailView: IHAssociatedViewDelegate{
  137. func emptyViewSearchDataSegment(_ index: Int) {
  138. guard let gateway = self.gateway else { return }
  139. if let delegate = self.delegate {
  140. delegate.emptyViewSearchDataSegment(index, floorId: gateway.floorId!, roomId: gateway.roomId!, gatewayId: gateway.gatewayId!)
  141. }
  142. }
  143. func deviceConnectGateway(_ deviceId: String) {
  144. guard let gateway = self.gateway else { return }
  145. if let delegate = self.delegate {
  146. delegate.deviceConnectGateway(deviceId, gatewayId: gateway.gatewayId!)
  147. }
  148. }
  149. func deviceDisconteGateway(_ deviceId: String) {
  150. guard let gateway = self.gateway else { return }
  151. if let delegate = self.delegate {
  152. delegate.deviceDisconteGateway(deviceId, gatewayId: gateway.gatewayId!)
  153. }
  154. }
  155. func controlightOn(_ isTurnON: Bool, lampId: String) {
  156. guard let gateway = self.gateway else { return }
  157. if let delegate = self.delegate {
  158. delegate.controlightOn(lampId: lampId, gatewayId: gateway.gatewayId!, status: isTurnON == false ? "0" : "1")
  159. }
  160. }
  161. }