//
|
// PavilionVC.swift
|
// XQMuse
|
//
|
// Created by 无故事王国 on 2024/8/12.
|
//
|
|
import UIKit
|
import JQTools
|
import RxSwift
|
import RxRelay
|
import CoreLocation
|
|
class PavilionViewModel:RefreshInnerModel<PavilionDetailModel>{
|
var location = BehaviorRelay<CLLocationCoordinate2D?>(value: nil)
|
var search = BehaviorRelay<String?>(value: nil)
|
|
override func api() -> (Observable<BaseResponse<BaseResponseList<PavilionDetailModel>>>)? {
|
return Services.getPavlilonPage(location: location.value, search: search.value, page: page)
|
}
|
}
|
|
class PavilionVC: BaseVC {
|
@IBOutlet weak var collectionView: UICollectionView!
|
|
private var viewModel = PavilionViewModel()
|
private var locationTool = JQ_LocationTool.instance()
|
|
override func viewDidLoad() {
|
super.viewDidLoad()
|
|
viewModel.configure(collectionView)
|
viewModel.beginRefresh()
|
|
locationTool.startLocation { location in
|
self.viewModel.location.accept(location.coordinate)
|
self.viewModel.beginRefresh()
|
} errorClouse: { error in
|
}
|
}
|
|
override func setUI() {
|
super.setUI()
|
view.backgroundColor = UIColor(hexString: "#f6f6f6")
|
collectionView.delegate = self
|
collectionView.dataSource = self
|
collectionView.backgroundColor = .clear
|
collectionView.showsVerticalScrollIndicator = false
|
collectionView.backgroundColor = .clear
|
collectionView.contentInset = UIEdgeInsets(top: 0, left: 28.5, bottom: 0, right: 28.5)
|
collectionView.register(UINib(nibName: "PavilionItemCell", bundle: nil), forCellWithReuseIdentifier: "_PavilionItemCell")
|
}
|
|
|
@IBAction func searchAction(_ sender: Any) {
|
let searchVC = PavilionSearchVC()
|
searchVC.viewModel = viewModel
|
push(vc: searchVC)
|
}
|
|
}
|
|
extension PavilionVC:UICollectionViewDelegate{
|
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
let model = viewModel.dataSource.value!.list[indexPath.row]
|
let detailVC = PavilionDetailVC(id: model.id)
|
push(vc: detailVC)
|
}
|
}
|
|
extension PavilionVC:UICollectionViewDataSource{
|
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
let model = viewModel.dataSource.value!.list[indexPath.row]
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_PavilionItemCell", for: indexPath) as! PavilionItemCell
|
cell.backgroundColor = .white
|
cell.jq_cornerRadius = 16
|
cell.setPavilionDetailModel(model)
|
return cell
|
}
|
|
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
return viewModel.dataSource.value?.list.count ?? 0
|
}
|
}
|
|
extension PavilionVC:UICollectionViewDelegateFlowLayout{
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
return 25.5
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
return 19
|
}
|
|
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
let w = (JQ_ScreenW - 28.5 * 2 - 19) / 2.0
|
let h = w * 1.2681
|
return CGSizeMake(w, h)
|
}
|
}
|
|
//extension PavilionVC:UITextFieldDelegate{
|
// func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
// textField.endEditing(true)
|
//
|
// return true
|
// }
|
//}
|