// // IHGatewayDetailView.swift // Inhealth // // Created by weclouds on 2020/4/9. // Copyright © 2020 weclouds. All rights reserved. // import UIKit import JXSegmentedView protocol IHGatewayDetailViewDelegate : NSObjectProtocol { func emptyViewSearchDataSegment(_ index:Int,floorId:String,roomId:String,gatewayId:String) func deviceConnectGateway(_ deviceId:String,gatewayId:String) func deviceDisconteGateway(_ deviceId:String,gatewayId:String) func controlightOn(lampId:String,gatewayId:String,status:String) } class IHGatewayDetailView: UIView { weak var delegate:IHGatewayDetailViewDelegate? var associatedList:[GatewayLamp]?{ didSet{ segmentedView.reloadData() if let list = self.associatedList { self.associatedCountLabel.text = "\(list.count)" } } } var notAssociatedList:[GatewayLamp]?{ didSet{ segmentedView.reloadData() } } var gateway : GatewayData?{ didSet{ if let gateway = self.gateway { if let gatewayName = gateway.network_name,let gatewayId = gateway.gatewayId { self.gatewayNameLabel.text = gatewayName.isBlanck == false ? gatewayName : "网关" self.gatewayIdLabel.text = "网关 · " + gatewayId } } } } @IBOutlet weak var gatewayNameLabel: UILabel! @IBOutlet weak var gatewayIdLabel: UILabel! @IBOutlet weak var associatedCountLabel: UILabel! @IBOutlet weak var listContentView: UIView! let titles = ["关联", "未关联"] var currentIndex : Int? = 0 var totalItemWidth: CGFloat = 0 //总长度 var segmentedDataSource:JXSegmentedBaseDataSource? var segmentedView = JXSegmentedView() lazy var listContainerView: JXSegmentedListContainerView! = { return JXSegmentedListContainerView(dataSource: self) }() override func awakeFromNib() { super.awakeFromNib() cinfigSegmentdView() } override func layoutSubviews() { super.layoutSubviews() segmentedView.frame = CGRect(x: 20, y: 0, width: totalItemWidth, height: 30) listContainerView.frame = CGRect(x: 0, y: 40, width: KSCREENWIDTH, height: self.listContentView.bounds.size.height - 40) } } extension IHGatewayDetailView{ func cinfigSegmentdView() { totalItemWidth = UIScreen.main.bounds.size.width - 20*2 backgroundColor = .white let titleDataSource = JXSegmentedTitleDataSource() titleDataSource.itemContentWidth = totalItemWidth/CGFloat(titles.count) titleDataSource.titles = titles titleDataSource.titleNormalFont = UIFont(name: Alibaba_PuHuiTi_Regular, size: 13)! titleDataSource.titleSelectedFont = UIFont(name: Alibaba_PuHuiTi_Bold, size: 13)! titleDataSource.isTitleMaskEnabled = true titleDataSource.titleNormalColor = UIColor(hexString: "#657085")! titleDataSource.titleSelectedColor = UIColor(hexString: "#FFFFFF")! titleDataSource.itemSpacing = 0 // titleDataSource.itemContentWidth = 120 //titleDataSource.isItemSpacingAverageEnabled = false segmentedDataSource = titleDataSource segmentedView.dataSource = segmentedDataSource segmentedView.layer.masksToBounds = true segmentedView.layer.cornerRadius = 15 segmentedView.backgroundColor = UIColor(hexString: "#F6F8F7") segmentedView.delegate = self self.listContentView.addSubview(segmentedView) let indicator = JXSegmentedIndicatorBackgroundView() indicator.indicatorHeight = 25 indicator.backgroundWidthIncrement = -10 // #05CFAB indicator.indicatorColor = UIColor(hexString: "#573F95")! indicator.layer.shadowColor = UIColor(hexString: "#573F95")!.cgColor indicator.layer.shadowRadius = 3 indicator.layer.shadowOffset = CGSize.zero indicator.layer.shadowOpacity = 0.7 segmentedView.indicators = [indicator] segmentedView.listContainer = listContainerView self.listContentView.addSubview(listContainerView) } } extension IHGatewayDetailView:JXSegmentedViewDelegate{ func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) { // if let delegate = self.delegate { // delegate.equipmentlistViewdidSelectedItemAt(index) // } self.currentIndex = index if let dotDataSource = segmentedDataSource as? JXSegmentedDotDataSource { //先更新数据源的数据 dotDataSource.dotStates[index] = false //再调用reloadItem(at: index) segmentedView.reloadItem(at: index) } } } extension IHGatewayDetailView:JXSegmentedListContainerViewDataSource{ func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int { if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource { return titleDataSource.dataSource.count } return 0 } func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate { let view = IHAssociatedView() view.delegate = self view.currentIndex = index if index == 0 { if let associate = self.associatedList { view.associatedList = associate } }else{ if let notassciate = self.notAssociatedList { view.notAssociatedList = notassciate } } return view } } extension IHGatewayDetailView: IHAssociatedViewDelegate{ func emptyViewSearchDataSegment(_ index: Int) { guard let gateway = self.gateway else { return } if let delegate = self.delegate { delegate.emptyViewSearchDataSegment(index, floorId: gateway.floorId!, roomId: gateway.roomId!, gatewayId: gateway.gatewayId!) } } func deviceConnectGateway(_ deviceId: String) { guard let gateway = self.gateway else { return } if let delegate = self.delegate { delegate.deviceConnectGateway(deviceId, gatewayId: gateway.gatewayId!) } } func deviceDisconteGateway(_ deviceId: String) { guard let gateway = self.gateway else { return } if let delegate = self.delegate { delegate.deviceDisconteGateway(deviceId, gatewayId: gateway.gatewayId!) } } func controlightOn(_ isTurnON: Bool, lampId: String) { guard let gateway = self.gateway else { return } if let delegate = self.delegate { delegate.controlightOn(lampId: lampId, gatewayId: gateway.gatewayId!, status: isTurnON == false ? "0" : "1") } } }